VirtualBox

source: kBuild/trunk/src/lib/nt/ntstuff.h@ 2945

Last change on this file since 2945 was 2913, checked in by bird, 8 years ago

report STATUS_DELETE_PENDING as ENOENT.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 19.9 KB
Line 
1/* $Id: ntstuff.h 2913 2016-09-14 14:06:32Z bird $ */
2/** @file
3 * Definitions, types, prototypes and globals for NT.
4 */
5
6/*
7 * Copyright (c) 2005-2013 knut st. osmundsen <[email protected]>
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 * IN THE SOFTWARE.
26 *
27 * Alternatively, the content of this file may be used under the terms of the
28 * GPL version 2 or later, or LGPL version 2.1 or later.
29 */
30
31
32#ifndef ___nt_ntstuff_h
33#define ___nt_ntstuff_h
34
35#define timeval timeval_Windows
36#define WIN32_NO_STATUS
37#include <Windows.h>
38#include <winternl.h>
39#undef WIN32_NO_STATUS
40#include <ntstatus.h>
41#undef timeval
42
43
44/** @defgroup grp_nt_ntstuff NT Stuff
45 * @{ */
46
47typedef LONG MY_NTSTATUS;
48typedef ULONG MY_ACCESS_MASK;
49
50typedef struct MY_IO_STATUS_BLOCK
51{
52 union
53 {
54 MY_NTSTATUS Status;
55 PVOID Pointer;
56 } u;
57 ULONG_PTR Information;
58} MY_IO_STATUS_BLOCK;
59
60typedef VOID WINAPI MY_IO_APC_ROUTINE(PVOID, MY_IO_STATUS_BLOCK *, ULONG);
61
62typedef struct MY_UNICODE_STRING
63{
64 USHORT Length;
65 USHORT MaximumLength;
66 PWSTR Buffer;
67} MY_UNICODE_STRING;
68
69typedef struct MY_STRING
70{
71 USHORT Length;
72 USHORT MaximumLength;
73 PCHAR Buffer;
74} MY_STRING;
75typedef MY_STRING MY_ANSI_STRING;
76
77typedef struct MY_CURDIR
78{
79 UNICODE_STRING DosPath;
80 HANDLE Handle;
81} MY_CURDIR;
82typedef MY_CURDIR *PMY_CURDIR;
83
84typedef struct MY_RTL_DRIVE_LETTER_CURDIR
85{
86 USHORT Flags;
87 USHORT Length;
88 ULONG TimeStamp;
89 MY_ANSI_STRING DosPath;
90} MY_RTL_DRIVE_LETTER_CURDIR;
91typedef MY_RTL_DRIVE_LETTER_CURDIR *PRTL_DRIVE_LETTER_CURDIR;
92
93typedef struct MY_RTL_USER_PROCESS_PARAMETERS
94{
95 ULONG MaximumLength;
96 ULONG Length;
97 ULONG Flags;
98 ULONG DebugFlags;
99 HANDLE ConsoleHandle;
100 ULONG ConsoleFlags;
101 HANDLE StandardInput;
102 HANDLE StandardOutput;
103 HANDLE StandardError;
104 MY_CURDIR CurrentDirectory;
105 MY_UNICODE_STRING DllPath;
106 MY_UNICODE_STRING ImagePathName;
107 MY_UNICODE_STRING CommandLine;
108 PWSTR Environment;
109 ULONG StartingX;
110 ULONG StartingY;
111 ULONG CountX;
112 ULONG CountY;
113 ULONG CountCharsX;
114 ULONG CountCharsY;
115 ULONG FillAttribute;
116 ULONG WindowFlags;
117 ULONG ShowWindowFlags;
118 MY_UNICODE_STRING WindowTitle;
119 MY_UNICODE_STRING DesktopInfo;
120 MY_UNICODE_STRING ShellInfo;
121 MY_UNICODE_STRING RuntimeInfo;
122 MY_RTL_DRIVE_LETTER_CURDIR CurrentDirectories[0x20];
123 SIZE_T EnvironmentSize; /* >= Vista+ */
124 SIZE_T EnvironmentVersion; /* >= Windows 7. */
125 PVOID PackageDependencyData; /* >= Windows 8 or Windows 8.1. */
126 ULONG ProcessGroupId; /* >= Windows 8 or Windows 8.1. */
127} MY_RTL_USER_PROCESS_PARAMETERS;
128typedef MY_RTL_USER_PROCESS_PARAMETERS *PMY_RTL_USER_PROCESS_PARAMETERS;
129
130typedef struct MY_OBJECT_ATTRIBUTES
131{
132 ULONG Length;
133 HANDLE RootDirectory;
134 MY_UNICODE_STRING *ObjectName;
135 ULONG Attributes;
136 PVOID SecurityDescriptor;
137 PVOID SecurityQualityOfService;
138} MY_OBJECT_ATTRIBUTES;
139
140#define MyInitializeObjectAttributes(a_pAttr, a_pName, a_fAttribs, a_hRoot, a_pSecDesc) \
141 do { \
142 (a_pAttr)->Length = sizeof(MY_OBJECT_ATTRIBUTES); \
143 (a_pAttr)->RootDirectory = (a_hRoot); \
144 (a_pAttr)->Attributes = (a_fAttribs); \
145 (a_pAttr)->ObjectName = (a_pName); \
146 (a_pAttr)->SecurityDescriptor = (a_pSecDesc); \
147 (a_pAttr)->SecurityQualityOfService = NULL; \
148 } while (0)
149
150
151
152typedef struct MY_FILE_BASIC_INFORMATION
153{
154 LARGE_INTEGER CreationTime;
155 LARGE_INTEGER LastAccessTime;
156 LARGE_INTEGER LastWriteTime;
157 LARGE_INTEGER ChangeTime;
158 ULONG FileAttributes;
159} MY_FILE_BASIC_INFORMATION;
160
161typedef struct MY_FILE_STANDARD_INFORMATION
162{
163 LARGE_INTEGER AllocationSize;
164 LARGE_INTEGER EndOfFile;
165 ULONG NumberOfLinks;
166 BOOLEAN DeletePending;
167 BOOLEAN Directory;
168} MY_FILE_STANDARD_INFORMATION;
169
170typedef struct MY_FILE_NETWORK_OPEN_INFORMATION
171{
172 LARGE_INTEGER CreationTime;
173 LARGE_INTEGER LastAccessTime;
174 LARGE_INTEGER LastWriteTime;
175 LARGE_INTEGER ChangeTime;
176 LARGE_INTEGER AllocationSize;
177 LARGE_INTEGER EndOfFile;
178 ULONG FileAttributes;
179} MY_FILE_NETWORK_OPEN_INFORMATION;
180
181typedef struct MY_FILE_INTERNAL_INFORMATION
182{
183 LARGE_INTEGER IndexNumber;
184} MY_FILE_INTERNAL_INFORMATION;
185
186typedef struct MY_FILE_EA_INFORMATION
187{
188 ULONG EaSize;
189} MY_FILE_EA_INFORMATION;
190
191typedef struct MY_FILE_ACCESS_INFORMATION
192{
193 ACCESS_MASK AccessFlags;
194} MY_FILE_ACCESS_INFORMATION;
195
196typedef struct MY_FILE_POSITION_INFORMATION
197{
198 LARGE_INTEGER CurrentByteOffset;
199} MY_FILE_POSITION_INFORMATION;
200
201typedef struct MY_FILE_MODE_INFORMATION
202{
203 ULONG Mode;
204} MY_FILE_MODE_INFORMATION;
205
206typedef struct MY_FILE_ALIGNMENT_INFORMATION
207{
208 ULONG AlignmentRequirement;
209} MY_FILE_ALIGNMENT_INFORMATION;
210
211typedef struct MY_FILE_NAME_INFORMATION
212{
213 ULONG FileNameLength;
214 WCHAR FileName[1];
215} MY_FILE_NAME_INFORMATION;
216
217typedef struct MY_FILE_ALL_INFORMATION
218{
219 MY_FILE_BASIC_INFORMATION BasicInformation;
220 MY_FILE_STANDARD_INFORMATION StandardInformation;
221 MY_FILE_INTERNAL_INFORMATION InternalInformation;
222 MY_FILE_EA_INFORMATION EaInformation;
223 MY_FILE_ACCESS_INFORMATION AccessInformation;
224 MY_FILE_POSITION_INFORMATION PositionInformation;
225 MY_FILE_MODE_INFORMATION ModeInformation;
226 MY_FILE_ALIGNMENT_INFORMATION AlignmentInformation;
227 MY_FILE_NAME_INFORMATION NameInformation;
228} MY_FILE_ALL_INFORMATION;
229
230typedef struct MY_FILE_ATTRIBUTE_TAG_INFORMATION
231{
232 ULONG FileAttributes;
233 ULONG ReparseTag;
234} MY_FILE_ATTRIBUTE_TAG_INFORMATION;
235
236
237typedef struct MY_FILE_NAMES_INFORMATION
238{
239 ULONG NextEntryOffset;
240 ULONG FileIndex;
241 ULONG FileNameLength;
242 WCHAR FileName[1];
243} MY_FILE_NAMES_INFORMATION;
244/** The sizeof(MY_FILE_NAMES_INFORMATION) without the FileName. */
245#define MIN_SIZEOF_MY_FILE_NAMES_INFORMATION (4 + 4 + 4)
246
247
248typedef struct MY_FILE_ID_FULL_DIR_INFORMATION
249{
250 ULONG NextEntryOffset;
251 ULONG FileIndex;
252 LARGE_INTEGER CreationTime;
253 LARGE_INTEGER LastAccessTime;
254 LARGE_INTEGER LastWriteTime;
255 LARGE_INTEGER ChangeTime;
256 LARGE_INTEGER EndOfFile;
257 LARGE_INTEGER AllocationSize;
258 ULONG FileAttributes;
259 ULONG FileNameLength;
260 ULONG EaSize;
261 LARGE_INTEGER FileId;
262 WCHAR FileName[1];
263} MY_FILE_ID_FULL_DIR_INFORMATION;
264/** The sizeof(MY_FILE_NAMES_INFORMATION) without the FileName. */
265#define MIN_SIZEOF_MY_FILE_ID_FULL_DIR_INFORMATION ( (size_t)&((MY_FILE_ID_FULL_DIR_INFORMATION *)0)->FileName )
266
267typedef struct MY_FILE_BOTH_DIR_INFORMATION
268{
269 ULONG NextEntryOffset;
270 ULONG FileIndex;
271 LARGE_INTEGER CreationTime;
272 LARGE_INTEGER LastAccessTime;
273 LARGE_INTEGER LastWriteTime;
274 LARGE_INTEGER ChangeTime;
275 LARGE_INTEGER EndOfFile;
276 LARGE_INTEGER AllocationSize;
277 ULONG FileAttributes;
278 ULONG FileNameLength;
279 ULONG EaSize;
280 CCHAR ShortNameLength;
281 WCHAR ShortName[12];
282 WCHAR FileName[1];
283} MY_FILE_BOTH_DIR_INFORMATION;
284/** The sizeof(MY_FILE_BOTH_DIR_INFORMATION) without the FileName. */
285#define MIN_SIZEOF_MY_FILE_BOTH_DIR_INFORMATION ( (size_t)&((MY_FILE_BOTH_DIR_INFORMATION *)0)->FileName )
286
287
288typedef struct MY_FILE_ID_BOTH_DIR_INFORMATION
289{
290 ULONG NextEntryOffset;
291 ULONG FileIndex;
292 LARGE_INTEGER CreationTime;
293 LARGE_INTEGER LastAccessTime;
294 LARGE_INTEGER LastWriteTime;
295 LARGE_INTEGER ChangeTime;
296 LARGE_INTEGER EndOfFile;
297 LARGE_INTEGER AllocationSize;
298 ULONG FileAttributes;
299 ULONG FileNameLength;
300 ULONG EaSize;
301 CCHAR ShortNameLength;
302 WCHAR ShortName[12];
303 LARGE_INTEGER FileId;
304 WCHAR FileName[1];
305} MY_FILE_ID_BOTH_DIR_INFORMATION;
306/** The sizeof(MY_FILE_NAMES_INFORMATION) without the FileName. */
307#define MIN_SIZEOF_MY_FILE_ID_BOTH_DIR_INFORMATION ( (size_t)&((MY_FILE_ID_BOTH_DIR_INFORMATION *)0)->FileName )
308
309
310typedef struct MY_FILE_DISPOSITION_INFORMATION
311{
312 BOOLEAN DeleteFile;
313} MY_FILE_DISPOSITION_INFORMATION;
314
315
316typedef enum MY_FILE_INFORMATION_CLASS
317{
318 MyFileDirectoryInformation = 1,
319 MyFileFullDirectoryInformation, /* = 2 */
320 MyFileBothDirectoryInformation, /* = 3 */
321 MyFileBasicInformation, /* = 4 */
322 MyFileStandardInformation, /* = 5 */
323 MyFileInternalInformation, /* = 6 */
324 MyFileEaInformation, /* = 7 */
325 MyFileAccessInformation, /* = 8 */
326 MyFileNameInformation, /* = 9 */
327 MyFileRenameInformation, /* = 10 */
328 MyFileLinkInformation, /* = 11 */
329 MyFileNamesInformation, /* = 12 */
330 MyFileDispositionInformation, /* = 13 */
331 MyFilePositionInformation, /* = 14 */
332 MyFileFullEaInformation, /* = 15 */
333 MyFileModeInformation, /* = 16 */
334 MyFileAlignmentInformation, /* = 17 */
335 MyFileAllInformation, /* = 18 */
336 MyFileAllocationInformation, /* = 19 */
337 MyFileEndOfFileInformation, /* = 20 */
338 MyFileAlternateNameInformation, /* = 21 */
339 MyFileStreamInformation, /* = 22 */
340 MyFilePipeInformation, /* = 23 */
341 MyFilePipeLocalInformation, /* = 24 */
342 MyFilePipeRemoteInformation, /* = 25 */
343 MyFileMailslotQueryInformation, /* = 26 */
344 MyFileMailslotSetInformation, /* = 27 */
345 MyFileCompressionInformation, /* = 28 */
346 MyFileObjectIdInformation, /* = 29 */
347 MyFileCompletionInformation, /* = 30 */
348 MyFileMoveClusterInformation, /* = 31 */
349 MyFileQuotaInformation, /* = 32 */
350 MyFileReparsePointInformation, /* = 33 */
351 MyFileNetworkOpenInformation, /* = 34 */
352 MyFileAttributeTagInformation, /* = 35 */
353 MyFileTrackingInformation, /* = 36 */
354 MyFileIdBothDirectoryInformation, /* = 37 */
355 MyFileIdFullDirectoryInformation, /* = 38 */
356 MyFileValidDataLengthInformation, /* = 39 */
357 MyFileShortNameInformation, /* = 40 */
358 MyFileIoCompletionNotificationInformation, /* = 41 */
359 MyFileIoStatusBlockRangeInformation, /* = 42 */
360 MyFileIoPriorityHintInformation, /* = 43 */
361 MyFileSfioReserveInformation, /* = 44 */
362 MyFileSfioVolumeInformation, /* = 45 */
363 MyFileHardLinkInformation, /* = 46 */
364 MyFileProcessIdsUsingFileInformation, /* = 47 */
365 MyFileNormalizedNameInformation, /* = 48 */
366 MyFileNetworkPhysicalNameInformation, /* = 49 */
367 MyFileIdGlobalTxDirectoryInformation, /* = 50 */
368 MyFileIsRemoteDeviceInformation, /* = 51 */
369 MyFileAttributeCacheInformation, /* = 52 */
370 MyFileNumaNodeInformation, /* = 53 */
371 MyFileStandardLinkInformation, /* = 54 */
372 MyFileRemoteProtocolInformation, /* = 55 */
373 MyFileMaximumInformation
374} MY_FILE_INFORMATION_CLASS;
375
376
377typedef struct MY_FILE_FS_VOLUME_INFORMATION
378{
379 LARGE_INTEGER VolumeCreationTime;
380 ULONG VolumeSerialNumber;
381 ULONG VolumeLabelLength;
382 BOOLEAN SupportsObjects;
383 WCHAR VolumeLabel[1];
384} MY_FILE_FS_VOLUME_INFORMATION;
385
386typedef struct _MY_FILE_FS_ATTRIBUTE_INFORMATION
387{
388 ULONG FileSystemAttributes;
389 LONG MaximumComponentNameLength;
390 ULONG FileSystemNameLength;
391 WCHAR FileSystemName[1];
392} MY_FILE_FS_ATTRIBUTE_INFORMATION;
393
394typedef enum MY_FSINFOCLASS
395{
396 MyFileFsVolumeInformation = 1,
397 MyFileFsLabelInformation, /* = 2 */
398 MyFileFsSizeInformation, /* = 3 */
399 MyFileFsDeviceInformation, /* = 4 */
400 MyFileFsAttributeInformation, /* = 5 */
401 MyFileFsControlInformation, /* = 6 */
402 MyFileFsFullSizeInformation, /* = 7 */
403 MyFileFsObjectIdInformation, /* = 8 */
404 MyFileFsDriverPathInformation, /* = 9 */
405 MyFileFsVolumeFlagsInformation, /* = 10 */
406 MyFileFsMaximumInformation
407} MY_FS_INFORMATION_CLASS;
408
409
410typedef struct MY_RTLP_CURDIR_REF
411{
412 LONG RefCount;
413 HANDLE Handle;
414} MY_RTLP_CURDIR_REF;
415
416typedef struct MY_RTL_RELATIVE_NAME_U
417{
418 MY_UNICODE_STRING RelativeName;
419 HANDLE ContainingDirectory;
420 MY_RTLP_CURDIR_REF CurDirRef;
421} MY_RTL_RELATIVE_NAME_U;
422
423
424#ifndef OBJ_INHERIT
425# define OBJ_INHERIT 0x00000002U
426# define OBJ_PERMANENT 0x00000010U
427# define OBJ_EXCLUSIVE 0x00000020U
428# define OBJ_CASE_INSENSITIVE 0x00000040U
429# define OBJ_OPENIF 0x00000080U
430# define OBJ_OPENLINK 0x00000100U
431# define OBJ_KERNEL_HANDLE 0x00000200U
432# define OBJ_FORCE_ACCESS_CHECK 0x00000400U
433# define OBJ_VALID_ATTRIBUTES 0x000007f2U
434#endif
435
436#ifndef FILE_OPEN
437# define FILE_SUPERSEDE 0x00000000U
438# define FILE_OPEN 0x00000001U
439# define FILE_CREATE 0x00000002U
440# define FILE_OPEN_IF 0x00000003U
441# define FILE_OVERWRITE 0x00000004U
442# define FILE_OVERWRITE_IF 0x00000005U
443# define FILE_MAXIMUM_DISPOSITION 0x00000005U
444#endif
445
446#ifndef FILE_DIRECTORY_FILE
447# define FILE_DIRECTORY_FILE 0x00000001U
448# define FILE_WRITE_THROUGH 0x00000002U
449# define FILE_SEQUENTIAL_ONLY 0x00000004U
450# define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008U
451# define FILE_SYNCHRONOUS_IO_ALERT 0x00000010U
452# define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020U
453# define FILE_NON_DIRECTORY_FILE 0x00000040U
454# define FILE_CREATE_TREE_CONNECTION 0x00000080U
455# define FILE_COMPLETE_IF_OPLOCKED 0x00000100U
456# define FILE_NO_EA_KNOWLEDGE 0x00000200U
457# define FILE_OPEN_REMOTE_INSTANCE 0x00000400U
458# define FILE_RANDOM_ACCESS 0x00000800U
459# define FILE_DELETE_ON_CLOSE 0x00001000U
460# define FILE_OPEN_BY_FILE_ID 0x00002000U
461# define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000U
462# define FILE_NO_COMPRESSION 0x00008000U
463# define FILE_RESERVE_OPFILTER 0x00100000U
464# define FILE_OPEN_REPARSE_POINT 0x00200000U
465# define FILE_OPEN_NO_RECALL 0x00400000U
466# define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000U
467#endif
468
469
470/** @name NT status codes and associated macros.
471 * @{ */
472#define MY_NT_SUCCESS(a_ntRc) ((MY_NTSTATUS)(a_ntRc) >= 0)
473#define MY_NT_FAILURE(a_ntRc) ((MY_NTSTATUS)(a_ntRc) < 0)
474#define MY_STATUS_NO_MORE_FILES ((MY_NTSTATUS)0x80000006)
475#define MY_STATUS_OBJECT_NAME_INVALID ((MY_NTSTATUS)0xc0000033)
476#define MY_STATUS_OBJECT_NAME_NOT_FOUND ((MY_NTSTATUS)0xc0000034)
477#define MY_STATUS_OBJECT_PATH_INVALID ((MY_NTSTATUS)0xc0000039)
478#define MY_STATUS_OBJECT_PATH_NOT_FOUND ((MY_NTSTATUS)0xc000003a)
479#define MY_STATUS_OBJECT_PATH_SYNTAX_BAD ((MY_NTSTATUS)0xc000003b)
480/** @} */
481
482
483/*******************************************************************************
484* Global Variables *
485*******************************************************************************/
486extern MY_NTSTATUS (WINAPI * g_pfnNtClose)(HANDLE);
487extern MY_NTSTATUS (WINAPI * g_pfnNtCreateFile)(PHANDLE, MY_ACCESS_MASK, MY_OBJECT_ATTRIBUTES *, MY_IO_STATUS_BLOCK *,
488 PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG);
489extern MY_NTSTATUS (WINAPI * g_pfnNtDeleteFile)(MY_OBJECT_ATTRIBUTES *);
490extern MY_NTSTATUS (WINAPI * g_pfnNtReadFile)(HANDLE hFile, HANDLE hEvent, MY_IO_APC_ROUTINE *pfnApc, PVOID pvApcCtx,
491 MY_IO_STATUS_BLOCK *, PVOID pvBuf, ULONG cbToRead, PLARGE_INTEGER poffFile,
492 PULONG puKey);
493extern MY_NTSTATUS (WINAPI * g_pfnNtQueryInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *,
494 PVOID, LONG, MY_FILE_INFORMATION_CLASS);
495extern MY_NTSTATUS (WINAPI * g_pfnNtQueryVolumeInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *,
496 PVOID, LONG, MY_FS_INFORMATION_CLASS);
497extern MY_NTSTATUS (WINAPI * g_pfnNtQueryDirectoryFile)(HANDLE, HANDLE, MY_IO_APC_ROUTINE *, PVOID, MY_IO_STATUS_BLOCK *,
498 PVOID, ULONG, MY_FILE_INFORMATION_CLASS, BOOLEAN,
499 MY_UNICODE_STRING *, BOOLEAN);
500extern MY_NTSTATUS (WINAPI * g_pfnNtQueryAttributesFile)(MY_OBJECT_ATTRIBUTES *, MY_FILE_BASIC_INFORMATION *);
501extern MY_NTSTATUS (WINAPI * g_pfnNtQueryFullAttributesFile)(MY_OBJECT_ATTRIBUTES *, MY_FILE_NETWORK_OPEN_INFORMATION *);
502extern MY_NTSTATUS (WINAPI * g_pfnNtSetInformationFile)(HANDLE, MY_IO_STATUS_BLOCK *, PVOID, LONG, MY_FILE_INFORMATION_CLASS);
503extern BOOLEAN (WINAPI * g_pfnRtlDosPathNameToNtPathName_U)(PCWSTR, MY_UNICODE_STRING *, PCWSTR *, MY_RTL_RELATIVE_NAME_U *);
504extern MY_NTSTATUS (WINAPI * g_pfnRtlAnsiStringToUnicodeString)(MY_UNICODE_STRING *, MY_ANSI_STRING const *, BOOLEAN);
505extern BOOLEAN (WINAPI * g_pfnRtlEqualUnicodeString)(MY_UNICODE_STRING const *pUniStr1, MY_UNICODE_STRING const *pUniStr2,
506 BOOLEAN fCaseInsensitive);
507extern BOOLEAN (WINAPI * g_pfnRtlEqualString)(MY_ANSI_STRING const *pAnsiStr1, MY_ANSI_STRING const *pAnsiStr2,
508 BOOLEAN fCaseInsensitive);
509extern UCHAR (WINAPI * g_pfnRtlUpperChar)(UCHAR uch);
510extern ULONG (WINAPI * g_pfnRtlNtStatusToDosError)(MY_NTSTATUS rcNt);
511
512
513/** @} */
514
515#endif
516
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette