ReactOS 0.4.15-dev-7924-g5949c20
query.c
Go to the documentation of this file.
1/*
2 * Unit tests for setupapi.dll query functions
3 *
4 * Copyright (C) 2006 James Hawkins
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include <stdio.h>
22#include <windows.h>
23#include <setupapi.h>
24#include "wine/test.h"
25
28
29static void get_directories(void)
30{
31 int len;
32
35
36 if(len && (CURR_DIR[len-1] == '\\'))
37 CURR_DIR[len-1] = 0;
38
41
42 if (len && (WIN_DIR[len-1] == '\\'))
43 WIN_DIR[len-1] = 0;
44}
45
46static const char inf_data1[] =
47 "[Version]\n"
48 "Signature=\"$Chicago$\"\n"
49 "AdvancedINF=2.5\n"
50 "[SourceDisksNames]\n"
51 "2 = %SrcDiskName%, LANCOM\\LANtools\\lanconf.cab\n"
52 "[SourceDisksFiles]\n"
53 "lanconf.exe = 2\n"
54 "[DestinationDirs]\n"
55 "DefaultDestDir = 24, %DefaultDest%\n"
56 "[Strings]\n"
57 "LangDir = english\n"
58 "DefaultDest = LANCOM\n"
59 "SrcDiskName = \"LANCOM Software CD\"\n";
60
61static const char inf_data2[] =
62 "[SourceFileInfo]\n"
63 "sp1qfe\\bitsinst.exe=250B3702C7CCD7C2F9E4DAA1555C933E,000600060A28062C,27136,SP1QFE\n"
64 "sp1qfe\\bitsprx2.dll=4EBEA67F4BB4EB402E725CA7CA2857AE,000600060A280621,7680,SP1QFE\n"
65 "sp1qfe\\bitsprx3.dll=C788A1D9330DA011EF25E95D3BC7BDE5,000600060A280621,7168,SP1QFE\n"
66 "sp1qfe\\qmgr.dll=696AC82FB290A03F205901442E0E9589,000600060A280621,361984,SP1QFE\n"
67 "sp1qfe\\qmgrprxy.dll=8B5848144829E1BC985EA4C3D8CA7E3F,000600060A280621,17408,SP1QFE\n"
68 "sp1qfe\\winhttp.dll=3EC6F518114606CA59D4160322077437,000500010A280615,331776,SP1QFE\n"
69 "sp1qfe\\xpob2res.dll=DB83156B9F496F20D1EA70E4ABEC0166,000500010A280622,158720,SP1QFE\n";
70
71static const char inf_data3[] =
72 "[Version]\n"
73 "Signature = \"$Windows NT$\"\n"
74 "[DestinationDirs]\n"
75 "CopyAlways.Windir.files = 10\n"
76 "[CopyAlways.Windir.Files]\n"
77 "WindowsCodecs.dll\n";
78
79static const char inf_data4[] =
80 "[Version]\n"
81 "Signature = \"$Windows NT$\"\n"
82 "[CopyAlways.System32.Files]\n"
83 "WindowsCodecs.dll\n";
84
85static const char inf_data5[] =
86 "[Version]\n"
87 "Signature = \"$Windows NT$\"\n"
88 "[DestinationDirs]\n"
89 "DefaultDestDir = 11\n"
90 "CopyAlways.Windir.files = 10\n"
91 "[CopyAlways.Windir.Files]\n"
92 "WindowsCodecs.dll\n";
93
94static const char inf_data6[] =
95 "[Version]\n"
96 "Signature = \"$Windows NT$\"\n"
97 "[DestinationDirs]\n"
98 "DefaultDestDir = 10\n"
99 "[CopyAlways.Windir.Files]\n"
100 "WindowsCodecs.dll\n";
101
103{
104 BOOL ret;
105 DWORD dwNumberOfBytesWritten;
108 if (hf == INVALID_HANDLE_VALUE) return FALSE;
109 ret = WriteFile(hf, data, size, &dwNumberOfBytesWritten, NULL);
110 CloseHandle(hf);
111 return ret;
112}
113
115{
117 DWORD size;
118 BOOL ret = FALSE;
119
121 return FALSE;
122
124 if (!filename)
125 return FALSE;
126
128
129 if (!lstrcmpiA(test, filename))
130 ret = TRUE;
131
133 return ret;
134}
135
137{
139 BOOL ret;
140
142 if (!ret)
143 return NULL;
144
146 return info;
147}
148
150{
152 CHAR inf_filename[MAX_PATH];
153 CHAR inf_one[MAX_PATH], inf_two[MAX_PATH];
154 LPSTR revfile;
155 DWORD size;
156 HINF hinf;
157 BOOL ret;
158
159 lstrcpyA(inf_filename, CURR_DIR);
160 lstrcatA(inf_filename, "\\");
161 lstrcatA(inf_filename, "test.inf");
162
163 /* try an invalid inf handle */
164 size = 0xdeadbeef;
165 SetLastError(0xbeefcafe);
167 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
169 broken(GetLastError() == ERROR_BAD_PATHNAME) || /* win95 */
170 broken(GetLastError() == ERROR_FILE_NOT_FOUND) || /* win98 */
171 broken(GetLastError() == ERROR_PATH_NOT_FOUND) || /* NT4 */
172 broken(GetLastError() == ERROR_INVALID_NAME) || /* win2k */
173 broken(GetLastError() == ERROR_GENERAL_SYNTAX), /* another win2k / winMe */
174 "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError());
175 ok(size == 0xdeadbeef, "Expected size to remain unchanged\n");
176
177 /* try an invalid inf filename */
178 /* do not use NULL as absolute inf filename on win9x/winMe (crash) */
179 if ((GetLastError() != ERROR_BAD_PATHNAME) && /* win95 */
180 (GetLastError() != ERROR_FILE_NOT_FOUND) && /* win98 */
181 (GetLastError() != ERROR_GENERAL_SYNTAX)) /* winMe */
182 {
183 size = 0xdeadbeef;
184 SetLastError(0xbeefcafe);
186 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
188 "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
189 ok(size == 0xdeadbeef, "Expected size to remain unchanged\n");
190 }
191
192 create_inf_file(inf_filename, inf_data1, sizeof(inf_data1) - 1);
193
194 /* try an invalid search flag */
195 size = 0xdeadbeef;
196 SetLastError(0xbeefcafe);
197 ret = SetupGetInfInformationA(inf_filename, -1, NULL, 0, &size);
198 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
200 "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
201 ok(size == 0xdeadbeef, "Expected size to remain unchanged\n");
202
203 /* try a nonexistent inf file */
204 size = 0xdeadbeef;
205 SetLastError(0xbeefcafe);
207 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
209 "Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError());
210 ok(size == 0xdeadbeef, "Expected size to remain unchanged\n");
211
212 /* successfully open the inf file */
213 size = 0xdeadbeef;
215 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
216 ok(size != 0xdeadbeef, "Expected a valid size on return\n");
217
218 /* set ReturnBuffer to NULL and ReturnBufferSize to non-zero value 'size' */
219 SetLastError(0xbeefcafe);
221 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
223 "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
224
225 /* set ReturnBuffer to NULL and ReturnBufferSize to non-zero value 'size-1' */
227 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
228
229 /* some tests for behaviour with a NULL RequiredSize pointer */
231 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
233 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
235 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
236
238
239 /* try valid ReturnBuffer but too small size */
240 SetLastError(0xbeefcafe);
242 ok(ret == FALSE, "Expected SetupGetInfInformation to fail\n");
244 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
245
246 /* successfully get the inf information */
248 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
249 ok(check_info_filename(info, inf_filename), "Expected returned filename to be equal\n");
250
252
253 /* try the INFINFO_INF_SPEC_IS_HINF search flag */
254 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
257 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
258 ok(check_info_filename(info, inf_filename), "Expected returned filename to be equal\n");
259 SetupCloseInfFile(hinf);
260
261 lstrcpyA(inf_two, WIN_DIR);
262 lstrcatA(inf_two, "\\system32\\");
263 lstrcatA(inf_two, "test.inf");
264 ret = create_inf_file(inf_two, inf_data1, sizeof(inf_data1) - 1);
266 {
267 skip("need admin rights\n");
268 goto done;
269 }
270 ok(ret, "can't create inf file %u\n", GetLastError());
271
274
275 /* check if system32 is searched for inf */
278 revfile = inf_one; /* Vista */
279 else
280 revfile = inf_two;
281
282 lstrcpyA(inf_one, WIN_DIR);
283 lstrcatA(inf_one, "\\inf\\");
284 lstrcatA(inf_one, "test.inf");
285 create_inf_file(inf_one, inf_data1, sizeof(inf_data1) - 1);
286
289
290 /* test the INFINFO_DEFAULT_SEARCH search flag */
292 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed: %d\n", GetLastError());
293 ok(check_info_filename(info, inf_one), "Expected returned filename to be equal\n");
294
297
298 /* test the INFINFO_REVERSE_DEFAULT_SEARCH search flag */
300 ok(ret == TRUE, "Expected SetupGetInfInformation to succeed\n");
301 ok(check_info_filename(info, revfile), "Expected returned filename to be equal\n");
302
303done:
305 DeleteFileA(inf_filename);
306 DeleteFileA(inf_one);
307 DeleteFileA(inf_two);
308}
309
311{
312 char buffer[MAX_PATH] = "not empty", inf_filename[MAX_PATH];
314 DWORD required, error;
315 HINF hinf;
316 BOOL ret;
317
318 lstrcpyA(inf_filename, CURR_DIR);
319 lstrcatA(inf_filename, "\\");
320 lstrcatA(inf_filename, "test.inf");
321
322 create_inf_file(inf_filename, inf_data1, sizeof(inf_data1) - 1);
323
324 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
325 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
326
327 required = 0;
328 source_id = 0;
329
330 ret = SetupGetSourceFileLocationA(hinf, NULL, "lanconf.exe", &source_id, buffer, sizeof(buffer), &required);
331 ok(ret, "SetupGetSourceFileLocation failed\n");
332
333 ok(required == 1, "unexpected required size: %d\n", required);
334 ok(source_id == 2, "unexpected source id: %d\n", source_id);
335 ok(!lstrcmpA("", buffer), "unexpected result string: %s\n", buffer);
336
337 SetupCloseInfFile(hinf);
338 DeleteFileA(inf_filename);
339
340 create_inf_file(inf_filename, inf_data2, sizeof(inf_data2) - 1);
341
342 SetLastError(0xdeadbeef);
343 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
345 ok(hinf == INVALID_HANDLE_VALUE, "could open inf file\n");
346 ok(error == ERROR_WRONG_INF_STYLE, "got wrong error: %d\n", error);
347
348 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_OLDNT, NULL);
349 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
350
351 ret = SetupGetSourceFileLocationA(hinf, NULL, "", &source_id, buffer, sizeof(buffer), &required);
352 ok(!ret, "SetupGetSourceFileLocation succeeded\n");
353
354 SetupCloseInfFile(hinf);
355 DeleteFileA(inf_filename);
356}
357
358static void test_SetupGetSourceInfo(void)
359{
360 char buffer[MAX_PATH], inf_filename[MAX_PATH];
361 DWORD required;
362 HINF hinf;
363 BOOL ret;
364
365 lstrcpyA(inf_filename, CURR_DIR);
366 lstrcatA(inf_filename, "\\");
367 lstrcatA(inf_filename, "test.inf");
368
369 create_inf_file(inf_filename, inf_data1, sizeof(inf_data1) - 1);
370
371 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
372 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
373
374 required = 0;
375
376 ret = SetupGetSourceInfoA(hinf, 2, SRCINFO_PATH, buffer, sizeof(buffer), &required);
377 ok(ret, "SetupGetSourceInfoA failed\n");
378
379 ok(required == 1, "unexpected required size: %d\n", required);
380 ok(!lstrcmpA("", buffer), "unexpected result string: %s\n", buffer);
381
382 required = 0;
383 buffer[0] = 0;
384
385 ret = SetupGetSourceInfoA(hinf, 2, SRCINFO_TAGFILE, buffer, sizeof(buffer), &required);
386 ok(ret, "SetupGetSourceInfoA failed\n");
387
388 ok(required == 28, "unexpected required size: %d\n", required);
389 ok(!lstrcmpA("LANCOM\\LANtools\\lanconf.cab", buffer), "unexpected result string: %s\n", buffer);
390
391 required = 0;
392 buffer[0] = 0;
393
394 ret = SetupGetSourceInfoA(hinf, 2, SRCINFO_DESCRIPTION, buffer, sizeof(buffer), &required);
395 ok(ret, "SetupGetSourceInfoA failed\n");
396
397 ok(required == 19, "unexpected required size: %d\n", required);
398 ok(!lstrcmpA("LANCOM Software CD", buffer), "unexpected result string: %s\n", buffer);
399
400 SetupCloseInfFile(hinf);
401 DeleteFileA(inf_filename);
402}
403
404static void test_SetupGetTargetPath(void)
405{
406 char buffer[MAX_PATH], inf_filename[MAX_PATH];
407 char destfile[MAX_PATH];
408 DWORD required;
409 HINF hinf;
411 BOOL ret;
412
413 lstrcpyA(inf_filename, CURR_DIR);
414 lstrcatA(inf_filename, "\\");
415 lstrcatA(inf_filename, "test.inf");
416
417 create_inf_file(inf_filename, inf_data1, sizeof(inf_data1) - 1);
418
419 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
420 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
421
422 ctx.Inf = hinf;
423 ctx.CurrentInf = hinf;
424 ctx.Section = 7;
425 ctx.Line = 0;
426
427 required = 0;
428
429 ret = SetupGetTargetPathA(hinf, &ctx, NULL, buffer, sizeof(buffer), &required);
430 ok(ret, "SetupGetTargetPathA failed\n");
431 ok(required == 10, "unexpected required size: %d\n", required);
432 /* Retrieve the system drive from the windows directory.
433 * (%SystemDrive% is not available on Win9x)
434 */
435 lstrcpyA(destfile, WIN_DIR);
436 destfile[3] = '\0';
437 lstrcatA(destfile, "LANCOM");
438 ok(!lstrcmpiA(destfile, buffer), "unexpected result string: %s\n", buffer);
439
440 SetupCloseInfFile(hinf);
441 DeleteFileA(inf_filename);
442
443 create_inf_file(inf_filename, inf_data3, sizeof(inf_data3) - 1);
444
445 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
446 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
447
448 required = 0;
449
450 ret = SetupGetTargetPathA(hinf, NULL, "CopyAlways.Windir.Files", buffer, sizeof(buffer), &required);
451 ok(ret, "SetupGetTargetPathA failed\n");
452
453 lstrcpyA(destfile, WIN_DIR);
454
455 ok(required == lstrlenA(destfile) + 1, "unexpected required size: %d\n", required);
456 ok(!lstrcmpiA(buffer, destfile), "unexpected path: %s\n", buffer);
457
458 SetupCloseInfFile(hinf);
459 DeleteFileA(inf_filename);
460
461 create_inf_file(inf_filename, inf_data4, sizeof(inf_data4) - 1);
462
463 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
464 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
465
466 required = 0;
467
468 ret = SetupGetTargetPathA(hinf, NULL, "CopyAlways.System32.Files", buffer, sizeof(buffer), &required);
469 ok(ret, "SetupGetTargetPathA failed\n");
470
471 GetSystemDirectoryA(destfile, MAX_PATH);
472
473 ok(required == lstrlenA(destfile) + 1, "unexpected required size: %d\n", required);
474 ok(!lstrcmpiA(buffer, destfile), "unexpected path: %s\n", buffer);
475
476 SetupCloseInfFile(hinf);
477 DeleteFileA(inf_filename);
478
479 create_inf_file(inf_filename, inf_data5, sizeof(inf_data5) - 1);
480
481 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
482 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
483
484 required = 0;
485
486 ret = SetupGetTargetPathA(hinf, NULL, "CopyAlways.Windir.Files", buffer, sizeof(buffer), &required);
487 ok(ret, "SetupGetTargetPathA failed\n");
488
489 lstrcpyA(destfile, WIN_DIR);
490
491 ok(required == lstrlenA(destfile) + 1, "unexpected required size: %d\n", required);
492 ok(!lstrcmpiA(buffer, destfile), "unexpected path: %s\n", buffer);
493
494 SetupCloseInfFile(hinf);
495 DeleteFileA(inf_filename);
496
497 create_inf_file(inf_filename, inf_data6, sizeof(inf_data6) - 1);
498
499 hinf = SetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
500 ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
501
502 required = 0;
503
504 ret = SetupGetTargetPathA(hinf, NULL, "CopyAlways.Windir.Files", buffer, sizeof(buffer), &required);
505 ok(ret, "SetupGetTargetPathA failed\n");
506
507 lstrcpyA(destfile, WIN_DIR);
508
509 ok(required == lstrlenA(destfile) + 1, "unexpected required size: %d\n", required);
510 ok(!lstrcmpiA(buffer, destfile), "unexpected path: %s\n", buffer);
511
512 SetupCloseInfFile(hinf);
513 DeleteFileA(inf_filename);
514}
515
517{
519
524}
#define broken(x)
Definition: _sntprintf.h:21
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define HeapAlloc
Definition: compat.h:733
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
#define ERROR_ACCESS_DENIED
Definition: compat.h:97
#define ERROR_INVALID_NAME
Definition: compat.h:103
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
Definition: delete.c:24
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
Definition: path.c:2146
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2337
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2283
HINF WINAPI SetupOpenInfFileA(PCSTR name, PCSTR class, DWORD style, UINT *error)
Definition: parser.c:1139
BOOL WINAPI SetupGetInfInformationA(LPCVOID InfSpec, DWORD SearchControl, PSP_INF_INFORMATION ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
Definition: query.c:89
BOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION InfInformation, UINT InfIndex, PSTR ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
Definition: query.c:193
BOOL WINAPI SetupGetTargetPathA(HINF hinf, PINFCONTEXT context, PCSTR section, PSTR buffer, DWORD buffer_size, PDWORD required_size)
Definition: query.c:515
BOOL WINAPI SetupGetSourceFileLocationA(HINF hinf, PINFCONTEXT context, PCSTR filename, PUINT source_id, PSTR buffer, DWORD buffer_size, PDWORD required_size)
Definition: query.c:288
BOOL WINAPI SetupGetSourceInfoA(HINF hinf, UINT source_id, UINT info, PSTR buffer, DWORD buffer_size, LPDWORD required_size)
Definition: query.c:420
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
GLuint buffer
Definition: glext.h:5915
GLenum GLsizei len
Definition: glext.h:6722
#define INF_STYLE_OLDNT
Definition: infsupp.h:37
#define INF_STYLE_WIN4
Definition: infsupp.h:41
const char * filename
Definition: ioapi.h:137
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:18
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:123
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
#define error(str)
Definition: mkdosfs.c:1605
#define CREATE_ALWAYS
Definition: disk.h:72
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
static void create_inf_file(void)
Definition: advpack.c:202
static void get_directories(void)
Definition: query.c:29
static CHAR CURR_DIR[MAX_PATH]
Definition: query.c:26
static PSP_INF_INFORMATION alloc_inf_info(LPCSTR filename, DWORD search, PDWORD size)
Definition: query.c:136
static void test_SetupGetInfInformation(void)
Definition: query.c:149
static const char inf_data2[]
Definition: query.c:61
static void test_SetupGetTargetPath(void)
Definition: query.c:404
static const char inf_data5[]
Definition: query.c:85
static void test_SetupGetSourceInfo(void)
Definition: query.c:358
static CHAR WIN_DIR[MAX_PATH]
Definition: query.c:27
static BOOL check_info_filename(PSP_INF_INFORMATION info, LPSTR test)
Definition: query.c:114
static void test_SetupGetSourceFileLocation(void)
Definition: query.c:310
static const char inf_data4[]
Definition: query.c:79
static const char inf_data3[]
Definition: query.c:71
static const char inf_data6[]
Definition: query.c:94
static const char inf_data1[]
Definition: query.c:46
static short search(int val, const short *table, int size)
Definition: msg711.c:255
unsigned int UINT
Definition: ndis.h:50
#define GENERIC_WRITE
Definition: nt_native.h:90
DWORD * PDWORD
Definition: pedump.c:68
#define test
Definition: rosglue.h:37
#define SRCINFO_DESCRIPTION
Definition: setupapi.h:642
#define INFINFO_INF_NAME_IS_ABSOLUTE
Definition: setupapi.h:449
#define INFINFO_DEFAULT_SEARCH
Definition: setupapi.h:450
#define ERROR_WRONG_INF_STYLE
Definition: setupapi.h:291
#define SRCINFO_TAGFILE
Definition: setupapi.h:641
#define SRCINFO_PATH
Definition: setupapi.h:640
#define INFINFO_REVERSE_DEFAULT_SEARCH
Definition: setupapi.h:451
#define ERROR_GENERAL_SYNTAX
Definition: setupapi.h:290
#define INFINFO_INF_SPEC_IS_HINF
Definition: setupapi.h:448
static int source_id
Definition: solundo.cpp:15
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
Definition: infsupp.c:45
int ret
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define ERROR_PATH_NOT_FOUND
Definition: winerror.h:106
#define ERROR_BAD_PATHNAME
Definition: winerror.h:233
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
char CHAR
Definition: xmlstorage.h:175