1
2 /*
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * PURPOSE: Native driver for dxg implementation
6 * FILE: win32ss/reactx/dxapi/main.c
7 * PROGRAMER: Magnus olsen (magnus@greatlord.com)
8 * REVISION HISTORY:
9 * 15/10-2007 Magnus Olsen
10 */
11
12
13 #include "dxapi_driver.h"
14
15 #define NDEBU /* debug prints are enabled, add a G at the end to disable it ;-) */
16 #include <debug.h>
17
18 NTSTATUS NTAPI
DriverEntry(IN PVOID Context1,IN PVOID Context2)19 DriverEntry(IN PVOID Context1,
20 IN PVOID Context2)
21 {
22 /*
23 * NOTE this driver will never be load, it only contain export list
24 * to win32k eng functions
25 */
26 return STATUS_SUCCESS;
27 }
28
29 /*++
30 * @name DxApiGetVersion
31 * @implemented
32 *
33 * The function DxApiGetVersion return the dsound version, and it always return 4.02
34 *
35 * @return
36 * Always return 4.02
37 *
38 * @remarks.
39 * none
40 *
41 *--*/
42 ULONG
43 NTAPI
DxApiGetVersion(VOID)44 DxApiGetVersion(VOID)
45 {
46 /* MSDN say this always return Direct Sound version 4.02 */
47 return 0x402;
48 }
49
50
51
52 /*++
53 * @name DxApi
54 * @implemented
55 *
56 * The function DxApi calls to diffent functions, follow functions
57 * are supported
58 * DxGetVersionNumber, DxCloseHandle, DxOpenDirectDraw, DxOpenSurface,
59 * DxOpenVideoPort, DxGetKernelCaps, DxGetFieldNumber, DxSetFieldNumber,
60 * DxSetSkipPattern, DxGetSurfaceState, DxSetSurfaceState, DxLock,
61 * DxFlipOverlay, DxFlipVideoPort, DxGetCurrentAutoflip, DxGetPreviousAutoflip,
62 * DxRegisterEvent, DxUnregisterEvent, DxGetPolarity, DxOpenVpCatureDevice,
63 * DxAddVpCaptureBuffer, DxFlushVpCaptureBuffs
64 *
65 * See ddkmapi.h as well
66
67 *
68 * @param ULONG dwFunctionNum
69 * The function id we want call on in the dxapi.sys see ddkmapi.h for the id
70 *
71 * @param PVOID lpvInBuffer
72 * Our input buffer to the functions we call to, This param can be NULL
73 *
74 * @param ULONG cbInBuffer
75 * Our size in bytes of the input buffer, rember wrong size will result in the function
76 * does not being call.
77 *
78 * @param PVOID lpvOutBuffer
79 * Our Output buffer, there the function fill in the info, this param can not
80 * be null. if it null the functions we trying call on will not be call
81 *
82 * @param ULONG cbOutBuffer
83 * Our size in bytes of the output buffer, rember wrong size will result in the function
84 * does not being call.
85 *
86 * @return
87 * Return Always 0.
88 *
89 * @remarks.
90 * before call to any of this functions, do not forget set lpvOutBuffer->ddRVal = DDERR_GEN*,
91 * if that member exists in the outbuffer ;
92 *
93 *--*/
94
95 DWORD
96 NTAPI
DxApi(IN DWORD dwFunctionNum,IN LPVOID lpvInBuffer,IN DWORD cbInBuffer,OUT LPVOID lpvOutBuffer,OUT DWORD cbOutBuffer)97 DxApi(IN DWORD dwFunctionNum,
98 IN LPVOID lpvInBuffer,
99 IN DWORD cbInBuffer,
100 OUT LPVOID lpvOutBuffer,
101 OUT DWORD cbOutBuffer)
102 {
103
104 dwFunctionNum -= DD_FIRST_DXAPI;
105
106 if ((lpvOutBuffer == NULL) ||
107 /*(dwFunctionNum < (DD_FIRST_DXAPI - DD_FIRST_DXAPI)) ||*/
108 (dwFunctionNum > (DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI)) ||
109 (gDxApiEntryPoint[dwFunctionNum].pfn == NULL) ||
110 (cbInBuffer != tblCheckInBuffer[dwFunctionNum]) ||
111 (cbOutBuffer != tblCheckOutBuffer[dwFunctionNum]))
112
113 {
114 return 0;
115 }
116
117 gDxApiEntryPoint[dwFunctionNum].pfn(lpvInBuffer, lpvOutBuffer);
118 return 0;
119 }
120
121 VOID
122 NTAPI
DxApiInitialize(PVOID p1,PVOID p2,PVOID p3,PVOID p4,PVOID p5,PVOID p6,PVOID p7,PVOID p8)123 DxApiInitialize (
124 PVOID p1,
125 PVOID p2,
126 PVOID p3,
127 PVOID p4,
128 PVOID p5,
129 PVOID p6,
130 PVOID p7,
131 PVOID p8)
132 {
133 UNIMPLEMENTED;
134 }
135
136 VOID
137 NTAPI
DxAutoflipUpdate(PVOID p1,PVOID p2,PVOID p3,PVOID p4,PVOID p5)138 DxAutoflipUpdate (
139 PVOID p1,
140 PVOID p2,
141 PVOID p3,
142 PVOID p4,
143 PVOID p5)
144 {
145 UNIMPLEMENTED;
146 }
147
148 VOID
149 NTAPI
DxEnableIRQ(PVOID p1,PVOID p2)150 DxEnableIRQ (
151 PVOID p1,
152 PVOID p2)
153 {
154 UNIMPLEMENTED;
155 }
156
157 VOID
158 NTAPI
DxLoseObject(PVOID p1,PVOID p2)159 DxLoseObject (
160 PVOID p1,
161 PVOID p2)
162 {
163 UNIMPLEMENTED;
164 }
165
166 VOID
167 NTAPI
DxUpdateCapture(PVOID p1,PVOID p2,PVOID p3)168 DxUpdateCapture (
169 PVOID p1,
170 PVOID p2,
171 PVOID p3)
172 {
173 UNIMPLEMENTED;
174 }
175
176
177 /*++
178 * @name DxGetVersionNumber
179 * @implemented
180 *
181 * The function DxGetVersionNumber return dxapi interface version, that is 1.0
182 *
183 * @return
184 * Always return 1.0
185 *
186 * @remarks.
187 * none
188 *
189 *--*/
190 VOID
DxGetVersionNumber(PVOID lpvInBuffer,LPDDGETVERSIONNUMBER lpvOutBuffer)191 DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer)
192 {
193 lpvOutBuffer->ddRVal = DD_OK;
194 lpvOutBuffer->dwMajorVersion = 1;
195 lpvOutBuffer->dwMinorVersion = 0;
196 }
197
198 VOID
DxCloseHandle(PVOID lpvInBuffer,PVOID lpvOutBuffer)199 DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer)
200 {
201 /* FIXME Unimplement */
202 }
203
204 VOID
DxOpenDirectDraw(PVOID lpvInBuffer,PVOID lpvOutBuffer)205 DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer)
206 {
207 /* FIXME Unimplement */
208 }
209
210 VOID
DxOpenSurface(PVOID lpvInBuffer,PVOID lpvOutBuffer)211 DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer)
212 {
213 /* FIXME Unimplement */
214 }
215
216 VOID
DxOpenVideoPort(PVOID lpvInBuffer,PVOID lpvOutBuffer)217 DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
218 {
219 /* FIXME Unimplement */
220 }
221
222 VOID
DxGetKernelCaps(PVOID lpvInBuffer,PVOID lpvOutBuffer)223 DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer)
224 {
225 /* FIXME Unimplement */
226 }
227
228 VOID
DxGetFieldNumber(PVOID lpvInBuffer,PVOID lpvOutBuffer)229 DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
230 {
231 /* FIXME Unimplement */
232 }
233
234 VOID
DxSetFieldNumber(PVOID lpvInBuffer,PVOID lpvOutBuffer)235 DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
236 {
237 /* FIXME Unimplement */
238 }
239
240 VOID
DxSetSkipPattern(PVOID lpvInBuffer,PVOID lpvOutBuffer)241 DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer)
242 {
243 /* FIXME Unimplement */
244 }
245
246 VOID
DxGetSurfaceState(PVOID lpvInBuffer,PVOID lpvOutBuffer)247 DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
248 {
249 /* FIXME Unimplement */
250 }
251
252 VOID
DxSetSurfaceState(PVOID lpvInBuffer,PVOID lpvOutBuffer)253 DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
254 {
255 /* FIXME Unimplement */
256 }
257
258 VOID
DxLock(PVOID lpvInBuffer,PVOID lpvOutBuffer)259 DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer)
260 {
261 /* FIXME Unimplement */
262 }
263
264 VOID
DxFlipOverlay(PVOID lpvInBuffer,PVOID lpvOutBuffer)265 DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer)
266 {
267 /* FIXME Unimplement */
268 }
269
270 VOID
DxFlipVideoPort(PVOID lpvInBuffer,PVOID lpvOutBuffer)271 DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
272 {
273 /* FIXME Unimplement */
274 }
275
276 VOID
DxGetCurrentAutoflip(PVOID lpvInBuffer,PVOID lpvOutBuffer)277 DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
278 {
279 /* FIXME Unimplement */
280 }
281
282 VOID
DxGetPreviousAutoflip(PVOID lpvInBuffer,PVOID lpvOutBuffer)283 DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
284 {
285 /* FIXME Unimplement */
286 }
287
288 VOID
DxRegisterEvent(PVOID lpvInBuffer,PVOID lpvOutBuffer)289 DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
290 {
291 /* FIXME Unimplement */
292 }
293
294 VOID
DxUnregisterEvent(PVOID lpvInBuffer,PVOID lpvOutBuffer)295 DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
296 {
297 /* FIXME Unimplement */
298 }
299
300 VOID
DxGetPolarity(PVOID lpvInBuffer,PVOID lpvOutBuffer)301 DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer)
302 {
303 /* FIXME Unimplement */
304 }
305
306 VOID
DxOpenVpCatureDevice(PVOID lpvInBuffer,PVOID lpvOutBuffer)307 DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer)
308 {
309 /* FIXME Unimplement */
310 }
311
312 VOID
DxAddVpCaptureBuffer(PVOID lpvInBuffer,PVOID lpvOutBuffer)313 DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer)
314 {
315 /* FIXME Unimplement */
316 }
317
318 VOID
DxFlushVpCaptureBuffs(PVOID lpvInBuffer,PVOID lpvOutBuffer)319 DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer)
320 {
321 /* FIXME Unimplement */
322 }
323
324
325
326