home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v2.zip / DDKX86 / DBCSDD / H_DBCS / VXVIO.H < prev   
C/C++ Source or Header  |  1995-04-14  |  9KB  |  229 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT (C) Microsoft Corporation, 1989                                 */
  4. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  5. /*                                                                           */
  6. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  7. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  8. /*    drivers. You may use this code in accordance with the IBM License      */
  9. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  10. /*    Copyright statement may not be removed.                                */
  11. /*                                                                           */
  12. /*****************************************************************************/
  13. /*static char *SCCSID = "@(#)vxvio.h    6.00 92/07/08";*/
  14. /***    VVD.H
  15.  *
  16.  *      SCCSID = @(#)vxvio.h    6.00 92/07/08
  17.  *
  18.  *      MVDM Virtual Video Exported Definitions
  19.  *
  20.  *      For include file hierarchy, see MVDM.H
  21.  *
  22.  *      MODIFICATION HISTORY
  23.  *      07/08/92    JTP     Created.
  24.  */
  25.  
  26. #define VXVIO_NAME  "VXVIO$"            /* registered name of VXVIO */
  27.  
  28. /***LT+ Mode Data tables
  29.  */
  30. typedef struct vxmode_s {
  31.     USHORT vxm_cb;
  32.     UCHAR  vxm_fbType;
  33.     UCHAR  vxm_color;
  34.     USHORT vxm_col;
  35.     USHORT vxm_row;
  36.     USHORT vxm_hres;
  37.     USHORT vxm_vres;
  38.     UCHAR  vxm_FormatID;
  39.     UCHAR  vxm_attrib;
  40. } VXMODE;
  41.  
  42. typedef VXMODE FAR *PVXMODE;
  43.  
  44. /***EK+ VXVIO constants for system communication
  45.  */
  46.  
  47. #ifndef DSP2OLD                         /* if vxvio.sys,           */ //j-ea0610
  48. #define VXSYSREQ_WAITEVENT          1
  49. #define VXSYSREQ_GETCURSOR          2
  50. #define VXSYSREQ_SETCURSOR          3
  51. #define VXSYSREQ_COPYLVB            4
  52. #define VXSYSREQ_WRITESTR           5
  53. #define VXSYSREQ_SAVESCREEN         6
  54. #define VXSYSREQ_RESTORESCREEN      7
  55. #define VXSYSREQ_SETEVENTFILTER     8
  56.  
  57. #define VXSYSREQ_MAX                8
  58. #else                                                                 //j-ea1210
  59. #define VXSYSREQ_WAITEVENT          1   + VVDSYSREQ_MAX
  60. #define VXSYSREQ_GETCURSOR          6   + VVDSYSREQ_MAX
  61. #define VXSYSREQ_SETCURSOR          3   + VVDSYSREQ_MAX
  62. #define VXSYSREQ_COPYLVB            4   + VVDSYSREQ_MAX
  63. #define VXSYSREQ_WRITESTR           2   + VVDSYSREQ_MAX
  64. #define VXSYSREQ_SAVESCREEN         5   + VVDSYSREQ_MAX
  65. #define VXSYSREQ_RESTORESCREEN      8   + VVDSYSREQ_MAX
  66. #define VXSYSREQ_SETEVENTFILTER     7   + VVDSYSREQ_MAX
  67.  
  68. #define VXSYSREQ_MAX                8   + VVDSYSREQ_MAX
  69.  
  70. //#define VVDSYSREQ_WAITSGEVENT   18
  71. //#define VVDSYSREQ_WRITESTR      19
  72. //#define VVDSYSREQ_SETCURSOR     20
  73. //#define VVDSYSREQ_COPYLVBX      21
  74. //#define VVDSYSREQ_SAVESCREEN    22
  75. //#define VVDSYSREQ_GETCURSOR     23
  76. //#define VVDSYSREQ_SETEVENTFILTER 24
  77. //#define VVDSYSREQ_RESTORESCREEN     25
  78. #endif                                                                //j-ea1210
  79.  
  80. /* VX event IDs for VXSYSREQ_WAITEVENT
  81.  */
  82.  
  83. #define VXEVENT_NONE                0    /* no events                    */
  84. #define VXEVENT_MODE                1    /* change in VDM's mode         */
  85. #define VXEVENT_LVB                 2    /* change in VDM's LVB          */
  86. #define VXEVENT_CURSOR              3    /* cursor position/type change  */
  87. #define VXEVENT_REDRAW              4    /* redraw request from vvideo   */
  88. #define VXEVENT_HIDE                5    /* change in foreground session */
  89. #define VXEVENT_FOREGROUND          6    /* change in foreground session */
  90. #define VXEVENT_BACKGROUND          7    /* change in foreground session */
  91. #define VXEVENT_STRING              8    /* string output                */
  92.  
  93. #define VXEVENT_MAX                 8
  94.  
  95. #define VXEVENTMASK_MODE            0x00000001  /* change in VDM's mode         */
  96. #define VXEVENTMASK_LVB             0x00000002  /* change in VDM's LVB          */
  97. #define VXEVENTMASK_CURSOR          0x00000004  /* cursor position/type change  */
  98. #define VXEVENTMASK_REDRAW          0x00000008  /* redraw request from vvideo   */
  99. #define VXEVENTMASK_HIDE            0x00000010  /* redraw request from vvideo   */
  100. #define VXEVENTMASK_FOREGROUND      0x00000020  /* change in foreground session */
  101. #define VXEVENTMASK_BACKGROUND      0x00000040  /* change in foreground session */
  102. #define VXEVENTMASK_STRING          0x00000080  /* string output                */
  103. #define VXEVENTMASK_ANY             0xffffffff
  104.  
  105. #define XEVENT_FLUSH                0x0002      /* flush event immediately           */
  106. #define XEVENT_ASYNC                0x0008      /* asynchronous event                */
  107. #define XEVENT_FORCE                0x0010      /* force to add even if the event is masked */
  108. #define XEVENT_OWNER                0x1000      /* caller owns EventUpdate semaphore */
  109.  
  110. typedef struct vxe_s {
  111.     LONG   vxe_iEvent;          /* one of the VVDEVENT_* constants       */
  112.     ULONG  vxe_sgID;            /* screen group ID of VDM --- Input !!   */
  113.     ULONG  vxe_nData;           /* # of entries of information returned  */
  114.     ULONG  vxe_iEventMask;      /* event mask                            */
  115. } VXEVENT;
  116.  
  117. typedef VXEVENT FAR *PVXEVENT;
  118.  
  119. /*** VXVIO exported function prototypes
  120.  */
  121.  
  122.  /* vvc (input for SETCURSOR and output for WaitEvent request) */
  123. typedef struct vxc_s {
  124.     ULONG  vxc_row;             /* row (y position) of VDM's cursor            */
  125.     ULONG  vxc_col;             /* column (x position) of VDM's cursor         */
  126.     ULONG  vxc_ulScanStart;     /* starting scan-line for VDM's cursor         */
  127.     ULONG  vxc_ulScanEnd;       /* ending scan-line for VDM's cursor           */
  128.     ULONG  vxc_attribute;       /* cursor color( hide )/blink etc.             */
  129.     ULONG  vxc_frequest;        /* indicate request type. posion, type or both.*/
  130. } VXCURSOR;
  131.  
  132. typedef VXCURSOR FAR *PVXCURSOR;
  133.  
  134. /* bit definition for vxc_attribute */
  135.  
  136. #define CURS_MASKBLINK              0x0300
  137. #define CURS_BLINKOFF               0x0000
  138. #define CURS_BLINKLOW               0x0100
  139. #define CURS_BLINKMED               0x0200
  140. #define CURS_BLINKHI                0x0300
  141. #define CURS_MASKCOLOR              0x00f0   /* CURS_COLOR is always 0 for output parmeter */
  142. #define CURS_HIDDEN                 0x0001
  143.  
  144. /* definition for vxc_frequest */
  145.  
  146. #define VXC_SETPOSITION             0x00000001
  147. #define VXC_SETCTYPE                0x00000002
  148.  
  149. typedef struct vxws_s {         /* vvws (write string event) */
  150.     ULONG  vxws_row;            /*start row position        */
  151.     ULONG  vxws_col;            /*start column position     */
  152.     ULONG  vxws_depth;          /*write depth               */
  153.     ULONG  vxws_psinfo;         /*indicate presence of PS   */
  154. } VXWSTR;
  155.  
  156. typedef VXWSTR FAR *PVXWSTR;
  157.  
  158. typedef struct vxs_s {          /* vvs (output for SCROLL event) */
  159.     RECTL  vxs_rcl;             /* rectangle being scrolled */
  160.     LONG   vxs_fill;            /* fill value */
  161.     LONG   vxs_nRows;           /* # rows (negative means reverse scroll) */
  162.     LONG   vxs_nCols;           /* # columns (0,0 means rectangle blankfilled) */
  163. } VXSCROLL;
  164.  
  165. typedef VXSCROLL FAR *PVXSCROLL;
  166.  
  167. typedef struct vxa_s {          /* vva (output for STRING event) */
  168.     ULONG  vxa_row;             /* beginning row of string */
  169.     ULONG  vxa_col;             /* beginning column of string */
  170.     ULONG  vxa_nChars;          /* # characters in string */
  171. } VXSTRING;
  172.  
  173. typedef VXSTRING FAR *PVXSTRING;
  174.  
  175. #define FORMATID_EPOCHCOLOR         0x41
  176. #define FORMATID_EPOCHMONO          0x81
  177. #define FORMATID_MCKCOLOR           0x20
  178. #define FORMATID_COMMON             0x70
  179.  
  180. typedef RECTL  VXLVB;
  181. typedef VXLVB  FAR *PVXLVB;
  182.  
  183. /*** VXVIO - VVD entry table
  184.  */
  185.  
  186. typedef LONG (PRIVENTRY *PVVDENTRY)(HVDM, ULONG, PVOID, ULONG, PVOID);
  187. typedef VOID (PRIVENTRY *PXVIOENTRY)();
  188.  
  189. typedef struct vxex_s {             /* vxex (VXVIO service entries) */
  190.     PXVIOENTRY  vxex_SetVVDType;
  191.     PXVIOENTRY  vxex_AddEvent;
  192.     PXVIOENTRY  vxex_FlushEvent;
  193.     PXVIOENTRY  vxex_SetStatus;
  194. } VXENTRYSX;
  195.  
  196. typedef VXENTRYSX FAR *PVXENTRYSX;
  197.  
  198. typedef struct vxev_s {             /* vxev (VVD service entries) */
  199.     PVVDENTRY   vxev_GetCursor;
  200.     PVVDENTRY   vxev_SetCursor;
  201.     PVVDENTRY   vxev_CopyLVB;
  202.     PVVDENTRY   vxev_WriteString;
  203.     PVVDENTRY   vxev_SaveScreen;
  204.     PVVDENTRY   vxev_RestoreScreen;
  205. } VXENTRYSV;
  206.  
  207. typedef VXENTRYSV FAR *PVXENTRYSV;
  208.  
  209. #define XVIO_RESET_FLAG             0
  210. #define XVIO_SET_FLAG               1
  211.  
  212. #define XVIO_STATUS_MODECHANGING    0
  213. #define XVIO_STATUS_XVIOUPDATING    1
  214. #define XVIO_STATUS_STATEINIT       2
  215.  
  216. /***EK+ VXVIO constants for inter-VDD communication
  217.  */
  218.  
  219. #define VXDEVREQ_REGISTERVVD    1   /* register VVD into VXVIO */
  220.  
  221. #define VXDEVREQ_MAX            1
  222.  
  223. typedef struct vxr_s {
  224.     ULONG       vxr_VVDID;
  225.     VXENTRYSX   vxr_XVIOEntry;
  226. } VXREGISTER;
  227.  
  228. typedef VXREGISTER FAR *PVXREGISTER;
  229.