ReactOS  0.4.14-dev-77-gd9e7c48
NtQueryVolumeInformationFile.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS API Tests
3  * LICENSE: GPLv2+ - See COPYING in the top level directory
4  * PURPOSE: NtQueryVolumeInformationFile tests
5  * PROGRAMMER: Víctor Martínez Calvo <vicmarcal@gmail.com>
6  */
7 
8 #include "precomp.h"
9 
10 static
11 VOID
13 {
15  FILE_FS_DEVICE_INFORMATION FileFsDevice;
17 
18  /*Testing VALID handle, with NULL IN parameters*/
19  SetLastError(0xdeadb33f);
21  ok(status == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got 0x%lx\n", status);
22  ok(GetLastError() == 0xdeadb33f, "Expected 0xdeadb33f, got %lx\n", GetLastError());
23 
24  SetLastError(0xcacacaca);
26  ok(status == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got 0x%lx\n", status);
27  ok(GetLastError() == 0xcacacaca, "Expected 0xcacacaca, got %lx\n", GetLastError());
28 
29  SetLastError(0xdadadada);
31  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got 0x%lx\n", status);
32  ok(GetLastError() == 0xdadadada, "Expected 0xdadadada, got %lx\n", GetLastError());
33 
34  /*All valid, invalid FsInformationClass value.*/
35  SetLastError(0xdeadbeef);
37  ok(status == STATUS_INVALID_INFO_CLASS, "Expected STATUS_INVALID_INFO_CLASS, got 0x%lx\n", status);
38  ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %lx\n", GetLastError());
39 
40  /*Testing NULL handle*/
41  SetLastError(0xdeadbeef);
43  ok(status == STATUS_INVALID_HANDLE, "Expected STATUS_INVALID_HANDLE, got 0x%lx\n", status);
44  ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %lx\n", GetLastError());
45 
46  /*Testing INVALID_HANDLE_VALUE*/
47  SetLastError(0xdeaddead);
49  ok(status == STATUS_OBJECT_TYPE_MISMATCH, "Expected STATUS_OBJECT_TYPE_MISMATCH, got 0x%lx\n", status);
50  ok(GetLastError() == 0xdeaddead, "Expected 0xdeaddead, got %lx\n", GetLastError());
51 
52  /*Almost all NULL. Then it checks against the Length!*/
53  SetLastError(0xdeadbeef);
55  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got 0x%lx\n", status);
56  ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %lx\n", GetLastError());
57 }
58 
59 static
60 VOID
62 {
64  ULONG Buffer[(sizeof(FILE_FS_VOLUME_INFORMATION) + MAX_PATH * sizeof(WCHAR)) / sizeof(ULONG)];
67 
69  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
70 
71  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
73  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
74  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
75  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
76 
78  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
79 
80  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
82  ok(status == STATUS_DATATYPE_MISALIGNMENT, "Got status 0x%lx\n", status);
83  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
84  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
85 
86  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
88  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
89  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
90  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
91 
92  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
94  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
95  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
96  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
97 
98  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
100  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
101  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
102  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
103 
104  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
105  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
107  ok(status == STATUS_SUCCESS || status == STATUS_BUFFER_OVERFLOW, "Got status 0x%lx\n", status);
108  ok(IoStatusBlock.Status == status, "IoStatusBlock.Status = 0x%lx, expected 0x%lx\n", IoStatusBlock.Status, status);
109  if (status == STATUS_SUCCESS)
110  {
111  ok(VolumeInfo->VolumeLabelLength <= sizeof(FILE_FS_VOLUME_INFORMATION) - FIELD_OFFSET(FILE_FS_VOLUME_INFORMATION, VolumeLabel),
112  "VolumeInfo->VolumeLabelLength = %Iu\n", VolumeInfo->VolumeLabelLength);
114  "IoStatusBlock.Information = %Iu, expected >=%lu\n", IoStatusBlock.Information, (ULONG)FIELD_OFFSET(FILE_FS_VOLUME_INFORMATION, VolumeLabel));
116  "IoStatusBlock.Information = %Iu, expected <=%lu\n", IoStatusBlock.Information, (ULONG)sizeof(FILE_FS_VOLUME_INFORMATION));
117  }
118  else
119  {
120  ok(VolumeInfo->VolumeLabelLength > sizeof(FILE_FS_VOLUME_INFORMATION) - FIELD_OFFSET(FILE_FS_VOLUME_INFORMATION, VolumeLabel),
121  "VolumeInfo->VolumeLabelLength = %Iu\n", VolumeInfo->VolumeLabelLength);
123  "IoStatusBlock.Information = %Iu, expected %lu\n", IoStatusBlock.Information, (ULONG)sizeof(FILE_FS_VOLUME_INFORMATION));
124  }
125  ok(VolumeInfo->VolumeLabel[VolumeInfo->VolumeLabelLength / sizeof(WCHAR)] == 0x5555,
126  "Got %x\n", VolumeInfo->VolumeLabel[VolumeInfo->VolumeLabelLength / sizeof(WCHAR)]);
127 
128  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
129  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
131  ok(status == STATUS_SUCCESS, "Got status 0x%lx\n", status);
132  ok(IoStatusBlock.Status == STATUS_SUCCESS, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
133  ok(IoStatusBlock.Information == FIELD_OFFSET(FILE_FS_VOLUME_INFORMATION, VolumeLabel) + VolumeInfo->VolumeLabelLength,
134  "IoStatusBlock.Information = %Iu, expected %lu+%lu\n", IoStatusBlock.Information, (ULONG)FIELD_OFFSET(FILE_FS_VOLUME_INFORMATION, VolumeLabel), VolumeInfo->VolumeLabelLength);
135  ok(VolumeInfo->VolumeCreationTime.QuadPart != 0x5555555555555555, "VolumeInfo->VolumeCreationTime = %I64d\n", VolumeInfo->VolumeCreationTime.QuadPart);
136  ok(VolumeInfo->VolumeSerialNumber != 0x55555555, "VolumeInfo->VolumeSerialNumber = %lu\n", VolumeInfo->VolumeSerialNumber);
137  ok(VolumeInfo->SupportsObjects == FALSE || VolumeInfo->SupportsObjects == TRUE, "VolumeInfo->SupportsObjects = %u\n", VolumeInfo->SupportsObjects);
138  ok(VolumeInfo->VolumeLabelLength % sizeof(WCHAR) == 0, "VolumeInfo->VolumeLabelLength = %Iu\n", VolumeInfo->VolumeLabelLength);
139  if (VolumeInfo->VolumeLabelLength >= sizeof(WCHAR))
140  ok(VolumeInfo->VolumeLabel[VolumeInfo->VolumeLabelLength / sizeof(WCHAR) - 1] != 0x5555, "Incorrect VolumeLabel or Length\n");
141  trace("VolumeLabel = %.*ls\n", (int)VolumeInfo->VolumeLabelLength / sizeof(WCHAR), VolumeInfo->VolumeLabel);
142  ok(VolumeInfo->VolumeLabel[VolumeInfo->VolumeLabelLength / sizeof(WCHAR)] == 0x5555,
143  "Got %x\n", VolumeInfo->VolumeLabel[VolumeInfo->VolumeLabelLength / sizeof(WCHAR)]);
144 }
145 
146 static
147 VOID
149 {
151  ULONG Buffer[(sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 32 * sizeof(WCHAR)) / sizeof(ULONG)];
154 
156  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
157 
158  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
160  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
161  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
162  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
163 
165  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
166 
167  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
169  ok(status == STATUS_DATATYPE_MISALIGNMENT, "Got status 0x%lx\n", status);
170  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
171  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
172 
173  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
175  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
176  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
177  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
178 
179  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
181  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
182  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
183  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
184 
185  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
187  ok(status == STATUS_INFO_LENGTH_MISMATCH, "Got status 0x%lx\n", status);
188  ok(IoStatusBlock.Status == 0x55555555, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
189  ok(IoStatusBlock.Information == (ULONG_PTR)0x5555555555555555, "IoStatusBlock.Information = %Iu\n", IoStatusBlock.Information);
190 
191  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
192  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
194  ok(status == STATUS_BUFFER_OVERFLOW, "Got status 0x%lx\n", status);
195  ok(IoStatusBlock.Status == STATUS_BUFFER_OVERFLOW, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
197  "AttributeInfo->FileSystemNameLength = %Iu\n", AttributeInfo->FileSystemNameLength);
199  "IoStatusBlock.Information = %Iu, expected %lu\n", IoStatusBlock.Information, (ULONG)sizeof(FILE_FS_ATTRIBUTE_INFORMATION));
200  ok(AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)] == 0x5555,
201  "Got %x\n", AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)]);
202 
203  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
204  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
206  ok(status == STATUS_BUFFER_OVERFLOW, "Got status 0x%lx\n", status);
207  ok(IoStatusBlock.Status == STATUS_BUFFER_OVERFLOW, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
209  "AttributeInfo->FileSystemNameLength = %Iu\n", AttributeInfo->FileSystemNameLength);
211  "IoStatusBlock.Information = %Iu, expected %lu\n", IoStatusBlock.Information, (ULONG)sizeof(FILE_FS_ATTRIBUTE_INFORMATION));
212  ok((AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)] & 0xff00) == 0x5500,
213  "Got %x\n", AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)]);
214  ok(AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR) + 1] == 0x5555,
215  "Got %x\n", AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR) + 1]);
216 
217  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
218  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
220  if (status != STATUS_SUCCESS)
221  {
222  ok(status == STATUS_BUFFER_OVERFLOW, "Got status 0x%lx\n", status);
223  ok(IoStatusBlock.Status == STATUS_BUFFER_OVERFLOW, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
224  ok(AttributeInfo->FileSystemNameLength == sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + sizeof(WCHAR) - FIELD_OFFSET(FILE_FS_ATTRIBUTE_INFORMATION, FileSystemName),
225  "AttributeInfo->FileSystemNameLength = %Iu\n", AttributeInfo->FileSystemNameLength);
227  "IoStatusBlock.Information = %Iu, expected %lu\n", IoStatusBlock.Information, (ULONG)sizeof(FILE_FS_ATTRIBUTE_INFORMATION));
228  ok(AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)] == 0x5555,
229  "Got %x\n", AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)]);
230  }
231 
232  RtlFillMemory(Buffer, sizeof(Buffer), 0x55);
233  RtlFillMemory(&IoStatusBlock, sizeof(IoStatusBlock), 0x55);
235  ok(status == STATUS_SUCCESS, "Got status 0x%lx\n", status);
236  ok(IoStatusBlock.Status == STATUS_SUCCESS, "IoStatusBlock.Status = 0x%lx\n", IoStatusBlock.Status);
238  "IoStatusBlock.Information = %Iu, expected %lu+%lu\n", IoStatusBlock.Information, (ULONG)FIELD_OFFSET(FILE_FS_ATTRIBUTE_INFORMATION, FileSystemName), AttributeInfo->FileSystemNameLength);
239  ok(AttributeInfo->FileSystemAttributes != 0x55555555, "AttributeInfo->FileSystemAttributes = 0x%lx\n", AttributeInfo->FileSystemAttributes);
240  ok(AttributeInfo->MaximumComponentNameLength != 0x55555555, "AttributeInfo->MaximumComponentNameLength = 0x%lx\n", AttributeInfo->MaximumComponentNameLength);
241  ok(AttributeInfo->FileSystemNameLength % sizeof(WCHAR) == 0, "AttributeInfo->FileSystemNameLength = %Iu\n", AttributeInfo->FileSystemNameLength);
242  ok(!wcsncmp(AttributeInfo->FileSystemName, L"NTFS", 4) ||
243  !wcsncmp(AttributeInfo->FileSystemName, L"FAT", 3) ||
244  !wcsncmp(AttributeInfo->FileSystemName, L"FAT32", 5),
245  "FileSystemName = %.*ls\n", (int)AttributeInfo->FileSystemNameLength / sizeof(WCHAR), AttributeInfo->FileSystemName);
246  trace("FileSystemName = %.*ls\n", (int)AttributeInfo->FileSystemNameLength / sizeof(WCHAR), AttributeInfo->FileSystemName);
247  ok(AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)] == 0x5555,
248  "Got %x\n", AttributeInfo->FileSystemName[AttributeInfo->FileSystemNameLength / sizeof(WCHAR)]);
249 }
250 
252 {
255  HANDLE handle;
257  UNICODE_STRING pathW;
259 
260  /*Store a valid Handle*/
263 
266  ok(status == STATUS_SUCCESS, "NtOpenFile failed: 0x%lx\n", status);
267  RtlFreeUnicodeString(&pathW);
268 
269  if (!NT_SUCCESS(status))
270  {
271  skip("NtOpenFile failed: 0x%lx\n", status);
272  return;
273  }
274 
275  /*Now all NULL. Priority check: FsInformationClass value!*/
276  SetLastError(0xcacacaca);
278  ok(status == STATUS_INVALID_INFO_CLASS, "Expected STATUS_INVALID_INFO_CLASS, got 0x%lx\n", status);
279  ok(GetLastError() == 0xcacacaca, "Expected 0xcacacaca, got %lx\n", GetLastError());
280 
281  status = NtQueryVolumeInformationFile(NULL, NULL, NULL, 0, 0x80000000);
282  ok(status == STATUS_INVALID_INFO_CLASS, "Expected STATUS_INVALID_INFO_CLASS, got 0x%lx\n", status);
283 
287 
288  NtClose(handle);
289 }
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
Definition: sock.c:82
#define TRUE
Definition: types.h:120
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
#define FILE_DIRECTORY_FILE
Definition: constants.h:491
unsigned char * PUCHAR
Definition: retypes.h:3
LONG NTSTATUS
Definition: precomp.h:26
static VOID TestFileFsAttributeInformation(HANDLE handle)
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
#define FILE_SHARE_WRITE
Definition: nt_native.h:681
struct _FILE_FS_ATTRIBUTE_INFORMATION FILE_FS_ATTRIBUTE_INFORMATION
#define STATUS_INVALID_HANDLE
Definition: ntstatus.h:231
#define FILE_SHARE_READ
Definition: compat.h:125
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
uint32_t ULONG_PTR
Definition: typedefs.h:63
smooth NULL
Definition: ftsmooth.c:416
static VOID TestFileFsVolumeInformation(HANDLE handle)
NTSTATUS NTAPI NtQueryVolumeInformationFile(IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FsInformation, IN ULONG Length, IN FS_INFORMATION_CLASS FsInformationClass)
Definition: iofunc.c:4084
Definition: bufpool.h:45
struct _FILE_FS_VOLUME_INFORMATION * PFILE_FS_VOLUME_INFORMATION
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
Definition: file.c:3951
#define STATUS_OBJECT_TYPE_MISMATCH
Definition: ntstatus.h:259
#define FILE_LIST_DIRECTORY
Definition: nt_native.h:629
#define trace
Definition: atltest.h:70
static VOID TestFileFsDeviceInformation(HANDLE handle)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define MAX_PATH
Definition: compat.h:26
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
struct _FILE_FS_ATTRIBUTE_INFORMATION * PFILE_FS_ATTRIBUTE_INFORMATION
#define SetLastError(x)
Definition: compat.h:409
Definition: cookie.c:170
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
__u8 attr
Definition: mkdosfs.c:359
#define STATUS_INVALID_INFO_CLASS
Definition: ntstatus.h:226
static const WCHAR L[]
Definition: oid.c:1250
#define SYNCHRONIZE
Definition: nt_native.h:61
#define STATUS_BUFFER_OVERFLOW
Definition: shellext.h:61
#define STATUS_ACCESS_VIOLATION
Definition: ntstatus.h:228
#define ok(value,...)
Definition: atltest.h:57
Definition: services.c:325
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
#define skip(...)
Definition: atltest.h:64
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
struct _FILE_FS_VOLUME_INFORMATION FILE_FS_VOLUME_INFORMATION
#define STATUS_DATATYPE_MISALIGNMENT
Definition: ntstatus.h:171
START_TEST(NtQueryVolumeInformationFile)
unsigned int ULONG
Definition: retypes.h:1
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
return STATUS_SUCCESS
Definition: btrfs.c:2966
#define RtlFillMemory(Dest, Length, Fill)
Definition: winternl.h:593
static SERVICE_STATUS status
Definition: service.c:31
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
Definition: ps.c:97