[Toc][Index]

VioRegister


Bindings:  C, MASM 

This call registers an alternate video subsystem within a session. 
 VioRegister    (ModuleName, EntryPoint, FunctionMask1, FunctionMask2) 
 
 ModuleName (PSZ) - input 
    Address of the ASCIIZ string containing the 1-8 character file name of 
    the subsystem.  The maximum length of the ASCIIZ string is 9 bytes 
    including the terminating byte of zero.  The module must be a dynamic 
    link library but the name supplied must not include the .DLL 
    extension. 
 EntryPoint (PSZ) - input 
    Address of the ASCIIZ name string containing the dynamic link entry 
    point name of the routine in the subsystem to receive control when any 
    of the registered functions is called.  The maximum length of the 
    ASCIIZ string is 33 bytes including the terminating byte of zero. 
 FunctionMask1 (ULONG) - input 
    A bit mask where each bit identifies a video function being 
    registered.  The bit definitions are shown below.  The first word 
    pushed onto the stack contains the high-order 16 bits of the function 
    mask, and the second word contains the low-order 
    16 bits. 

    
      BIT   REGISTERED FUNCTION         BIT   REGISTERED FUNCTION
     ------------------------------------------------------------------
      31    VioPrtScToggle              15    VioWrtCharStr
      30    VioEndPopUp                 14    VioWrtTTY
      29    VioPopUp                    13    VioWrtNCell
      28    VioSavRedrawUndo            12    VioWrtNAttr
      27    VioSavRedrawWait            11    VioWrtNChar
      26    VioScrUnLock                10    VioReadCellStr
      25    VioScrLock                  9     VioReadCharStr
      24    VioPrtSc                    8     VioShowBuf
      23    VioGetAnsi                  7     VioSetMode
      22    VioSetAnsi                  6     VioSetCurType
      21    VioScrollRt                 5     VioSetCurPos
      20    VioScrollLf                 4     VioGetPhysBuf
      19    VioScrollDn                 3     VioGetBuf
      18    VioScrollUp                 2     VioGetMode
      17    VioWrtCellStr               1     VioGetCurType
      16    VioWrtCharStrAtt            0     VioGetCurPos
    
    
 FunctionMask2 (ULONG) - input 
    A bit mask where each bit identifies a video function being 
    registered.  The bit mask has the format shown below. The first word 
    pushed onto the stack contains the high order 16 bits of the function 
    mask, and the second word contains the low order 16 bits. Unused bits 
    are reserved and must be set to zero. 
    Bit       Description 
    31-9      Reserved, set to zero 
    8         VioSetState 
    7         VioGetState 
    6         VioSetFont 
    5         VioGetCp 
    4         VioSetCp 
    3         VioGetConfig 
    2         VioGetFont 
    1         VioModeUndo 
    0         VioModeWait 
 rc (USHORT) - return 
    Return code descriptions are: 
    0         NO_ERROR 
    349       ERROR_VIO_INVALID_MASK 
    403       ERROR_VIO_INVALID_ASCIIZ 
    426       ERROR_VIO_REGISTER 
    430       ERROR_VIO_ILLEGAL_DURING_POPUP 
    465       ERROR_VIO_DETACHED 
    494       ERROR_VIO_EXTENDED_SG 
 
 Remarks 
 An alternate video subsystem must register which video calls it handles. 
 The default OS/2 video subsystem is the Base Video Subsystem. 
 When any of the registered functions are called, control is routed to 
 EntryPoint.  When this routine is entered, four additional values (5 
 words) are pushed onto the stack. 
 The first value is the index number (Word) of the routine being called. 
  The second value is a near pointer (Word).  The third value is the 
 caller's DS register (Word).  The fourth value is the return address 
 (DWord) to the VIO router. 
 For example, if VioSetCurPos were a registered function, the stack would 
 appear as if the following instruction sequence were executed if 
 VioSetCurPos were called and control routed to EntryPoint: 

  +-------------------------------------------------------+
  | PUSH     WORD     Row                                 |
  | PUSH     WORD     Column                              |
  | PUSH     WORD     VioHandle                           |
  | CALL     FAR      VioSetCurPos                        |
  | PUSH     WORD     Index                               |
  | CALL     NEAR     Entry point in Vio router           |
  | PUSH     WORD     Caller's DS                         |
  | CALL     FAR      Dynamic link entry point            |
  +-------------------------------------------------------+
 
 
 The index numbers that correspond to the registered functions are listed 
 below: 
 0  VioGetPhysBuf          22 VioSetAnsi 
 1  VioGetBuf              23 VioGetAnsi 
 2  VioShowBuf             24 VioPrtSc 
 3  VioGetCurPos           25 VioScrLock 
 4  VioGetCurType          26 VioScrUnLock 
 5  VioGetMode             27 VioSavRedrawWait 
 6  VioSetCurPos           28 VioSavRedrawUndo 
 7  VioSetCurType          29 VioPopUp 
 8  VioSetMode             30 VioEndPopUp 
 9  VioReadCharStr         31 VioPrtScToggle 
 10 VioReadCellStr         32 VioModeWait 
 11 VioWrtNChar            33 VioModeUndo 
 12 VioWrtNAttr            34 VioGetFont 
 13 VioWrtNCell            35 VioGetConfig 
 14 VioWrtCharStr          36 VioSetCp 
 15 VioWrtCharStrAtt       37 VioGetCp 
 16 VioWrtCellStr          38 VioSetFont 
 17 VioWrtTTY              39 VioGetState 
 18 VioScrollUp            40 VioSetState 
 19 VioScrollDn              
 20 VioScrollLf              
 21 VioScrollRt              
 
 When a registered function returns to the video router, the return code 
 is interpreted as follows: 
 Return code = 0 
           No error.  Do not invoke the corresponding Base Video Subsystem 
           routine.  Return to caller with Return code = 0. 
 Return code = -1 
           No error.  Invoke the corresponding Base Video Subsystem 
           routine. Return to caller with Return code = return code from 
           Base Video Subsystem. 
 Return code = error (not 0 or -1) 
           Do not invoke the corresponding Base Video Subsystem routine. 
           Return to caller with Return code = error. 
 
 When an application registers a replacement for VioPopUp within a 
 session, the registered routine is only invoked when that session is in 
 the foreground.  If VioPopUp is issued when that session is in the 
 background, the OS/2 default routine is invoked. 
 An alternate video subsystem should be designed so the routines 
 registered do not cause any hard errors when they are invoked. Otherwise, 
 a system lockout occurs.  Code and data segments of registered routines, 
 that might be loaded from diskette, must be preloaded. 
 All VIO functions within a session are serialized on a thread basis. 
  That is, when an alternate video subsystem receives control, it can 
 safely assume that it is not called again from the same session until  the 
 current call has completed. 

Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs