Reactos
1#include <wdm.h>
2
3#include <windef.h>
4#include <winerror.h>
5#include <wingdi.h>
6#include <winddi.h>
7
8#include <ddkmapi.h>
9
10/* Prototypes */
11VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer);
12VOID DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer);
13VOID DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer);
14VOID DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer);
15VOID DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
16VOID DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer);
17VOID DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
18VOID DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
19VOID DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer);
20VOID DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
21VOID DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
22VOID DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer);
23VOID DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer);
24VOID DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
25VOID DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
26VOID DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
27VOID DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
28VOID DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
29VOID DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer);
30VOID DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer);
31VOID DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer);
32VOID DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer);
33
34/* Internal driver table being use as looking up table for correct size of structs */
35DWORD tblCheckInBuffer [] =
36{
37 /* DD_DXAPI_GETVERSIONNUMBER */
38 0,
39 /* DD_DXAPI_CLOSEHANDLE */
40 sizeof(DDCLOSEHANDLE),
41 0, // DD_DXAPI_OPENDIRECTDRAW
42 0, // DD_DXAPI_OPENSURFACE
43 0, // DD_DXAPI_OPENVIDEOPORT
44 /* DD_DXAPI_GETKERNELCAPS */
45 sizeof(HANDLE),
46 /* DD_DXAPI_GET_VP_FIELD_NUMBER */
47 sizeof(DDGETFIELDNUMIN),
48 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
49 0, // DD_DXAPI_SET_VP_SKIP_FIELD
50 0, // DD_DXAPI_GET_SURFACE_STATE
51 0, // DD_DXAPI_SET_SURFACE_STATE
52 0, // DD_DXAPI_LOCK
53 /* DD_DXAPI_FLIP_OVERLAY */
54 sizeof(DDFLIPOVERLAY),
55 /* DD_DXAPI_FLIP_VP */
56 sizeof(DDFLIPVIDEOPORT),
57 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
58 sizeof(DDGETAUTOFLIPIN),
59 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
60 sizeof(DDGETAUTOFLIPIN),
61 /* DD_DXAPI_REGISTER_CALLBACK */
62 sizeof(DDREGISTERCALLBACK),
63 /* DD_DXAPI_UNREGISTER_CALLBACK */
64 sizeof(DDREGISTERCALLBACK),
65 /* DD_DXAPI_GET_POLARITY */
66 sizeof(DDGETPOLARITYIN),
67 /* DD_DXAPI_OPENVPCAPTUREDEVICE */
68 sizeof(DDOPENVPCAPTUREDEVICEIN),
69 /* DD_DXAPI_ADDVPCAPTUREBUFFER */
70 sizeof(DDADDVPCAPTUREBUFF),
71 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
72 sizeof(HANDLE)
73};
74
75DWORD tblCheckOutBuffer [] =
76{
77 /* DD_DXAPI_GETVERSIONNUMBER */
78 sizeof(DDGETVERSIONNUMBER),
79 /* DD_DXAPI_CLOSEHANDLE */
80 sizeof(DWORD),
81 0, // DD_DXAPI_OPENDIRECTDRAW
82 0, // DD_DXAPI_OPENSURFACE
83 0, // DD_DXAPI_OPENVIDEOPORT
84 /* DD_DXAPI_GETKERNELCAPS */
85 sizeof(DDGETKERNELCAPSOUT),
86 /* DD_DXAPI_GET_VP_FIELD_NUMBER */
87 sizeof(DDGETFIELDNUMOUT),
88 0, // DD_DXAPI_SET_VP_FIELD_NUMBER
89 0, // DD_DXAPI_SET_VP_SKIP_FIELD
90 0, // DD_DXAPI_GET_SURFACE_STATE
91 0, // DD_DXAPI_SET_SURFACE_STATE
92 0, // DD_DXAPI_LOCK
93 /* DD_DXAPI_FLIP_OVERLAY */
94 sizeof(DWORD),
95 /* DD_DXAPI_FLIP_VP */
96 sizeof(DWORD),
97 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
98 sizeof(DDGETAUTOFLIPOUT),
99 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
100 sizeof(DDGETAUTOFLIPOUT),
101 /* DD_DXAPI_REGISTER_CALLBACK */
102 sizeof(DWORD),
103 /* DD_DXAPI_UNREGISTER_CALLBACK */
104 sizeof(DWORD),
105 /* DD_DXAPI_GET_POLARITY */
106 sizeof(DDGETPOLARITYOUT),
107 /* DD_DXAPI_OPENVPCAPTUREDEVICE */
108 sizeof(DDOPENVPCAPTUREDEVICEOUT),
109 /* DD_DXAPI_ADDVPCAPTUREBUFFER */
110 sizeof(DWORD),
111 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
112 sizeof(DWORD)
113};
114
115/* Internal driver function */
116DRVFN gDxApiEntryPoint [] =
117{
118 {DD_DXAPI_GETVERSIONNUMBER - DD_FIRST_DXAPI, (PFN) DxGetVersionNumber},
119 {DD_DXAPI_CLOSEHANDLE - DD_FIRST_DXAPI, (PFN) DxCloseHandle},
120 {DD_DXAPI_OPENDIRECTDRAW - DD_FIRST_DXAPI, (PFN) DxOpenDirectDraw},
121 {DD_DXAPI_OPENSURFACE - DD_FIRST_DXAPI, (PFN) DxOpenSurface},
122 {DD_DXAPI_OPENVIDEOPORT - DD_FIRST_DXAPI, (PFN) DxOpenVideoPort},
123 {DD_DXAPI_GETKERNELCAPS - DD_FIRST_DXAPI, (PFN) DxGetKernelCaps},
124 {DD_DXAPI_GET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxGetFieldNumber},
125 {DD_DXAPI_SET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxSetFieldNumber},
126 {DD_DXAPI_SET_VP_SKIP_FIELD - DD_FIRST_DXAPI, (PFN) DxSetSkipPattern},
127 {DD_DXAPI_GET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxGetSurfaceState},
128 {DD_DXAPI_SET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxSetSurfaceState},
129 {DD_DXAPI_LOCK - DD_FIRST_DXAPI, (PFN) DxLock},
130 {DD_DXAPI_FLIP_OVERLAY - DD_FIRST_DXAPI, (PFN) DxFlipOverlay},
131 {DD_DXAPI_FLIP_VP - DD_FIRST_DXAPI, (PFN) DxFlipVideoPort},
132 {DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetCurrentAutoflip},
133 {DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetPreviousAutoflip},
134 {DD_DXAPI_REGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxRegisterEvent},
135 {DD_DXAPI_UNREGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxUnregisterEvent},
136 {DD_DXAPI_GET_POLARITY - DD_FIRST_DXAPI, (PFN) DxGetPolarity},
137 {DD_DXAPI_OPENVPCAPTUREDEVICE - DD_FIRST_DXAPI, (PFN) DxOpenVpCatureDevice},
138 {DD_DXAPI_ADDVPCAPTUREBUFFER - DD_FIRST_DXAPI, (PFN) DxAddVpCaptureBuffer},
139 {DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI, (PFN) DxFlushVpCaptureBuffs}
140};