2 /* DDK/NDK/SDK Headers */
4 #include <ddk/ntddmou.h>
13 #define NT_BUILD_ENVIRONMENT
19 #include <ddk/ddkmapi.h>
22 VOID
DxGetVersionNumber(PVOID lpvInBuffer
, LPDDGETVERSIONNUMBER lpvOutBuffer
);
23 VOID
DxCloseHandle(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
24 VOID
DxOpenDirectDraw(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
25 VOID
DxOpenSurface(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
26 VOID
DxOpenVideoPort(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
27 VOID
DxGetKernelCaps(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
28 VOID
DxGetFieldNumber(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
29 VOID
DxSetFieldNumber(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
30 VOID
DxSetSkipPattern(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
31 VOID
DxGetSurfaceState(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
32 VOID
DxSetSurfaceState(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
33 VOID
DxLock(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
34 VOID
DxFlipOverlay(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
35 VOID
DxFlipVideoPort(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
36 VOID
DxGetCurrentAutoflip(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
37 VOID
DxGetPreviousAutoflip(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
38 VOID
DxRegisterEvent(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
39 VOID
DxUnregisterEvent(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
40 VOID
DxGetPolarity(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
41 VOID
DxOpenVpCatureDevice(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
42 VOID
DxAddVpCaptureBuffer(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
43 VOID
DxFlushVpCaptureBuffs(PVOID lpvInBuffer
, PVOID lpvOutBuffer
);
45 /* Internal driver table being use as looking up table for correct size of structs */
46 DWORD tblCheckInBuffer
[] =
48 /* DD_DXAPI_GETVERSIONNUMBER */
50 /* DD_DXAPI_CLOSEHANDLE */
51 sizeof(DDCLOSEHANDLE
),
52 0, // DD_DXAPI_OPENDIRECTDRAW
53 0, // DD_DXAPI_OPENSURFACE
54 0, // DD_DXAPI_OPENVIDEOPORT
55 /* DD_DXAPI_GETKERNELCAPS */
57 /* DD_DXAPI_GET_VP_FIELD_NUMBER */
58 sizeof(DDGETFIELDNUMIN
),
59 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
60 0, // DD_DXAPI_SET_VP_SKIP_FIELD
61 0, // DD_DXAPI_GET_SURFACE_STATE
62 0, // DD_DXAPI_SET_SURFACE_STATE
64 /* DD_DXAPI_FLIP_OVERLAY */
65 sizeof(DDFLIPOVERLAY
),
66 /* DD_DXAPI_FLIP_VP */
67 sizeof(DDFLIPVIDEOPORT
),
68 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
69 sizeof(DDGETAUTOFLIPIN
),
70 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
71 sizeof(DDGETAUTOFLIPIN
),
72 /* DD_DXAPI_REGISTER_CALLBACK */
73 sizeof(DDREGISTERCALLBACK
),
74 /* DD_DXAPI_UNREGISTER_CALLBACK */
75 sizeof(DDREGISTERCALLBACK
),
76 /* DD_DXAPI_GET_POLARITY */
77 sizeof(DDGETPOLARITYIN
),
78 /* DD_DXAPI_OPENVPCAPTUREDEVICE */
79 sizeof(DDOPENVPCAPTUREDEVICEIN
),
80 /* DD_DXAPI_ADDVPCAPTUREBUFFER */
81 sizeof(DDADDVPCAPTUREBUFF
),
82 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
86 DWORD tblCheckOutBuffer
[] =
88 /* DD_DXAPI_GETVERSIONNUMBER */
89 sizeof(DDGETVERSIONNUMBER
),
90 /* DD_DXAPI_CLOSEHANDLE */
92 0, // DD_DXAPI_OPENDIRECTDRAW
93 0, // DD_DXAPI_OPENSURFACE
94 0, // DD_DXAPI_OPENVIDEOPORT
95 /* DD_DXAPI_GETKERNELCAPS */
96 sizeof(DDGETKERNELCAPSOUT
),
97 /* DD_DXAPI_GET_VP_FIELD_NUMBER */
98 sizeof(DDGETFIELDNUMOUT
),
99 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
100 0, // DD_DXAPI_SET_VP_SKIP_FIELD
101 0, // DD_DXAPI_GET_SURFACE_STATE
102 0, // DD_DXAPI_SET_SURFACE_STATE
104 /* DD_DXAPI_FLIP_OVERLAY */
106 /* DD_DXAPI_FLIP_VP */
108 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
109 sizeof(DDGETAUTOFLIPOUT
),
110 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
111 sizeof(DDGETAUTOFLIPOUT
),
112 /* DD_DXAPI_REGISTER_CALLBACK */
114 /* DD_DXAPI_UNREGISTER_CALLBACK */
116 /* DD_DXAPI_GET_POLARITY */
117 sizeof(DDGETPOLARITYOUT
),
118 /* DD_DXAPI_OPENVPCAPTUREDEVICE */
119 sizeof(DDOPENVPCAPTUREDEVICEOUT
),
120 /* DD_DXAPI_ADDVPCAPTUREBUFFER */
122 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
127 /* Internal driver function */
128 DRVFN gDxApiEntryPoint
[] =
130 {DD_DXAPI_GETVERSIONNUMBER
- DD_FIRST_DXAPI
, (PFN
) DxGetVersionNumber
},
131 {DD_DXAPI_CLOSEHANDLE
- DD_FIRST_DXAPI
, (PFN
) DxCloseHandle
},
132 {DD_DXAPI_OPENDIRECTDRAW
- DD_FIRST_DXAPI
, (PFN
) DxOpenDirectDraw
},
133 {DD_DXAPI_OPENSURFACE
- DD_FIRST_DXAPI
, (PFN
) DxOpenSurface
},
134 {DD_DXAPI_OPENVIDEOPORT
- DD_FIRST_DXAPI
, (PFN
) DxOpenVideoPort
},
135 {DD_DXAPI_GETKERNELCAPS
- DD_FIRST_DXAPI
, (PFN
) DxGetKernelCaps
},
136 {DD_DXAPI_GET_VP_FIELD_NUMBER
- DD_FIRST_DXAPI
, (PFN
) DxGetFieldNumber
},
137 {DD_DXAPI_SET_VP_FIELD_NUMBER
- DD_FIRST_DXAPI
, (PFN
) DxSetFieldNumber
},
138 {DD_DXAPI_SET_VP_SKIP_FIELD
- DD_FIRST_DXAPI
, (PFN
) DxSetSkipPattern
},
139 {DD_DXAPI_GET_SURFACE_STATE
- DD_FIRST_DXAPI
, (PFN
) DxGetSurfaceState
},
140 {DD_DXAPI_SET_SURFACE_STATE
- DD_FIRST_DXAPI
, (PFN
) DxSetSurfaceState
},
141 {DD_DXAPI_LOCK
- DD_FIRST_DXAPI
, (PFN
) DxLock
},
142 {DD_DXAPI_FLIP_OVERLAY
- DD_FIRST_DXAPI
, (PFN
) DxFlipOverlay
},
143 {DD_DXAPI_FLIP_VP
- DD_FIRST_DXAPI
, (PFN
) DxFlipVideoPort
},
144 {DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE
- DD_FIRST_DXAPI
, (PFN
) DxGetCurrentAutoflip
},
145 {DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE
- DD_FIRST_DXAPI
, (PFN
) DxGetPreviousAutoflip
},
146 {DD_DXAPI_REGISTER_CALLBACK
- DD_FIRST_DXAPI
, (PFN
) DxRegisterEvent
},
147 {DD_DXAPI_UNREGISTER_CALLBACK
- DD_FIRST_DXAPI
, (PFN
) DxUnregisterEvent
},
148 {DD_DXAPI_GET_POLARITY
- DD_FIRST_DXAPI
, (PFN
) DxGetPolarity
},
149 {DD_DXAPI_OPENVPCAPTUREDEVICE
- DD_FIRST_DXAPI
, (PFN
) DxOpenVpCatureDevice
},
150 {DD_DXAPI_ADDVPCAPTUREBUFFER
- DD_FIRST_DXAPI
, (PFN
) DxAddVpCaptureBuffer
},
151 {DD_DXAPI_FLUSHVPCAPTUREBUFFERS
- DD_FIRST_DXAPI
, (PFN
) DxFlushVpCaptureBuffs
}