mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 19:26:33 +00:00
[NTIFS]
- Group related definitions - Add REPARSE_*, FILE_PIPE_CLIENT_PROCESS_BUFFER_EX, VIRTUAL_STORAGE_TYPE, STORAGE_QUERY_DEPENDENT_VOLUME_* and PUBLIC_OBJECT_* structures - Add LINK_TRACKING_INFORMATION_TYPE, LINK_TRACKING_INFORMATION and REMOTE_LINK_TRACKING_INFORMATION enums - Update OBJECT_INFORMATION_CLASS and FILE_PIPE_CLIENT_PROCESS_BUFFER definitions - Add REPARSE_GUID_DATA_BUFFER_HEADER_SIZE, IsReparseTag*, FSCTL_LMR_* and FSCTL_PIPE_* macros - Add missing MAXIMUM_REPARSE_DATA_BUFFER_SIZE, IO_REPARSE_TAG_*, FILE_PIPE_COMPUTER_NAME_LENGTH and QUERY_DEPENDENT_VOLUME_REQUEST_FLAG_* definitions svn path=/branches/header-work/; revision=46037
This commit is contained in:
+246
-119
@@ -4281,6 +4281,54 @@ DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_PAGE_FILE, 0x0d0a64a1, 0x38fc,
|
||||
DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_HIBERNATION_FILE, 0xb7624d64, 0xb9a3, 0x4cf8, 0x80, 0x11, 0x5b, 0x86, 0xc9, 0x40, 0xe7, 0xb7 );
|
||||
DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_CRASHDUMP_FILE, 0x9d453eb7, 0xd2a6, 0x4dbd, 0xa2, 0xe3, 0xfb, 0xd0, 0xed, 0x91, 0x09, 0xa9 );
|
||||
|
||||
#ifndef _VIRTUAL_STORAGE_TYPE_DEFINED
|
||||
#define _VIRTUAL_STORAGE_TYPE_DEFINED
|
||||
typedef struct _VIRTUAL_STORAGE_TYPE {
|
||||
ULONG DeviceId;
|
||||
GUID VendorId;
|
||||
} VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE;
|
||||
#endif
|
||||
|
||||
typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST {
|
||||
ULONG RequestLevel;
|
||||
ULONG RequestFlags;
|
||||
} STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST, *PSTORAGE_QUERY_DEPENDENT_VOLUME_REQUEST;
|
||||
|
||||
#define QUERY_DEPENDENT_VOLUME_REQUEST_FLAG_HOST_VOLUMES 0x1
|
||||
#define QUERY_DEPENDENT_VOLUME_REQUEST_FLAG_GUEST_VOLUMES 0x2
|
||||
|
||||
typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY {
|
||||
ULONG EntryLength;
|
||||
ULONG DependencyTypeFlags;
|
||||
ULONG ProviderSpecificFlags;
|
||||
VIRTUAL_STORAGE_TYPE VirtualStorageType;
|
||||
} STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY;
|
||||
|
||||
typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY {
|
||||
ULONG EntryLength;
|
||||
ULONG DependencyTypeFlags;
|
||||
ULONG ProviderSpecificFlags;
|
||||
VIRTUAL_STORAGE_TYPE VirtualStorageType;
|
||||
ULONG AncestorLevel;
|
||||
ULONG HostVolumeNameOffset;
|
||||
ULONG HostVolumeNameSize;
|
||||
ULONG DependentVolumeNameOffset;
|
||||
ULONG DependentVolumeNameSize;
|
||||
ULONG RelativePathOffset;
|
||||
ULONG RelativePathSize;
|
||||
ULONG DependentDeviceNameOffset;
|
||||
ULONG DependentDeviceNameSize;
|
||||
} STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY;
|
||||
|
||||
typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE {
|
||||
ULONG ResponseLevel;
|
||||
ULONG NumberEntries;
|
||||
union {
|
||||
STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY Lev1Depends[];
|
||||
STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY Lev2Depends[];
|
||||
};
|
||||
} STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE, *PSTORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE;
|
||||
|
||||
#endif /* (_WIN32_WINNT >= 0x0601) */
|
||||
|
||||
typedef struct _FILESYSTEM_STATISTICS {
|
||||
@@ -4409,6 +4457,204 @@ typedef struct _NTFS_STATISTICS {
|
||||
|
||||
#endif // _FILESYSTEMFSCTL_
|
||||
|
||||
#define SYMLINK_FLAG_RELATIVE 1
|
||||
|
||||
typedef struct _REPARSE_DATA_BUFFER {
|
||||
ULONG ReparseTag;
|
||||
USHORT ReparseDataLength;
|
||||
USHORT Reserved;
|
||||
__GNU_EXTENSION 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;
|
||||
};
|
||||
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
|
||||
|
||||
#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
|
||||
|
||||
typedef struct _REPARSE_GUID_DATA_BUFFER {
|
||||
ULONG ReparseTag;
|
||||
USHORT ReparseDataLength;
|
||||
USHORT Reserved;
|
||||
GUID ReparseGuid;
|
||||
struct {
|
||||
UCHAR DataBuffer[1];
|
||||
} GenericReparseBuffer;
|
||||
} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
|
||||
|
||||
#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
|
||||
|
||||
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
|
||||
|
||||
/* Reserved reparse tags */
|
||||
#define IO_REPARSE_TAG_RESERVED_ZERO (0)
|
||||
#define IO_REPARSE_TAG_RESERVED_ONE (1)
|
||||
#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
|
||||
|
||||
#define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000))
|
||||
#define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000))
|
||||
|
||||
#define IO_REPARSE_TAG_VALID_VALUES (0xF000FFFF)
|
||||
|
||||
#define IsReparseTagValid(tag) ( \
|
||||
!((tag) & ~IO_REPARSE_TAG_VALID_VALUES) && \
|
||||
((tag) > IO_REPARSE_TAG_RESERVED_RANGE) \
|
||||
)
|
||||
|
||||
/* MicroSoft reparse point tags */
|
||||
#define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L)
|
||||
#define IO_REPARSE_TAG_HSM (0xC0000004L)
|
||||
#define IO_REPARSE_TAG_DRIVE_EXTENDER (0x80000005L)
|
||||
#define IO_REPARSE_TAG_HSM2 (0x80000006L)
|
||||
#define IO_REPARSE_TAG_SIS (0x80000007L)
|
||||
#define IO_REPARSE_TAG_WIM (0x80000008L)
|
||||
#define IO_REPARSE_TAG_CSV (0x80000009L)
|
||||
#define IO_REPARSE_TAG_DFS (0x8000000AL)
|
||||
#define IO_REPARSE_TAG_FILTER_MANAGER (0x8000000BL)
|
||||
#define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
|
||||
#define IO_REPARSE_TAG_IIS_CACHE (0xA0000010L)
|
||||
#define IO_REPARSE_TAG_DFSR (0x80000012L)
|
||||
|
||||
#pragma pack(4)
|
||||
typedef struct _REPARSE_INDEX_KEY {
|
||||
ULONG FileReparseTag;
|
||||
LARGE_INTEGER FileId;
|
||||
} REPARSE_INDEX_KEY, *PREPARSE_INDEX_KEY;
|
||||
#pragma pack()
|
||||
|
||||
#define FSCTL_LMR_GET_LINK_TRACKING_INFORMATION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,58,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,59,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
#define IOCTL_LMR_ARE_FILE_OBJECTS_ON_SAME_SERVER CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
#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_GET_PIPE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_SET_PIPE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_GET_CONNECTION_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_SET_CONNECTION_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_GET_HANDLE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_SET_HANDLE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_PIPE_FLUSH CTL_CODE(FILE_DEVICE_NAMED_PIPE, 16, METHOD_BUFFERED, FILE_WRITE_DATA)
|
||||
|
||||
#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)
|
||||
|
||||
#define FILE_PIPE_READ_DATA 0x00000000
|
||||
#define FILE_PIPE_WRITE_SPACE 0x00000001
|
||||
|
||||
typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
|
||||
HANDLE EventHandle;
|
||||
ULONG KeyValue;
|
||||
} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
|
||||
|
||||
typedef struct _FILE_PIPE_EVENT_BUFFER {
|
||||
ULONG NamedPipeState;
|
||||
ULONG EntryType;
|
||||
ULONG ByteCount;
|
||||
ULONG KeyValue;
|
||||
ULONG NumberRequests;
|
||||
} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_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_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_CLIENT_PROCESS_BUFFER {
|
||||
#if !defined(BUILD_WOW6432)
|
||||
PVOID ClientSession;
|
||||
PVOID ClientProcess;
|
||||
#else
|
||||
ULONGLONG ClientSession;
|
||||
ULONGLONG ClientProcess;
|
||||
#endif
|
||||
} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
|
||||
|
||||
#define FILE_PIPE_COMPUTER_NAME_LENGTH 15
|
||||
|
||||
typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER_EX {
|
||||
#if !defined(BUILD_WOW6432)
|
||||
PVOID ClientSession;
|
||||
PVOID ClientProcess;
|
||||
#else
|
||||
ULONGLONG ClientSession;
|
||||
ULONGLONG ClientProcess;
|
||||
#endif
|
||||
USHORT ClientComputerNameLength;
|
||||
WCHAR ClientComputerBuffer[FILE_PIPE_COMPUTER_NAME_LENGTH+1];
|
||||
} FILE_PIPE_CLIENT_PROCESS_BUFFER_EX, *PFILE_PIPE_CLIENT_PROCESS_BUFFER_EX;
|
||||
|
||||
#define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
|
||||
|
||||
typedef enum _LINK_TRACKING_INFORMATION_TYPE {
|
||||
NtfsLinkTrackingInformation,
|
||||
DfsLinkTrackingInformation
|
||||
} LINK_TRACKING_INFORMATION_TYPE, *PLINK_TRACKING_INFORMATION_TYPE;
|
||||
|
||||
typedef struct _LINK_TRACKING_INFORMATION {
|
||||
LINK_TRACKING_INFORMATION_TYPE Type;
|
||||
UCHAR VolumeId[16];
|
||||
} LINK_TRACKING_INFORMATION, *PLINK_TRACKING_INFORMATION;
|
||||
|
||||
typedef struct _REMOTE_LINK_TRACKING_INFORMATION {
|
||||
PVOID TargetFileObject;
|
||||
ULONG TargetLinkTrackingInformationLength;
|
||||
UCHAR TargetLinkTrackingInformationBuffer[1];
|
||||
} REMOTE_LINK_TRACKING_INFORMATION, *PREMOTE_LINK_TRACKING_INFORMATION;
|
||||
|
||||
typedef enum _OBJECT_INFORMATION_CLASS {
|
||||
ObjectBasicInformation = 0,
|
||||
ObjectTypeInformation = 2
|
||||
} OBJECT_INFORMATION_CLASS;
|
||||
|
||||
typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {
|
||||
ULONG Attributes;
|
||||
ACCESS_MASK GrantedAccess;
|
||||
ULONG HandleCount;
|
||||
ULONG PointerCount;
|
||||
ULONG Reserved[10];
|
||||
} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
|
||||
|
||||
typedef struct _PUBLIC_OBJECT_TYPE_INFORMATION {
|
||||
UNICODE_STRING TypeName;
|
||||
ULONG Reserved [22];
|
||||
} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
|
||||
|
||||
#pragma pack(push,4)
|
||||
|
||||
#ifndef VER_PRODUCTBUILD
|
||||
@@ -4438,9 +4684,6 @@ extern LARGE_INTEGER IoOtherTransferCount;
|
||||
|
||||
#define FS_LFN_APIS 0x00004000
|
||||
|
||||
#define FILE_PIPE_READ_DATA 0x00000000
|
||||
#define FILE_PIPE_WRITE_SPACE 0x00000001
|
||||
|
||||
#define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */
|
||||
#define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
|
||||
#define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
|
||||
@@ -4590,8 +4833,6 @@ extern LARGE_INTEGER IoOtherTransferCount;
|
||||
#define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
|
||||
#endif /* (VER_PRODUCTBUILD >= 2195) */
|
||||
|
||||
#define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
|
||||
|
||||
#define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
|
||||
#define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||||
#define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
@@ -4601,21 +4842,6 @@ extern LARGE_INTEGER IoOtherTransferCount;
|
||||
#define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#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)
|
||||
|
||||
#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
typedef PVOID OPLOCK, *POPLOCK;
|
||||
@@ -4651,17 +4877,6 @@ typedef enum _FILE_STORAGE_TYPE {
|
||||
StorageTypeStream
|
||||
} FILE_STORAGE_TYPE;
|
||||
|
||||
typedef enum _OBJECT_INFORMATION_CLASS
|
||||
{
|
||||
ObjectBasicInformation,
|
||||
ObjectNameInformation,
|
||||
ObjectTypeInformation,
|
||||
ObjectTypesInformation,
|
||||
ObjectHandleFlagInformation,
|
||||
ObjectSessionInformation,
|
||||
MaxObjectInfoClass
|
||||
} OBJECT_INFORMATION_CLASS;
|
||||
|
||||
typedef struct _OBJECT_BASIC_INFORMATION
|
||||
{
|
||||
ULONG Attributes;
|
||||
@@ -4706,60 +4921,6 @@ typedef struct _CC_FILE_SIZES {
|
||||
LARGE_INTEGER ValidDataLength;
|
||||
} CC_FILE_SIZES, *PCC_FILE_SIZES;
|
||||
|
||||
#define SYMLINK_FLAG_RELATIVE 1
|
||||
|
||||
typedef struct _REPARSE_DATA_BUFFER {
|
||||
ULONG ReparseTag;
|
||||
USHORT ReparseDataLength;
|
||||
USHORT Reserved;
|
||||
__GNU_EXTENSION 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;
|
||||
};
|
||||
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// MicroSoft reparse point tags
|
||||
//
|
||||
#define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L)
|
||||
#define IO_REPARSE_TAG_HSM (0xC0000004L)
|
||||
#define IO_REPARSE_TAG_DRIVE_EXTENDER (0x80000005L)
|
||||
#define IO_REPARSE_TAG_HSM2 (0x80000006L)
|
||||
#define IO_REPARSE_TAG_SIS (0x80000007L)
|
||||
#define IO_REPARSE_TAG_DFS (0x8000000AL)
|
||||
#define IO_REPARSE_TAG_FILTER_MANAGER (0x8000000BL)
|
||||
#define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
|
||||
#define IO_REPARSE_TAG_IIS_CACHE (0xA0000010L)
|
||||
#define IO_REPARSE_TAG_DFSR (0x80000012L)
|
||||
|
||||
//
|
||||
// Reserved reparse tags
|
||||
//
|
||||
#define IO_REPARSE_TAG_RESERVED_ZERO (0)
|
||||
#define IO_REPARSE_TAG_RESERVED_ONE (1)
|
||||
#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
|
||||
|
||||
|
||||
#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
|
||||
|
||||
typedef struct _FILE_COPY_ON_WRITE_INFORMATION {
|
||||
BOOLEAN ReplaceIfExists;
|
||||
HANDLE RootDirectory;
|
||||
@@ -4940,40 +5101,6 @@ typedef struct _FILE_OLE_STATE_BITS_INFORMATION {
|
||||
ULONG StateBitsMask;
|
||||
} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION;
|
||||
|
||||
typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
|
||||
HANDLE EventHandle;
|
||||
ULONG KeyValue;
|
||||
} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
|
||||
|
||||
typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER {
|
||||
PVOID ClientSession;
|
||||
PVOID ClientProcess;
|
||||
} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
|
||||
|
||||
typedef struct _FILE_PIPE_EVENT_BUFFER {
|
||||
ULONG NamedPipeState;
|
||||
ULONG EntryType;
|
||||
ULONG ByteCount;
|
||||
ULONG KeyValue;
|
||||
ULONG NumberRequests;
|
||||
} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_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_PIPE_WAIT_FOR_BUFFER {
|
||||
LARGE_INTEGER Timeout;
|
||||
ULONG NameLength;
|
||||
BOOLEAN TimeoutSpecified;
|
||||
WCHAR Name[1];
|
||||
} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
|
||||
|
||||
#if (VER_PRODUCTBUILD >= 2195)
|
||||
typedef struct FILE_ALLOCATED_RANGE_BUFFER {
|
||||
LARGE_INTEGER FileOffset;
|
||||
|
||||
Reference in New Issue
Block a user