Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278/*++ NDK Version: 0098
Copyright (c) Alex Ionescu. All rights reserved.
Header Name:
iotypes.h
Abstract:
Type definitions for the I/O Manager.
Author:
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
--*/#ifndef _IOTYPES_H#define _IOTYPES_H
//// Dependencies//#include <umtypes.h>#include <ifssupp.h>#include <potypes.h>
//// I/O Completion Access Rights//#define IO_COMPLETION_QUERY_STATE 0x0001#ifndef NTOS_MODE_USER#define IO_COMPLETION_MODIFY_STATE 0x0002#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ SYNCHRONIZE | \ 0x3)
//// Kernel Exported Object Types//extern POBJECT_TYPE NTSYSAPI IoAdapterObjectType;extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType;extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType;extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
#else
//// Symbolic Link Access Rights//#define SYMBOLIC_LINK_QUERY 0x0001#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001#endif
#ifdef NTOS_MODE_USER
/* File System Attributes Flags */#define FILE_READ_ONLY_VOLUME 0x00080000
#endif
//// NtCreateFile Result Flags//#define FILE_SUPERSEDED 0x00000000#define FILE_OPENED 0x00000001#define FILE_CREATED 0x00000002#define FILE_OVERWRITTEN 0x00000003#define FILE_EXISTS 0x00000004#define FILE_DOES_NOT_EXIST 0x00000005
//// Pipe Flags//#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000#define FILE_PIPE_MESSAGE_TYPE 0x00000001#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000#define FILE_PIPE_MESSAGE_MODE 0x00000001#define FILE_PIPE_QUEUE_OPERATION 0x00000000#define FILE_PIPE_COMPLETE_OPERATION 0x00000001#define FILE_PIPE_INBOUND 0x00000000#define FILE_PIPE_OUTBOUND 0x00000001#define FILE_PIPE_FULL_DUPLEX 0x00000002#define FILE_PIPE_CLIENT_END 0x00000000#define FILE_PIPE_SERVER_END 0x00000001
//// NtCreateFile Attributes//#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
//// NtCreateFile OpenType Flags//#define FILE_SUPERSEDE 0x00000000#define FILE_OPEN 0x00000001#define FILE_CREATE 0x00000002#define FILE_OPEN_IF 0x00000003#define FILE_OVERWRITE 0x00000004#define FILE_OVERWRITE_IF 0x00000005#define FILE_MAXIMUM_DISPOSITION 0x00000005
//// NtCreateFile Flags//#define FILE_DIRECTORY_FILE 0x00000001#define FILE_WRITE_THROUGH 0x00000002#define FILE_SEQUENTIAL_ONLY 0x00000004#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020#define FILE_NON_DIRECTORY_FILE 0x00000040#define FILE_CREATE_TREE_CONNECTION 0x00000080#define FILE_COMPLETE_IF_OPLOCKED 0x00000100#define FILE_NO_EA_KNOWLEDGE 0x00000200#define FILE_OPEN_REMOTE_INSTANCE 0x00000400#define FILE_RANDOM_ACCESS 0x00000800#define FILE_DELETE_ON_CLOSE 0x00001000#define FILE_OPEN_BY_FILE_ID 0x00002000#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000#define FILE_NO_COMPRESSION 0x00008000#define FILE_RESERVE_OPFILTER 0x00100000#define FILE_OPEN_REPARSE_POINT 0x00200000#define FILE_OPEN_NO_RECALL 0x00400000#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
//// Device Charactertics//#define FILE_REMOVABLE_MEDIA 0x00000001#define FILE_READ_ONLY_DEVICE 0x00000002#define FILE_FLOPPY_DISKETTE 0x00000004#define FILE_WRITE_ONCE_MEDIA 0x00000008#define FILE_REMOTE_DEVICE 0x00000010#define FILE_DEVICE_IS_MOUNTED 0x00000020#define FILE_VIRTUAL_VOLUME 0x00000040#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080#define FILE_DEVICE_SECURE_OPEN 0x00000100
//// File Object Flags//#define FO_FILE_OBJECT_HAS_EXTENSION 0x00800000
//// Device Object Extension Flags//#define DOE_UNLOAD_PENDING 0x1#define DOE_DELETE_PENDING 0x2#define DOE_REMOVE_PENDING 0x4#define DOE_REMOVE_PROCESSED 0x8#define DOE_START_PENDING 0x10#define DOE_DEFAULT_SD_PRESENT 0x800
//// Device Object StartIo Flags//#define DOE_SIO_NO_KEY 0x20#define DOE_SIO_WITH_KEY 0x40#define DOE_SIO_CANCELABLE 0x80#define DOE_SIO_DEFERRED 0x100#define DOE_SIO_NO_CANCEL 0x200
//// Device Node Flags//
// this set of flags is relevant for w2k3 and newer// w2k has a completely different set of flags#define DNF_MADEUP 0x00000001#define DNF_DUPLICATE 0x00000002#define DNF_HAL_NODE 0x00000004#define DNF_REENUMERATE 0x00000008#define DNF_ENUMERATED 0x00000010#define DNF_IDS_QUERIED 0x00000020#define DNF_HAS_BOOT_CONFIG 0x00000040#define DNF_BOOT_CONFIG_RESERVED 0x00000080#define DNF_NO_RESOURCE_REQUIRED 0x00000100#define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00000200#define DNF_RESOURCE_REQUIREMENTS_CHANGED 0x00000400#define DNF_NON_STOPPED_REBALANCE 0x00000800#define DNF_LEGACY_DRIVER 0x00001000#define DNF_HAS_PROBLEM 0x00002000#define DNF_HAS_PRIVATE_PROBLEM 0x00004000#define DNF_HARDWARE_VERIFICATION 0x00008000#define DNF_DEVICE_GONE 0x00010000#define DNF_LEGACY_RESOURCE_DEVICENODE 0x00020000#define DNF_NEEDS_REBALANCE 0x00040000#define DNF_LOCKED_FOR_EJECT 0x00080000#define DNF_DRIVER_BLOCKED 0x00100000#define DNF_CHILD_WITH_INVALID_ID 0x00200000
// these flags were added in Vista or later#define DNF_ASYNC_START_NOT_SUPPORTED 0x00400000#define DNF_ASYNC_ENUMERATION_NOT_SUPPORTED 0x00800000#define DNF_LOCKED_FOR_REBALANCE 0x01000000#define DNF_UNINSTALLED 0x02000000#define DNF_NO_LOWER_DEVICE_FILTERS 0x04000000#define DNF_NO_LOWER_CLASS_FILTERS 0x08000000#define DNF_NO_SERVICE 0x10000000#define DNF_NO_UPPER_DEVICE_FILTERS 0x20000000#define DNF_NO_UPPER_CLASS_FILTERS 0x40000000#define DNF_WAITING_FOR_FDO 0x80000000
//// Device Node User Flags//#define DNUF_WILL_BE_REMOVED 0x0001#define DNUF_DONT_SHOW_IN_UI 0x0002#define DNUF_NEED_RESTART 0x0004#define DNUF_NOT_DISABLEABLE 0x0008#define DNUF_SHUTDOWN_QUERIED 0x0010#define DNUF_SHUTDOWN_SUBTREE_DONE 0x0020
//// Internal Option Flags//#define IO_ATTACH_DEVICE_API 0x80000000
//// Undocumented WMI Registration Flags//#define WMIREG_FLAG_TRACE_PROVIDER 0x00010000#define WMIREG_FLAG_TRACE_NOTIFY_MASK 0x00F00000#define WMIREG_NOTIFY_DISK_IO 0x00100000#define WMIREG_NOTIFY_TDI_IO 0x00200000
//// I/O Completion Information Class for NtQueryIoCompletionInformation//typedef enum _IO_COMPLETION_INFORMATION_CLASS{ IoCompletionBasicInformation} IO_COMPLETION_INFORMATION_CLASS;
#ifdef NTOS_MODE_USER
//// Hardware Interface Type//typedef enum _INTERFACE_TYPE{ InterfaceTypeUndefined = -1, Internal, Isa, Eisa, MicroChannel, TurboChannel, PCIBus, VMEBus, NuBus, PCMCIABus, CBus, MPIBus, MPSABus, ProcessorInternal, InternalPowerBus, PNPISABus, PNPBus, MaximumInterfaceType}INTERFACE_TYPE, *PINTERFACE_TYPE;
typedef enum _BUS_DATA_TYPE{ ConfigurationSpaceUndefined = -1, Cmos, EisaConfiguration, Pos, CbusConfiguration, PCIConfiguration, VMEConfiguration, NuBusConfiguration, PCMCIAConfiguration, MPIConfiguration, MPSAConfiguration, PNPISAConfiguration, SgiInternalConfiguration, MaximumBusDataType} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
#if defined(NT_PROCESSOR_GROUPS)
typedef USHORT IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY;
enum _IRQ_DEVICE_POLICY_USHORT { IrqPolicyMachineDefault = 0, IrqPolicyAllCloseProcessors = 1, IrqPolicyOneCloseProcessor = 2, IrqPolicyAllProcessorsInMachine = 3, IrqPolicyAllProcessorsInGroup = 3, IrqPolicySpecifiedProcessors = 4, IrqPolicySpreadMessagesAcrossAllProcessors = 5};
#else /* defined(NT_PROCESSOR_GROUPS) */
typedef enum _IRQ_DEVICE_POLICY { IrqPolicyMachineDefault = 0, IrqPolicyAllCloseProcessors, IrqPolicyOneCloseProcessor, IrqPolicyAllProcessorsInMachine, IrqPolicySpecifiedProcessors, IrqPolicySpreadMessagesAcrossAllProcessors} IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY;
#endif
typedef enum _IRQ_PRIORITY { IrqPriorityUndefined = 0, IrqPriorityLow, IrqPriorityNormal, IrqPriorityHigh} IRQ_PRIORITY, *PIRQ_PRIORITY;
#define IO_RESOURCE_PREFERRED 0x01#define IO_RESOURCE_DEFAULT 0x02#define IO_RESOURCE_ALTERNATIVE 0x08
typedef struct _IO_RESOURCE_DESCRIPTOR { UCHAR Option; UCHAR Type; UCHAR ShareDisposition; UCHAR Spare1; USHORT Flags; USHORT Spare2; union { struct { ULONG Length; ULONG Alignment; PHYSICAL_ADDRESS MinimumAddress; PHYSICAL_ADDRESS MaximumAddress; } Port; struct { ULONG Length; ULONG Alignment; PHYSICAL_ADDRESS MinimumAddress; PHYSICAL_ADDRESS MaximumAddress; } Memory; struct { ULONG MinimumVector; ULONG MaximumVector;#if defined(NT_PROCESSOR_GROUPS) IRQ_DEVICE_POLICY AffinityPolicy; USHORT Group;#else IRQ_DEVICE_POLICY AffinityPolicy;#endif IRQ_PRIORITY PriorityPolicy; KAFFINITY TargetedProcessors; } Interrupt; struct { ULONG MinimumChannel; ULONG MaximumChannel; } Dma; struct { ULONG Length; ULONG Alignment; PHYSICAL_ADDRESS MinimumAddress; PHYSICAL_ADDRESS MaximumAddress; } Generic; struct { ULONG Data[3]; } DevicePrivate; struct { ULONG Length; ULONG MinBusNumber; ULONG MaxBusNumber; ULONG Reserved; } BusNumber; struct { ULONG Priority; ULONG Reserved1; ULONG Reserved2; } ConfigData; } u;} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
typedef struct _IO_RESOURCE_LIST { USHORT Version; USHORT Revision; ULONG Count; IO_RESOURCE_DESCRIPTOR Descriptors[1];} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
typedef struct _IO_RESOURCE_REQUIREMENTS_LIST { ULONG ListSize; INTERFACE_TYPE InterfaceType; ULONG BusNumber; ULONG SlotNumber; ULONG Reserved[3]; ULONG AlternativeLists; IO_RESOURCE_LIST List[1];} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
//// File Information Classes for NtQueryInformationFile//typedef enum _FILE_INFORMATION_CLASS{ FileDirectoryInformation = 1, FileFullDirectoryInformation = 2, FileBothDirectoryInformation = 3, FileBasicInformation = 4, FileStandardInformation = 5, FileInternalInformation = 6, FileEaInformation = 7, FileAccessInformation = 8, FileNameInformation = 9, FileRenameInformation = 10, FileLinkInformation = 11, FileNamesInformation = 12, FileDispositionInformation = 13, FilePositionInformation = 14, FileFullEaInformation = 15, FileModeInformation = 16, FileAlignmentInformation = 17, FileAllInformation = 18, FileAllocationInformation = 19, FileEndOfFileInformation = 20, FileAlternateNameInformation = 21, FileStreamInformation = 22, FilePipeInformation = 23, FilePipeLocalInformation = 24, FilePipeRemoteInformation = 25, FileMailslotQueryInformation = 26, FileMailslotSetInformation = 27, FileCompressionInformation = 28, FileObjectIdInformation = 29, FileCompletionInformation = 30, FileMoveClusterInformation = 31, FileQuotaInformation = 32, FileReparsePointInformation = 33, FileNetworkOpenInformation = 34, FileAttributeTagInformation = 35, FileTrackingInformation = 36, FileIdBothDirectoryInformation = 37, FileIdFullDirectoryInformation = 38, FileValidDataLengthInformation = 39, FileShortNameInformation = 40, FileIoCompletionNotificationInformation = 41,#if (NTDDI_VERSION >= NTDDI_VISTA) || defined(__REACTOS__) FileIoStatusBlockRangeInformation = 42, FileIoPriorityHintInformation = 43, FileSfioReserveInformation = 44, FileSfioVolumeInformation = 45, FileHardLinkInformation = 46, FileProcessIdsUsingFileInformation = 47, FileNormalizedNameInformation = 48, FileNetworkPhysicalNameInformation = 49,#endif#if (NTDDI_VERSION >= NTDDI_WIN7) || defined(__REACTOS__) FileIdGlobalTxDirectoryInformation = 50, FileIsRemoteDeviceInformation = 51, FileAttributeCacheInformation = 52, // FileUnusedInformation since Windows 8.1 FileNumaNodeInformation = 53, FileStandardLinkInformation = 54, FileRemoteProtocolInformation = 55,#endif#if (NTDDI_VERSION >= NTDDI_WIN8) || defined(__REACTOS__) FileRenameInformationBypassAccessCheck = 56, FileLinkInformationBypassAccessCheck = 57, FileVolumeNameInformation = 58, FileIdInformation = 59, FileIdExtdDirectoryInformation = 60,#endif#if (NTDDI_VERSION >= NTDDI_WINBLUE) || defined(__REACTOS__) FileReplaceCompletionInformation = 61, FileHardLinkFullIdInformation = 62, FileIdExtdBothDirectoryInformation = 63, // Update 1#endif#if (NTDDI_VERSION >= NTDDI_WIN10_RS1) || defined(__REACTOS__) FileDispositionInformationEx = 64, FileRenameInformationEx = 65, FileRenameInformationExBypassAccessCheck = 66,#endif#if (NTDDI_VERSION >= NTDDI_WIN10_RS2) || defined(__REACTOS__) FileDesiredStorageClassInformation = 67, FileStatInformation = 68,#endif#if (NTDDI_VERSION >= NTDDI_WIN10_RS3) || defined(__REACTOS__) FileMemoryPartitionInformation = 69,#endif#if (NTDDI_VERSION >= NTDDI_WIN10_RS4) || defined(__REACTOS__) FileStatLxInformation = 70, FileCaseSensitiveInformation = 71,#endif#if (NTDDI_VERSION >= NTDDI_WIN10_RS5) || defined(__REACTOS__) FileLinkInformationEx = 72, FileLinkInformationExBypassAccessCheck = 73, FileStorageReserveIdInformation = 74, FileCaseSensitiveInformationForceAccessCheck = 75,#endif#if (NTDDI_VERSION >= NTDDI_WIN11) || defined(__REACTOS__) // 10.0.20150.1000 FileKnownFolderInformation = 76,#endif FileMaximumInformation} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
//// File Information Classes for NtQueryInformationFileSystem//typedef enum _FSINFOCLASS{ FileFsVolumeInformation = 1, FileFsLabelInformation, FileFsSizeInformation, FileFsDeviceInformation, FileFsAttributeInformation, FileFsControlInformation, FileFsFullSizeInformation, FileFsObjectIdInformation, FileFsDriverPathInformation, FileFsMaximumInformation} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
#endif
//// Dock Profile Status//typedef enum _PROFILE_STATUS{ DOCK_NOTDOCKDEVICE, DOCK_QUIESCENT, DOCK_ARRIVING, DOCK_DEPARTING, DOCK_EJECTIRP_COMPLETED} PROFILE_STATUS, *PPROFILE_STATUS;
//// Device Node States//typedef enum _PNP_DEVNODE_STATE{ DeviceNodeUnspecified = 0x300, DeviceNodeUninitialized = 0x301, DeviceNodeInitialized = 0x302, DeviceNodeDriversAdded = 0x303, DeviceNodeResourcesAssigned = 0x304, DeviceNodeStartPending = 0x305, DeviceNodeStartCompletion = 0x306, DeviceNodeStartPostWork = 0x307, DeviceNodeStarted = 0x308, DeviceNodeQueryStopped = 0x309, DeviceNodeStopped = 0x30a, DeviceNodeRestartCompletion = 0x30b, DeviceNodeEnumeratePending = 0x30c, DeviceNodeEnumerateCompletion = 0x30d, DeviceNodeAwaitingQueuedDeletion = 0x30e, DeviceNodeAwaitingQueuedRemoval = 0x30f, DeviceNodeQueryRemoved = 0x310, DeviceNodeRemovePendingCloses = 0x311, DeviceNodeRemoved = 0x312, DeviceNodeDeletePendingCloses = 0x313, DeviceNodeDeleted = 0x314, MaxDeviceNodeState = 0x315,} PNP_DEVNODE_STATE;
#ifdef NTOS_MODE_USER
//// I/O Status Block//typedef struct _IO_STATUS_BLOCK{ union { NTSTATUS Status; PVOID Pointer; }; ULONG_PTR Information;} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
//// File Information structures for NtQueryInformationFile//typedef struct _FILE_BASIC_INFORMATION{ LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; ULONG FileAttributes;} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
typedef struct _FILE_STANDARD_INFORMATION{ LARGE_INTEGER AllocationSize; LARGE_INTEGER EndOfFile; ULONG NumberOfLinks; BOOLEAN DeletePending; BOOLEAN Directory;} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
typedef struct _FILE_STREAM_INFORMATION{ ULONG NextEntryOffset; ULONG StreamNameLength; LARGE_INTEGER StreamSize; LARGE_INTEGER StreamAllocationSize; WCHAR StreamName[1];} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
typedef struct _FILE_NETWORK_OPEN_INFORMATION{ LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER AllocationSize; LARGE_INTEGER EndOfFile; ULONG FileAttributes;} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
typedef struct _FILE_EA_INFORMATION{ ULONG EaSize;} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
typedef struct _FILE_ACCESS_INFORMATION{ ACCESS_MASK AccessFlags;} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
typedef struct _FILE_COMPRESSION_INFORMATION{ LARGE_INTEGER CompressedFileSize; USHORT CompressionFormat; UCHAR CompressionUnitShift; UCHAR ChunkShift; UCHAR ClusterShift; UCHAR Reserved[3];} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
typedef struct _FILE_POSITION_INFORMATION{ LARGE_INTEGER CurrentByteOffset;} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
typedef struct _FILE_DISPOSITION_INFORMATION{ BOOLEAN DeleteFile;} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
typedef struct _FILE_FULL_EA_INFORMATION{ ULONG NextEntryOffset; UCHAR Flags; UCHAR EaNameLength; USHORT EaValueLength; CHAR EaName[1];} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
typedef struct _FILE_QUOTA_INFORMATION{ ULONG NextEntryOffset; ULONG SidLength; LARGE_INTEGER ChangeTime; LARGE_INTEGER QuotaUsed; LARGE_INTEGER QuotaThreshold; LARGE_INTEGER QuotaLimit; SID Sid;} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
typedef struct _FILE_INTERNAL_INFORMATION{ LARGE_INTEGER IndexNumber;} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
typedef struct _FILE_RENAME_INFORMATION{ BOOLEAN ReplaceIfExists; HANDLE RootDirectory; ULONG FileNameLength; WCHAR FileName[1];} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
typedef struct _FILE_PIPE_INFORMATION{ ULONG ReadMode; ULONG CompletionMode;} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
typedef struct _FILE_PIPE_LOCAL_INFORMATION{ ULONG NamedPipeType; ULONG NamedPipeConfiguration; ULONG MaximumInstances; ULONG CurrentInstances; ULONG InboundQuota; ULONG ReadDataAvailable; ULONG OutboundQuota; ULONG WriteQuotaAvailable; ULONG NamedPipeState; ULONG NamedPipeEnd;} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
typedef struct _FILE_PIPE_REMOTE_INFORMATION{ LARGE_INTEGER CollectDataTime; ULONG MaximumCollectionCount;} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
typedef struct _FILE_MAILSLOT_QUERY_INFORMATION{ ULONG MaximumMessageSize; ULONG MailslotQuota; ULONG NextMessageSize; ULONG MessagesAvailable; LARGE_INTEGER ReadTimeout;} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
typedef struct _FILE_MAILSLOT_SET_INFORMATION{ PLARGE_INTEGER ReadTimeout;} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
typedef struct _FILE_FULL_DIR_INFORMATION{ ULONG NextEntryOffset; ULONG FileIndex; LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER EndOfFile; LARGE_INTEGER AllocationSize; ULONG FileAttributes; ULONG FileNameLength; ULONG EaSize; WCHAR FileName[1];} FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
typedef struct _FILE_BOTH_DIR_INFORMATION{ ULONG NextEntryOffset; ULONG FileIndex; LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER EndOfFile; LARGE_INTEGER AllocationSize; ULONG FileAttributes; ULONG FileNameLength; ULONG EaSize; CCHAR ShortNameLength; WCHAR ShortName[12]; WCHAR FileName[1];} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
typedef struct _FILE_COMPLETION_INFORMATION{ HANDLE Port; PVOID Key;} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION{ ULONG Flags;} FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
typedef struct _FILE_LINK_INFORMATION{ BOOLEAN ReplaceIfExists; HANDLE RootDirectory; ULONG FileNameLength; WCHAR FileName[1];} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
typedef struct _FILE_NAME_INFORMATION{ ULONG FileNameLength; WCHAR FileName[1];} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
typedef struct _FILE_ALLOCATION_INFORMATION{ LARGE_INTEGER AllocationSize;} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
typedef struct _FILE_END_OF_FILE_INFORMATION{ LARGE_INTEGER EndOfFile;} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION{ LARGE_INTEGER ValidDataLength;} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
typedef struct _FILE_DIRECTORY_INFORMATION{ ULONG NextEntryOffset; ULONG FileIndex; LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER EndOfFile; LARGE_INTEGER AllocationSize; ULONG FileAttributes; ULONG FileNameLength; WCHAR FileName[1];} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
typedef struct _FILE_IO_COMPLETION_INFORMATION{ PVOID KeyContext; PVOID ApcContext; IO_STATUS_BLOCK IoStatusBlock;} FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION{ ULONG FileAttributes; ULONG ReparseTag;} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
typedef struct _FILE_TRACKING_INFORMATION{ HANDLE DestinationFile; ULONG ObjectInformationLength; CHAR ObjectInformation[1];} FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION;
//// File System Information structures for NtQueryInformationFile//typedef struct _FILE_FS_DEVICE_INFORMATION{ DEVICE_TYPE DeviceType; ULONG Characteristics;} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
typedef struct _FILE_FS_ATTRIBUTE_INFORMATION{ ULONG FileSystemAttributes; ULONG MaximumComponentNameLength; ULONG FileSystemNameLength; WCHAR FileSystemName[1];} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
typedef struct _FILE_FS_SIZE_INFORMATION{ LARGE_INTEGER TotalAllocationUnits; LARGE_INTEGER AvailableAllocationUnits; ULONG SectorsPerAllocationUnit; ULONG BytesPerSector;} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
typedef struct _FILE_FS_FULL_SIZE_INFORMATION{ LARGE_INTEGER TotalAllocationUnits; LARGE_INTEGER CallerAvailableAllocationUnits; LARGE_INTEGER ActualAvailableAllocationUnits; ULONG SectorsPerAllocationUnit; ULONG BytesPerSector;} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
typedef struct _FILE_FS_LABEL_INFORMATION{ ULONG VolumeLabelLength; WCHAR VolumeLabel[1];} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
typedef struct _FILE_FS_VOLUME_INFORMATION{ LARGE_INTEGER VolumeCreationTime; ULONG VolumeSerialNumber; ULONG VolumeLabelLength; BOOLEAN SupportsObjects; WCHAR VolumeLabel[1];} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
//// Pipe Structures for IOCTL_PIPE_XXX//typedef struct _FILE_PIPE_WAIT_FOR_BUFFER{ LARGE_INTEGER Timeout; ULONG NameLength; BOOLEAN TimeoutSpecified; WCHAR Name[1];} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
typedef struct _FILE_PIPE_PEEK_BUFFER{ ULONG NamedPipeState; ULONG ReadDataAvailable; ULONG NumberOfMessages; ULONG MessageLength; CHAR Data[1];} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
typedef struct _FILE_MODE_INFORMATION{ ULONG Mode;} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
//// I/O Error Log Structures//typedef struct _IO_ERROR_LOG_PACKET{ UCHAR MajorFunctionCode; UCHAR RetryCount; USHORT DumpDataSize; USHORT NumberOfStrings; USHORT StringOffset; USHORT EventCategory; NTSTATUS ErrorCode; ULONG UniqueErrorValue; NTSTATUS FinalStatus; ULONG SequenceNumber; ULONG IoControlCode; LARGE_INTEGER DeviceOffset; ULONG DumpData[1];} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
typedef struct _IO_ERROR_LOG_MESSAGE{ USHORT Type; USHORT Size; USHORT DriverNameLength; LARGE_INTEGER TimeStamp; ULONG DriverNameOffset; IO_ERROR_LOG_PACKET EntryData;} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
#endif
//// I/O Completion Information structures//typedef struct _IO_COMPLETION_BASIC_INFORMATION{ LONG Depth;} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
//// Parameters for NtCreateMailslotFile/NtCreateNamedPipeFile//typedef struct _MAILSLOT_CREATE_PARAMETERS{ ULONG MailslotQuota; ULONG MaximumMessageSize; LARGE_INTEGER ReadTimeout; BOOLEAN TimeoutSpecified;} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
typedef struct _NAMED_PIPE_CREATE_PARAMETERS{ ULONG NamedPipeType; ULONG ReadMode; ULONG CompletionMode; ULONG MaximumInstances; ULONG InboundQuota; ULONG OutboundQuota; LARGE_INTEGER DefaultTimeout; BOOLEAN TimeoutSpecified;} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
#ifndef NTOS_MODE_USER
//// I/O Timer Object//typedef struct _IO_TIMER{ USHORT Type; USHORT TimerEnabled; LIST_ENTRY IoTimerList; PIO_TIMER_ROUTINE TimerRoutine; PVOID Context; PDEVICE_OBJECT DeviceObject;} IO_TIMER;
//// Driver Extension//typedef struct _IO_CLIENT_EXTENSION{ struct _IO_CLIENT_EXTENSION *NextExtension; PVOID ClientIdentificationAddress;} IO_CLIENT_EXTENSION, *PIO_CLIENT_EXTENSION;
#define DEVNODE_HISTORY_SIZE 20
//// Device Node//typedef struct _DEVICE_NODE{ struct _DEVICE_NODE *Sibling; struct _DEVICE_NODE *Child; struct _DEVICE_NODE *Parent; struct _DEVICE_NODE *LastChild; ULONG Level; struct _PO_DEVICE_NOTIFY *Notify; PO_IRP_MANAGER PoIrpManager; PNP_DEVNODE_STATE State; PNP_DEVNODE_STATE PreviousState; PNP_DEVNODE_STATE StateHistory[DEVNODE_HISTORY_SIZE]; ULONG StateHistoryEntry; NTSTATUS CompletionStatus; PIRP PendingIrp; ULONG Flags; ULONG UserFlags; ULONG Problem; PDEVICE_OBJECT PhysicalDeviceObject; PCM_RESOURCE_LIST ResourceList; PCM_RESOURCE_LIST ResourceListTranslated; UNICODE_STRING InstancePath; UNICODE_STRING ServiceName; PDEVICE_OBJECT DuplicatePDO; PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements; INTERFACE_TYPE InterfaceType; ULONG BusNumber; INTERFACE_TYPE ChildInterfaceType; ULONG ChildBusNumber; USHORT ChildBusTypeIndex; UCHAR RemovalPolicy; UCHAR HardwareRemovalPolicy; LIST_ENTRY TargetDeviceNotify; LIST_ENTRY DeviceArbiterList; LIST_ENTRY DeviceTranslatorList; USHORT NoTranslatorMask; USHORT QueryTranslatorMask; USHORT NoArbiterMask; USHORT QueryArbiterMask; union { struct _DEVICE_NODE *LegacyDeviceNode; PDEVICE_RELATIONS PendingDeviceRelations; } OverUsed1; union { struct _DEVICE_NODE *NextResourceDeviceNode; } OverUsed2; PCM_RESOURCE_LIST BootResources;#if (NTDDI_VERSION >= NTDDI_LONGHORN) PCM_RESOURCE_LIST BootResourcesTranslated;#endif ULONG CapabilityFlags; struct { PROFILE_STATUS DockStatus; LIST_ENTRY ListEntry; WCHAR *SerialNumber; } DockInfo; ULONG DisableableDepends; LIST_ENTRY PendedSetInterfaceState; LIST_ENTRY LegacyBusListEntry; ULONG DriverUnloadRetryCount; struct _DEVICE_NODE *PreviousParent; ULONG DeletedChildren;#if (NTDDI_VERSION >= NTDDI_LONGHORN) ULONG NumaNodeIndex;#endif} DEVICE_NODE, *PDEVICE_NODE;
//// Resource Aribtrer Entry//typedef struct _PI_RESOURCE_ARBITER_ENTRY{ LIST_ENTRY DeviceArbiterList; UCHAR ResourceType; PARBITER_INTERFACE ArbiterInterface; ULONG Level; LIST_ENTRY ResourceList; LIST_ENTRY BestResourceList; LIST_ENTRY BestConfig; LIST_ENTRY ActiveArbiterList; UCHAR State; UCHAR ResourcesChanged;} PI_RESOURCE_ARBITER_ENTRY, *PPI_RESOURCE_ARBITER_ENTRY;
//// Extended Device Object Extension Structure//typedef struct _EXTENDED_DEVOBJ_EXTENSION{ CSHORT Type; USHORT Size; PDEVICE_OBJECT DeviceObject; ULONG PowerFlags; struct _DEVICE_OBJECT_POWER_EXTENSION *Dope; ULONG ExtensionFlags; struct _DEVICE_NODE *DeviceNode; PDEVICE_OBJECT AttachedTo; LONG StartIoCount; LONG StartIoKey; ULONG StartIoFlags; struct _VPB *Vpb;} EXTENDED_DEVOBJ_EXTENSION, *PEXTENDED_DEVOBJ_EXTENSION;
//// Extended Driver Object Extension Structure//typedef struct _EXTENDED_DRIVER_EXTENSION{ struct _DRIVER_OBJECT *DriverObject; PDRIVER_ADD_DEVICE AddDevice; ULONG Count; UNICODE_STRING ServiceKeyName; PIO_CLIENT_EXTENSION ClientDriverExtension; PFS_FILTER_CALLBACKS FsFilterCallbacks;} EXTENDED_DRIVER_EXTENSION, *PEXTENDED_DRIVER_EXTENSION;
#endif // !NTOS_MODE_USER
//// Firmware Boot File Path//typedef struct _FILE_PATH{ ULONG Version; ULONG Length; ULONG Type; CHAR FilePath[1];} FILE_PATH, *PFILE_PATH;
//// Firmware Boot Options//typedef struct _BOOT_OPTIONS{ ULONG Version; ULONG Length; ULONG Timeout; ULONG CurrentBootEntryId; ULONG NextBootEntryId; WCHAR HeadlessRedirection[1];} BOOT_OPTIONS, *PBOOT_OPTIONS;
//// Firmware Boot Entry//typedef struct _BOOT_ENTRY{ ULONG Version; ULONG Length; ULONG Id; ULONG Attributes; ULONG FriendlyNameOffset; ULONG BootFilePathOffset; ULONG OsOptionsLength; CHAR OsOptions[1];} BOOT_ENTRY, *PBOOT_ENTRY;
//// Firmware Driver Entry//typedef struct _EFI_DRIVER_ENTRY{ ULONG Version; ULONG Length; ULONG Id; ULONG Attributes; ULONG FriendlyNameOffset; ULONG DriverFilePathOffset;} EFI_DRIVER_ENTRY, *PEFI_DRIVER_ENTRY;
#ifdef NTOS_MODE_USER
//// APC Callback for NtReadFile, NtWriteFile//typedef VOID(NTAPI *PIO_APC_ROUTINE)( _In_ PVOID ApcContext, _In_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG Reserved);
#define PIO_APC_ROUTINE_DEFINED
//// Mailslot IOCTL Codes//#define FSCTL_MAILSLOT_PEEK \ CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
//// Pipe IOCTL Codes//#define FSCTL_PIPE_ASSIGN_EVENT \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_DISCONNECT \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_LISTEN \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_PEEK \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)#define FSCTL_PIPE_QUERY_EVENT \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_TRANSCEIVE \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)#define FSCTL_PIPE_WAIT \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_IMPERSONATE \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_SET_CLIENT_PROCESS \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)#define FSCTL_PIPE_INTERNAL_READ \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)#define FSCTL_PIPE_INTERNAL_WRITE \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)#define FSCTL_PIPE_INTERNAL_TRANSCEIVE \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
//// Tape IOCTL Codes//#define IOCTL_TAPE_ERASE \ CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)#define IOCTL_TAPE_PREPARE \ CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_WRITE_MARKS \ CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)#define IOCTL_TAPE_GET_POSITION \ CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_SET_POSITION \ CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_GET_DRIVE_PARAMS \ CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_SET_DRIVE_PARAMS \ CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)#define IOCTL_TAPE_GET_MEDIA_PARAMS \ CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_SET_MEDIA_PARAMS \ CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_GET_STATUS \ CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)#define IOCTL_TAPE_CREATE_PARTITION \ CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//// Reparse points//
#define SYMLINK_FLAG_RELATIVE 1
typedef struct _REPARSE_DATA_BUFFER { ULONG ReparseTag; USHORT ReparseDataLength; USHORT Reserved; _ANONYMOUS_UNION union { struct { USHORT SubstituteNameOffset; USHORT SubstituteNameLength; USHORT PrintNameOffset; USHORT PrintNameLength; ULONG Flags; WCHAR PathBuffer[1]; } SymbolicLinkReparseBuffer; struct { USHORT SubstituteNameOffset; USHORT SubstituteNameLength; USHORT PrintNameOffset; USHORT PrintNameLength; WCHAR PathBuffer[1]; } MountPointReparseBuffer; struct { UCHAR DataBuffer[1]; } GenericReparseBuffer; } DUMMYUNIONNAME;} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
#endif // NTOS_MODE_USER
#endif