ReactOS 0.4.15-dev-7924-g5949c20
directory.c
Go to the documentation of this file.
1/*
2 * Unit test suite for directory functions.
3 *
4 * Copyright 2002 Dmitry Timoshkov
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 <stdarg.h>
22
23#include "wine/test.h"
24#include "windef.h"
25#include "winbase.h"
26#include "winerror.h"
27#include "winternl.h"
28
30
31static void init(void)
32{
33 HMODULE hntdll = GetModuleHandleA("ntdll.dll");
34 pNtQueryObject = (void *)GetProcAddress(hntdll, "NtQueryObject");
35}
36
37#define TEST_GRANTED_ACCESS(a,b) test_granted_access(a,b,__LINE__)
39{
42
43 status = pNtQueryObject(handle, ObjectBasicInformation, &obj_info,
44 sizeof(obj_info), NULL);
45 ok_(__FILE__, line)(!status, "NtQueryObject with err: %08x\n", status);
46 ok_(__FILE__, line)(obj_info.GrantedAccess == access, "Granted access should "
47 "be 0x%08x, instead of 0x%08x\n", access, obj_info.GrantedAccess);
48}
49
50/* If you change something in these tests, please do the same
51 * for GetSystemDirectory tests.
52 */
54{
55 UINT len, len_with_null;
56 char buf[MAX_PATH];
57
58 len_with_null = GetWindowsDirectoryA(NULL, 0);
59 ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH\n");
60
61 lstrcpyA(buf, "foo");
62 len_with_null = GetWindowsDirectoryA(buf, 1);
63 ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer\n");
64
65 lstrcpyA(buf, "foo");
66 len = GetWindowsDirectoryA(buf, len_with_null - 1);
67 ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer\n");
68 ok(len == len_with_null, "GetWindowsDirectoryW returned %d, expected %d\n",
69 len, len_with_null);
70
71 lstrcpyA(buf, "foo");
72 len = GetWindowsDirectoryA(buf, len_with_null);
73 ok(lstrcmpA(buf, "foo") != 0, "should touch the buffer\n");
74 ok(len == strlen(buf), "returned length should be equal to the length of string\n");
75 ok(len == len_with_null-1, "GetWindowsDirectoryA returned %d, expected %d\n",
76 len, len_with_null-1);
77}
78
80{
81 UINT len, len_with_null;
83 static const WCHAR fooW[] = {'f','o','o',0};
84
85 len_with_null = GetWindowsDirectoryW(NULL, 0);
86 if (len_with_null == 0 && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
87 {
88 win_skip("GetWindowsDirectoryW is not implemented\n");
89 return;
90 }
91 ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH\n");
92
95 ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer\n");
96 ok(len == len_with_null, "GetWindowsDirectoryW returned %d, expected %d\n",
97 len, len_with_null);
98
100 len = GetWindowsDirectoryW(buf, len_with_null - 1);
101 ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer\n");
102 ok(len == len_with_null, "GetWindowsDirectoryW returned %d, expected %d\n",
103 len, len_with_null);
104
105 lstrcpyW(buf, fooW);
106 len = GetWindowsDirectoryW(buf, len_with_null);
107 ok(lstrcmpW(buf, fooW) != 0, "should touch the buffer\n");
108 ok(len == lstrlenW(buf), "returned length should be equal to the length of string\n");
109 ok(len == len_with_null-1, "GetWindowsDirectoryW returned %d, expected %d\n",
110 len, len_with_null-1);
111}
112
113
114/* If you change something in these tests, please do the same
115 * for GetWindowsDirectory tests.
116 */
118{
119 UINT len, len_with_null;
120 char buf[MAX_PATH];
121
122 len_with_null = GetSystemDirectoryA(NULL, 0);
123 ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH\n");
124
125 lstrcpyA(buf, "foo");
127 ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer\n");
128 ok(len == len_with_null, "GetSystemDirectoryA returned %d, expected %d\n",
129 len, len_with_null);
130
131 lstrcpyA(buf, "foo");
132 len = GetSystemDirectoryA(buf, len_with_null - 1);
133 ok(lstrcmpA(buf, "foo") == 0, "should not touch the buffer\n");
134 ok(len == len_with_null, "GetSystemDirectoryA returned %d, expected %d\n",
135 len, len_with_null);
136
137 lstrcpyA(buf, "foo");
138 len = GetSystemDirectoryA(buf, len_with_null);
139 ok(lstrcmpA(buf, "foo") != 0, "should touch the buffer\n");
140 ok(len == strlen(buf), "returned length should be equal to the length of string\n");
141 ok(len == len_with_null-1, "GetSystemDirectoryW returned %d, expected %d\n",
142 len, len_with_null-1);
143}
144
146{
147 UINT len, len_with_null;
149 static const WCHAR fooW[] = {'f','o','o',0};
150
151 len_with_null = GetSystemDirectoryW(NULL, 0);
152 if (len_with_null == 0 && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
153 {
154 win_skip("GetSystemDirectoryW is not available\n");
155 return;
156 }
157 ok(len_with_null <= MAX_PATH, "should fit into MAX_PATH\n");
158
159 lstrcpyW(buf, fooW);
161 ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer\n");
162 ok(len == len_with_null, "GetSystemDirectoryW returned %d, expected %d\n",
163 len, len_with_null);
164
165 lstrcpyW(buf, fooW);
166 len = GetSystemDirectoryW(buf, len_with_null - 1);
167 ok(lstrcmpW(buf, fooW) == 0, "should not touch the buffer\n");
168 ok(len == len_with_null, "GetSystemDirectoryW returned %d, expected %d\n",
169 len, len_with_null);
170
171 lstrcpyW(buf, fooW);
172 len = GetSystemDirectoryW(buf, len_with_null);
173 ok(lstrcmpW(buf, fooW) != 0, "should touch the buffer\n");
174 ok(len == lstrlenW(buf), "returned length should be equal to the length of string\n");
175 ok(len == len_with_null-1, "GetSystemDirectoryW returned %d, expected %d\n",
176 len, len_with_null-1);
177}
178
179static void test_CreateDirectoryA(void)
180{
181 char tmpdir[MAX_PATH];
182 WCHAR curdir[MAX_PATH];
183 BOOL ret;
184
188 "CreateDirectoryA(NULL): ret=%d err=%d\n", ret, GetLastError());
189
193 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
194
196 ok(ret < MAX_PATH, "System directory should fit into MAX_PATH\n");
197
200 ok(ret == TRUE, "could not chdir to the System directory\n");
201
202 ret = CreateDirectoryA(".", NULL);
204 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
205
206
207 ret = CreateDirectoryA("..", NULL);
209 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
210
212 tmpdir[3] = 0; /* truncate the path */
216 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
217
219 lstrcatA(tmpdir, "Please Remove Me");
221 ok(ret == TRUE, "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
222
225 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
226
228 ok(ret == TRUE,
229 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
230
231
232 lstrcatA(tmpdir, "?");
236 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
238
239 tmpdir[lstrlenA(tmpdir) - 1] = '*';
243 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
245
247 lstrcatA(tmpdir, "Please Remove Me/Please Remove Me");
250 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
252
253 /* Test behavior with a trailing dot.
254 * The directory should be created without the dot.
255 */
257 lstrcatA(tmpdir, "Please Remove Me.");
259 ok(ret == TRUE,
260 "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
261
262 lstrcatA(tmpdir, "/Please Remove Me");
264 ok(ret == TRUE,
265 "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
267 ok(ret == TRUE,
268 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
269
271 lstrcatA(tmpdir, "Please Remove Me");
273 ok(ret == TRUE,
274 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
275
276 /* Test behavior with two trailing dots.
277 * The directory should be created without the trailing dots.
278 */
280 lstrcatA(tmpdir, "Please Remove Me..");
282 ok(ret == TRUE,
283 "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
284
285 lstrcatA(tmpdir, "/Please Remove Me");
287 ok(ret == TRUE || /* On Win98 */
288 (ret == FALSE && GetLastError() == ERROR_PATH_NOT_FOUND), /* On NT! */
289 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
290 if (ret == TRUE)
291 {
293 ok(ret == TRUE,
294 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
295 }
296
298 lstrcatA(tmpdir, "Please Remove Me");
300 ok(ret == TRUE,
301 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
302
303 /* Test behavior with a trailing space.
304 * The directory should be created without the trailing space.
305 */
307 lstrcatA(tmpdir, "Please Remove Me ");
309 ok(ret == TRUE,
310 "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
311
312 lstrcatA(tmpdir, "/Please Remove Me");
314 ok(ret == TRUE || /* On Win98 */
315 (ret == FALSE && GetLastError() == ERROR_PATH_NOT_FOUND), /* On NT! */
316 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
317 if (ret == TRUE)
318 {
320 ok(ret == TRUE,
321 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
322 }
323
325 lstrcatA(tmpdir, "Please Remove Me");
327 ok(ret == TRUE,
328 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
329
330 /* Test behavior with a trailing space.
331 * The directory should be created without the trailing spaces.
332 */
334 lstrcatA(tmpdir, "Please Remove Me ");
336 ok(ret == TRUE,
337 "CreateDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
338
339 lstrcatA(tmpdir, "/Please Remove Me");
341 ok(ret == TRUE || /* On Win98 */
342 (ret == FALSE && GetLastError() == ERROR_PATH_NOT_FOUND), /* On NT! */
343 "CreateDirectoryA(%s): ret=%d err=%d\n", tmpdir, ret, GetLastError());
344 if (ret == TRUE)
345 {
347 ok(ret == TRUE,
348 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
349 }
350
352 lstrcatA(tmpdir, "Please Remove Me");
354 ok(ret == TRUE,
355 "RemoveDirectoryA(%s) failed err=%d\n", tmpdir, GetLastError());
356 SetCurrentDirectoryW(curdir);
357}
358
359static void test_CreateDirectoryW(void)
360{
362 BOOL ret;
363 static const WCHAR empty_strW[] = { 0 };
364 static const WCHAR tmp_dir_name[] = {'P','l','e','a','s','e',' ','R','e','m','o','v','e',' ','M','e',0};
365 static const WCHAR dotW[] = {'.',0};
366 static const WCHAR slashW[] = {'/',0};
367 static const WCHAR dotdotW[] = {'.','.',0};
368 static const WCHAR questionW[] = {'?',0};
369 WCHAR curdir[MAX_PATH];
370
373 {
374 win_skip("CreateDirectoryW is not available\n");
375 return;
376 }
378 "should not create NULL path ret %u err %u\n", ret, GetLastError());
379
380 ret = CreateDirectoryW(empty_strW, NULL);
382 "should not create empty path ret %u err %u\n", ret, GetLastError());
383
385 ok(ret < MAX_PATH, "System directory should fit into MAX_PATH\n");
386
389 ok(ret == TRUE, "could not chdir to the System directory ret %u err %u\n", ret, GetLastError());
390
393 "should not create existing path ret %u err %u\n", ret, GetLastError());
394
397 "should not create existing path ret %u err %u\n", ret, GetLastError());
398
400 tmpdir[3] = 0; /* truncate the path */
403 "should deny access to the drive root ret %u err %u\n", ret, GetLastError());
404
406 lstrcatW(tmpdir, tmp_dir_name);
408 ok(ret == TRUE, "CreateDirectoryW should always succeed\n");
409
412 "should not create existing path ret %u err %u\n", ret, GetLastError());
413
415 ok(ret == TRUE, "RemoveDirectoryW should always succeed\n");
416
417 lstrcatW(tmpdir, questionW);
420 "CreateDirectoryW with ? wildcard name should fail with error 183, ret=%s error=%d\n",
421 ret ? " True" : "False", GetLastError());
423 ok(ret == FALSE, "RemoveDirectoryW should have failed\n");
424
425 tmpdir[lstrlenW(tmpdir) - 1] = '*';
428 "CreateDirectoryW with * wildcard name should fail with error 183, ret=%s error=%d\n",
429 ret ? " True" : "False", GetLastError());
431 ok(ret == FALSE, "RemoveDirectoryW should have failed\n");
432
434 lstrcatW(tmpdir, tmp_dir_name);
436 lstrcatW(tmpdir, tmp_dir_name);
439 "CreateDirectoryW with multiple nonexistent directories in path should fail ret %u err %u\n",
440 ret, GetLastError());
442 ok(ret == FALSE, "RemoveDirectoryW should have failed\n");
443
444 SetCurrentDirectoryW(curdir);
445}
446
447static void test_RemoveDirectoryA(void)
448{
449 char curdir[MAX_PATH];
450 char tmpdir[MAX_PATH];
451 BOOL ret;
452
454 lstrcatA(tmpdir, "Please Remove Me");
456 ok(ret == TRUE, "CreateDirectoryA should always succeed\n");
457
459 ok(SetCurrentDirectoryA(tmpdir), "SetCurrentDirectoryA failed\n");
460
461 SetLastError(0xdeadbeef);
462 ok(!RemoveDirectoryA(tmpdir), "RemoveDirectoryA succeeded\n");
464 "Expected ERROR_SHARING_VIOLATION, got %u\n", GetLastError());
465
468
469 SetCurrentDirectoryA(curdir);
471 ok(ret == TRUE, "RemoveDirectoryA should always succeed\n");
472
473 lstrcatA(tmpdir, "?");
477 "RemoveDirectoryA with ? wildcard name should fail, ret=%s error=%d\n",
478 ret ? " True" : "False", GetLastError());
479
480 tmpdir[lstrlenA(tmpdir) - 1] = '*';
484 "RemoveDirectoryA with * wildcard name should fail, ret=%s error=%d\n",
485 ret ? " True" : "False", GetLastError());
486}
487
488static void test_RemoveDirectoryW(void)
489{
490 WCHAR curdir[MAX_PATH];
492 BOOL ret;
493 static const WCHAR tmp_dir_name[] = {'P','l','e','a','s','e',' ','R','e','m','o','v','e',' ','M','e',0};
494 static const WCHAR questionW[] = {'?',0};
495
497 lstrcatW(tmpdir, tmp_dir_name);
500 {
501 win_skip("CreateDirectoryW is not available\n");
502 return;
503 }
504
505 ok(ret == TRUE, "CreateDirectoryW should always succeed\n");
506
508 ok(SetCurrentDirectoryW(tmpdir), "SetCurrentDirectoryW failed\n");
509
510 SetLastError(0xdeadbeef);
511 ok(!RemoveDirectoryW(tmpdir), "RemoveDirectoryW succeeded\n");
513 "Expected ERROR_SHARING_VIOLATION, got %u\n", GetLastError());
514
517
518 SetCurrentDirectoryW(curdir);
520 ok(ret == TRUE, "RemoveDirectoryW should always succeed\n");
521
522 lstrcatW(tmpdir, questionW);
525 "RemoveDirectoryW with wildcard should fail with error 183, ret=%s error=%d\n",
526 ret ? " True" : "False", GetLastError());
527
528 tmpdir[lstrlenW(tmpdir) - 1] = '*';
531 "RemoveDirectoryW with * wildcard name should fail with error 183, ret=%s error=%d\n",
532 ret ? " True" : "False", GetLastError());
533}
534
536{
537 SetLastError(0);
538 ok( !SetCurrentDirectoryA( "\\some_dummy_dir" ), "SetCurrentDirectoryA succeeded\n" );
539 ok( GetLastError() == ERROR_FILE_NOT_FOUND, "wrong error %d\n", GetLastError() );
540 ok( !SetCurrentDirectoryA( "\\some_dummy\\subdir" ), "SetCurrentDirectoryA succeeded\n" );
541 ok( GetLastError() == ERROR_PATH_NOT_FOUND, "wrong error %d\n", GetLastError() );
542}
543
545{
546 init();
547
550
553
556
559
561}
@ ObjectBasicInformation
Definition: DriverTester.h:54
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
#define ok_(x1, x2)
Definition: atltest.h:61
LONG NTSTATUS
Definition: precomp.h:26
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NTSTATUS
Definition: precomp.h:21
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define GetCurrentDirectoryW(x, y)
Definition: compat.h:756
#define SetLastError(x)
Definition: compat.h:752
#define GetProcAddress(x, y)
Definition: compat.h:753
#define MAX_PATH
Definition: compat.h:34
#define lstrcpyW
Definition: compat.h:749
#define ERROR_ACCESS_DENIED
Definition: compat.h:97
#define ERROR_INVALID_NAME
Definition: compat.h:103
#define lstrlenW
Definition: compat.h:750
PPEB Peb
Definition: dllmain.c:27
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
Definition: dir.c:714
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:90
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
Definition: dir.c:732
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:37
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
Definition: path.c:2146
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
Definition: path.c:2080
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2337
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
Definition: path.c:2249
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2313
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
Definition: path.c:2206
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2352
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
Definition: path.c:2054
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2283
static const WCHAR slashW[]
Definition: devenum.c:59
unsigned int BOOL
Definition: ntddk_ex.h:94
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
GLenum GLsizei len
Definition: glext.h:6722
#define NtCurrentTeb
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
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_ALREADY_EXISTS
Definition: disk.h:80
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define TEST_GRANTED_ACCESS(a, b)
Definition: directory.c:37
static void init(void)
Definition: directory.c:31
static void test_SetCurrentDirectoryA(void)
Definition: directory.c:535
static void test_CreateDirectoryW(void)
Definition: directory.c:359
static void test_GetSystemDirectoryW(void)
Definition: directory.c:145
static void test_GetSystemDirectoryA(void)
Definition: directory.c:117
static ULONG
Definition: directory.c:29
static void test_GetWindowsDirectoryW(void)
Definition: directory.c:79
static void test_GetWindowsDirectoryA(void)
Definition: directory.c:53
static void test_RemoveDirectoryW(void)
Definition: directory.c:488
static void test_CreateDirectoryA(void)
Definition: directory.c:179
static PVOID
Definition: directory.c:29
static OBJECT_INFORMATION_CLASS
Definition: directory.c:29
static PULONG
Definition: directory.c:29
static void test_RemoveDirectoryA(void)
Definition: directory.c:447
static void test_granted_access(HANDLE handle, ACCESS_MASK access, int line)
Definition: directory.c:38
static const WCHAR fooW[]
Definition: locale.c:44
static HINSTANCE hntdll
Definition: process.c:66
static const WCHAR dotdotW[]
Definition: directory.c:81
static const WCHAR dotW[]
Definition: directory.c:80
unsigned int UINT
Definition: ndis.h:50
#define SYNCHRONIZE
Definition: nt_native.h:61
ULONG ACCESS_MASK
Definition: nt_native.h:40
#define FILE_TRAVERSE
Definition: nt_native.h:643
#define win_skip
Definition: test.h:160
static char tmpdir[MAX_PATH]
Definition: shlexec.c:52
HANDLE Handle
Definition: rtltypes.h:1369
ACCESS_MASK GrantedAccess
Definition: winternl.h:1251
PRTL_USER_PROCESS_PARAMETERS ProcessParameters
Definition: btrfs_drv.h:1913
Definition: parser.c:49
Definition: ps.c:97
PVOID HANDLE
Definition: typedefs.h:73
int ret
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define WINAPI
Definition: msvc.h:6
#define ERROR_SHARING_VIOLATION
Definition: winerror.h:135
#define ERROR_PATH_NOT_FOUND
Definition: winerror.h:106
#define ERROR_BAD_PATHNAME
Definition: winerror.h:233
__wchar_t WCHAR
Definition: xmlstorage.h:180