Merge from branch ReactX to Trunk,
[reactos.git] / rostests / dxtest / win32kdxtest / NtGdiDdQueryDirectDrawObject.c
1 #include <stdio.h>
2 /* SDK/DDK/NDK Headers. */
3 #include <windows.h>
4 #include <wingdi.h>
5 #include <winddi.h>
6 #include <d3dnthal.h>
7 #include <dll/directx/d3d8thk.h>
8 #include "test.h"
9
10 extern BOOL dumping_on;
11
12 /* my struct */
13 struct
14 {
15 DWORD pos;
16 } *mytest;
17
18 /*
19 * Test see if we can setup DirectDrawObject
20 *
21 */
22
23 /*
24 * ToDO
25 * 1. add more testcase it is only some, but we do not test for all case
26 * that happen only some
27 *
28 * 2.Fixed the false alaret for drivers only support 2d dx interface
29 *
30 * 3. fixed the dumping of d3d struct.
31 *
32 */
33
34 void
35 test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
36 {
37 int fails=0;
38 BOOL retValue=FALSE;
39
40 DD_HALINFO *pHalInfo = NULL;
41 DWORD *pCallBackFlags = NULL;
42 LPD3DNTHAL_CALLBACKS puD3dCallbacks = NULL;
43 LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData = NULL;
44 PDD_D3DBUFCALLBACKS puD3dBufferCallbacks = NULL;
45 LPDDSURFACEDESC puD3dTextureFormats = NULL;
46 DWORD *puNumHeaps = NULL;
47 VIDEOMEMORY *puvmList = NULL;
48 DWORD *puNumFourCC = NULL;
49 DWORD *puFourCC = NULL;
50
51 DD_HALINFO HalInfo;
52 DWORD CallBackFlags[4];
53 D3DNTHAL_CALLBACKS D3dCallbacks;
54 D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;
55 DD_D3DBUFCALLBACKS D3dBufferCallbacks;
56 DDSURFACEDESC2 D3dTextureFormats[100];
57 DWORD NumHeaps = 0;
58 VIDEOMEMORY vmList;
59 DWORD NumFourCC = 0;
60 DWORD FourCC = 0;
61
62 /* clear data */
63 memset(&vmList,0,sizeof(VIDEOMEMORY));
64 memset(&D3dTextureFormats,0,sizeof(DDSURFACEDESC));
65 memset(&D3dBufferCallbacks,0,sizeof(DD_D3DBUFCALLBACKS));
66 memset(&D3dDriverData,0,sizeof(D3DNTHAL_GLOBALDRIVERDATA));
67 memset(&D3dCallbacks,0,sizeof(D3DNTHAL_CALLBACKS));
68 memset(&HalInfo,0,sizeof(DD_HALINFO));
69 memset(CallBackFlags,0,sizeof(DWORD)*3);
70
71 printf("Start testing of NtGdiDdQueryDirectDrawObject\n");
72
73 /* testing OsThunkDdQueryDirectDrawObject( NULL, .... */
74 printf("testing DdQueryDirectDrawObject( NULL, ....)\n");
75
76 retValue = OsThunkDdQueryDirectDrawObject( NULL, pHalInfo,
77 pCallBackFlags, puD3dCallbacks,
78 puD3dDriverData, puD3dBufferCallbacks,
79 puD3dTextureFormats, puNumHeaps,
80 puvmList, puNumFourCC,
81 puFourCC);
82 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
83 testing_noteq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
84 testing_noteq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
85 testing_noteq(puD3dCallbacks,NULL,fails,"4. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
86 testing_noteq(puD3dDriverData,NULL,fails,"5. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
87 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
88 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
89 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
90 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(NULL, ...);\0");
91
92 /* testing OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, NULL, .... */
93 printf("testing DdQueryDirectDrawObject( hDD, NULL, ....)\n");
94
95 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
96 pCallBackFlags, puD3dCallbacks,
97 puD3dDriverData, puD3dBufferCallbacks,
98 puD3dTextureFormats, puNumHeaps,
99 puvmList, puNumFourCC,
100 puFourCC);
101
102 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
103 testing_noteq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
104 testing_noteq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
105 testing_noteq(puD3dCallbacks,NULL,fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
106 testing_noteq(puD3dDriverData,NULL,fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
107 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
108 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
109 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
110 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, NULL, ...);\0");
111
112 /* testing OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, NULL, .... */
113 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, NULL, ....)\n");
114
115 pHalInfo = &HalInfo;
116 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
117 pCallBackFlags, puD3dCallbacks,
118 puD3dDriverData, puD3dBufferCallbacks,
119 puD3dTextureFormats, puNumHeaps,
120 puvmList, puNumFourCC,
121 puFourCC);
122
123 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
124 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
125 testing_noteq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
126 testing_noteq(puD3dCallbacks,NULL,fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
127 testing_noteq(puD3dDriverData,NULL,fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
128 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
129 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
130 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
131 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\0");
132
133 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
134 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
135 {
136 printf("10. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...);\n");
137 fails++;
138 }
139
140 if (dumping_on == TRUE)
141 {
142 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, NULL, ...)");
143 }
144
145 /* testing OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, .... */
146 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, NULL, ....)\n");
147
148 pHalInfo = &HalInfo;
149 pCallBackFlags = CallBackFlags;
150
151 RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
152
153 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
154 pCallBackFlags, puD3dCallbacks,
155 puD3dDriverData, puD3dBufferCallbacks,
156 puD3dTextureFormats, puNumHeaps,
157 puvmList, puNumFourCC,
158 puFourCC);
159
160 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
161 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
162 testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
163 testing_noteq(puD3dCallbacks,NULL,fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
164 testing_noteq(puD3dDriverData,NULL,fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
165 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
166 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
167 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
168 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\0");
169 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
170 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
171 {
172 printf("10. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...);\n");
173 fails++;
174 }
175
176 if (dumping_on == TRUE)
177 {
178 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
179 dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
180 }
181
182 /* testing OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, .... */
183 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ....)\n");
184
185 pHalInfo = &HalInfo;
186 pCallBackFlags = CallBackFlags;
187 puD3dCallbacks = &D3dCallbacks;
188
189 RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
190 RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
191
192 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
193 pCallBackFlags, puD3dCallbacks,
194 puD3dDriverData, puD3dBufferCallbacks,
195 puD3dTextureFormats, puNumHeaps,
196 puvmList, puNumFourCC,
197 puFourCC);
198
199 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
200 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
201 testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
202 testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
203
204 testing_noteq(puD3dDriverData,NULL,fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
205 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
206 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
207 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
208 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
209 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
210 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
211 {
212 printf("10. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\n");
213 fails++;
214 }
215
216 if (dumping_on == TRUE)
217 {
218 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
219 dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
220 /* FIXME dump puD3dCallbacks */
221 }
222
223 /* testing OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, */
224 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ....)\n");
225
226 pHalInfo = &HalInfo;
227 pCallBackFlags = CallBackFlags;
228 puD3dCallbacks = &D3dCallbacks;
229 puD3dDriverData = &D3dDriverData;
230
231 RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
232 RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
233 RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
234
235 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
236 pCallBackFlags, puD3dCallbacks,
237 puD3dDriverData, puD3dBufferCallbacks,
238 puD3dTextureFormats, puNumHeaps,
239 puvmList, puNumFourCC,
240 puFourCC);
241
242 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
243 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
244 testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
245 testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
246
247 testing_noteq(puD3dDriverData->dwSize,sizeof(D3DNTHAL_GLOBALDRIVERDATA),fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, NULL, ...);\0");
248
249 testing_noteq(puD3dBufferCallbacks,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
250 testing_noteq(puD3dTextureFormats,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
251 testing_noteq(puNumFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
252 testing_noteq(puFourCC,NULL,fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\0");
253 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
254 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
255 {
256 printf("10. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ...);\n");
257 fails++;
258 }
259
260 if (dumping_on == TRUE)
261 {
262 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
263 dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
264 /* FIXME dump puD3dCallbacks */
265 /* FIXME dump puD3dDriverData */
266 }
267
268 /* testing OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, NULL, */
269 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, NULL, ....)\n");
270
271 pHalInfo = &HalInfo;
272 pCallBackFlags = CallBackFlags;
273 puD3dCallbacks = &D3dCallbacks;
274 puD3dDriverData = &D3dDriverData;
275 puD3dBufferCallbacks = &D3dBufferCallbacks;
276
277 RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
278 RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
279 RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
280 RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
281
282 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
283 pCallBackFlags, puD3dCallbacks,
284 puD3dDriverData, puD3dBufferCallbacks,
285 puD3dTextureFormats, puNumHeaps,
286 puvmList, puNumFourCC,
287 puFourCC);
288
289 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
290 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
291 testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
292 testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
293
294 testing_noteq(puD3dDriverData->dwSize,sizeof(D3DNTHAL_GLOBALDRIVERDATA),fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dBufferCallbacks, NULL, ...);\0");
295
296 testing_noteq(puD3dTextureFormats,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
297 testing_noteq(puNumFourCC,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
298 testing_noteq(puFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
299 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
300 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
301 {
302 printf("9. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\n");
303 fails++;
304 }
305
306 if (puD3dBufferCallbacks)
307 {
308 testing_noteq(puD3dBufferCallbacks->dwSize,sizeof(DD_D3DBUFCALLBACKS),fails,"11. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL...);\0");
309 }
310
311 if (dumping_on == TRUE)
312 {
313 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
314 dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
315 /* FIXME dump puD3dCallbacks */
316 /* FIXME dump puD3dDriverData */
317 /* FIXME dump D3dBufferCallbacks */
318
319 }
320
321 /* testing OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, puD3dTextureFormats, NULL, */
322 printf("testing DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, puD3dTextureFormats, NULL, ....)\n");
323
324 pHalInfo = &HalInfo;
325 pCallBackFlags = CallBackFlags;
326 puD3dCallbacks = &D3dCallbacks;
327 puD3dDriverData = &D3dDriverData;
328 puD3dBufferCallbacks = &D3dBufferCallbacks;
329
330 RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
331 RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
332 RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
333 //RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
334 RtlZeroMemory(&D3dBufferCallbacks,sizeof(D3DNTHAL_CALLBACKS));
335
336 if (puD3dDriverData)
337 {
338 puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
339 if (!puD3dTextureFormats)
340 printf("Waring Out of memory\n");
341
342 RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
343 }
344
345 retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo,
346 pCallBackFlags, puD3dCallbacks,
347 puD3dDriverData, puD3dBufferCallbacks,
348 puD3dTextureFormats, puNumHeaps,
349 puvmList, puNumFourCC,
350 puFourCC);
351
352 testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
353 testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
354 testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
355 testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
356
357 testing_noteq(puD3dDriverData->dwSize,sizeof(D3DNTHAL_GLOBALDRIVERDATA),fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
358
359 testing_noteq(puNumFourCC,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
360 testing_noteq(puFourCC,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
361 if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
362 (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
363 {
364 printf("8. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\n");
365 fails++;
366 }
367
368 if (puD3dBufferCallbacks)
369 {
370 testing_noteq(puD3dBufferCallbacks->dwSize,sizeof(DD_D3DBUFCALLBACKS),fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL...);\0");
371 }
372
373 if (puD3dTextureFormats)
374 {
375 /* fixme test case for it */
376 }
377
378 if (dumping_on == TRUE)
379 {
380 dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
381 dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
382 /* FIXME dump puD3dCallbacks */
383 /* FIXME dump puD3dDriverData */
384 /* FIXME dump D3dBufferCallbacks */
385 /* FIXME dump puD3dTextureFormats */
386 }
387
388
389
390
391
392 if (puD3dTextureFormats)
393 free (puD3dTextureFormats);
394 show_status(fails, "NtGdiDdQueryDirectDrawObject\0");
395 }