include/winioctl.h: Import definitions from ntifs.h.
Signed-off-by: Mark Harmstone <mark@harmstone.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/winioctl.h b/mingw-w64-headers/include/winioctl.h
index 617ef4c..fb6d639 100644
--- a/mingw-w64-headers/include/winioctl.h
+++ b/mingw-w64-headers/include/winioctl.h
@@ -1282,7 +1282,8 @@
#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA)
-#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS)
+#define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS)
+#define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED
#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22,METHOD_BUFFERED,FILE_ANY_ACCESS)
@@ -1310,6 +1311,7 @@
#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,50,METHOD_BUFFERED,FILE_WRITE_DATA)
#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,51,METHOD_NEITHER,FILE_READ_DATA)
+#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,52,METHOD_BUFFERED,FILE_WRITE_DATA)
#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,53,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,54,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,55,METHOD_NEITHER,FILE_SPECIAL_ACCESS)
@@ -1401,6 +1403,12 @@
DWORD ClusterCount;
} MOVE_FILE_DATA,*PMOVE_FILE_DATA;
+typedef struct _MOVE_FILE_RECORD_DATA {
+ HANDLE FileHandle;
+ LARGE_INTEGER SourceFileRecord;
+ LARGE_INTEGER TargetFileRecord;
+} MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA;
+
#ifdef _WIN64
typedef struct _MOVE_FILE_DATA32 {
UINT32 FileHandle;
@@ -1481,6 +1489,7 @@
#define USN_REASON_OBJECT_ID_CHANGE (0x00080000)
#define USN_REASON_REPARSE_POINT_CHANGE (0x00100000)
#define USN_REASON_STREAM_CHANGE (0x00200000)
+#define USN_REASON_TRANSACTED_CHANGE (0x00400000)
#define USN_REASON_CLOSE (0x80000000)
@@ -1535,8 +1544,9 @@
DWORD SecurityIds[1];
} BULK_SECURITY_TEST_DATA,*PBULK_SECURITY_TEST_DATA;
-#define VOLUME_IS_DIRTY (0x00000001)
-#define VOLUME_UPGRADE_SCHEDULED (0x00000002)
+#define VOLUME_IS_DIRTY (0x00000001)
+#define VOLUME_UPGRADE_SCHEDULED (0x00000002)
+#define VOLUME_SESSION_OPEN (0x00000004)
typedef struct _FILE_PREFETCH {
DWORD Type;
@@ -1544,7 +1554,19 @@
DWORDLONG Prefetch[1];
} FILE_PREFETCH,*PFILE_PREFETCH;
-#define FILE_PREFETCH_TYPE_FOR_CREATE 0x1
+typedef struct _FILE_PREFETCH_EX {
+ ULONG Type;
+ ULONG Count;
+ PVOID Context;
+ ULONGLONG Prefetch[1];
+} FILE_PREFETCH_EX, *PFILE_PREFETCH_EX;
+
+#define FILE_PREFETCH_TYPE_FOR_CREATE 0x1
+#define FILE_PREFETCH_TYPE_FOR_DIRENUM 0x2
+#define FILE_PREFETCH_TYPE_FOR_CREATE_EX 0x3
+#define FILE_PREFETCH_TYPE_FOR_DIRENUM_EX 0x4
+
+#define FILE_PREFETCH_TYPE_MAX 0x4
typedef struct _FILESYSTEM_STATISTICS {
WORD FileSystemType;
@@ -1566,6 +1588,7 @@
#define FILESYSTEM_STATISTICS_TYPE_NTFS 1
#define FILESYSTEM_STATISTICS_TYPE_FAT 2
+#define FILESYSTEM_STATISTICS_TYPE_EXFAT 3
typedef struct _FAT_STATISTICS {
DWORD CreateHits;
@@ -2247,6 +2270,8 @@
WORD ShareMode;
} REQUEST_OPLOCK_OUTPUT_BUFFER, *PREQUEST_OPLOCK_OUTPUT_BUFFER;
+#define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED (0x00000001)
+
typedef struct _BOOT_AREA_INFO {
ULONG BootSectorCount;
struct {
@@ -2258,6 +2283,13 @@
LARGE_INTEGER FileAreaOffset;
} RETRIEVAL_POINTER_BASE, *PRETRIEVAL_POINTER_BASE;
+typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
+ ULONG VolumeFlags;
+ ULONG FlagMask;
+ ULONG Version;
+ ULONG Reserved;
+} FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
+
typedef struct _FILE_SYSTEM_RECOGNITION_INFORMATION {
CHAR FileSystem[9];
} FILE_SYSTEM_RECOGNITION_INFORMATION, *PFILE_SYSTEM_RECOGNITION_INFORMATION;
@@ -2271,6 +2303,47 @@
USHORT Checksum;
} FILE_SYSTEM_RECOGNITION_STRUCTURE;
+#define OPLOCK_LEVEL_CACHE_READ (0x00000001)
+#define OPLOCK_LEVEL_CACHE_HANDLE (0x00000002)
+#define OPLOCK_LEVEL_CACHE_WRITE (0x00000004)
+
+#define REQUEST_OPLOCK_INPUT_FLAG_REQUEST (0x00000001)
+#define REQUEST_OPLOCK_INPUT_FLAG_ACK (0x00000002)
+#define REQUEST_OPLOCK_INPUT_FLAG_COMPLETE_ACK_ON_CLOSE (0x00000004)
+
+#define REQUEST_OPLOCK_CURRENT_VERSION 1
+
+#define REQUEST_OPLOCK_OUTPUT_FLAG_ACK_REQUIRED (0x00000001)
+#define REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED (0x00000002)
+
+#define SD_GLOBAL_CHANGE_TYPE_MACHINE_SID 1
+
+typedef struct _SD_CHANGE_MACHINE_SID_INPUT {
+ USHORT CurrentMachineSIDOffset;
+ USHORT CurrentMachineSIDLength;
+ USHORT NewMachineSIDOffset;
+ USHORT NewMachineSIDLength;
+} SD_CHANGE_MACHINE_SID_INPUT, *PSD_CHANGE_MACHINE_SID_INPUT;
+
+typedef struct _SD_CHANGE_MACHINE_SID_OUTPUT {
+ ULONGLONG NumSDChangedSuccess;
+ ULONGLONG NumSDChangedFail;
+ ULONGLONG NumSDUnused;
+ ULONGLONG NumSDTotal;
+ ULONGLONG NumMftSDChangedSuccess;
+ ULONGLONG NumMftSDChangedFail;
+ ULONGLONG NumMftSDTotal;
+} SD_CHANGE_MACHINE_SID_OUTPUT, *PSD_CHANGE_MACHINE_SID_OUTPUT;
+
+#define ENCRYPTED_DATA_INFO_SPARSE_FILE 1
+
+typedef struct _EXTENDED_ENCRYPTED_DATA_INFO {
+ ULONG ExtendedCode;
+ ULONG Length;
+ ULONG Flags;
+ ULONG Reserved;
+} EXTENDED_ENCRYPTED_DATA_INFO, *PEXTENDED_ENCRYPTED_DATA_INFO;
+
typedef struct _LOOKUP_STREAM_FROM_CLUSTER_INPUT {
DWORD Flags;
DWORD NumberOfClusters;
@@ -2300,6 +2373,15 @@
#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_INDEX 0x02000000
#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_SYSTEM 0x03000000
+typedef struct _FILE_TYPE_NOTIFICATION_INPUT {
+ ULONG Flags;
+ ULONG NumFileTypeIDs;
+ GUID FileTypeID[1];
+} FILE_TYPE_NOTIFICATION_INPUT, *PFILE_TYPE_NOTIFICATION_INPUT;
+
+#define FILE_TYPE_NOTIFICATION_FLAG_USAGE_BEGIN 0x00000001
+#define FILE_TYPE_NOTIFICATION_FLAG_USAGE_END 0x00000002
+
#define FSCTL_QUERY_DEPENDENT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,124, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SD_GLOBAL_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,125, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_LOOKUP_STREAM_FROM_CLUSTER CTL_CODE(FILE_DEVICE_FILE_SYSTEM,127, METHOD_BUFFERED, FILE_ANY_ACCESS)
@@ -2318,6 +2400,16 @@
#define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
+typedef struct _CSV_NAMESPACE_INFO {
+ ULONG Version;
+ ULONG DeviceNumber;
+ LARGE_INTEGER StartingOffset;
+ ULONG SectorSize;
+} CSV_NAMESPACE_INFO, *PCSV_NAMESPACE_INFO;
+
+#define CSV_NAMESPACE_INFO_V1 (sizeof(CSV_NAMESPACE_INFO))
+#define CSV_INVALID_DEVICE_NUMBER 0xFFFFFFFF
+
#endif /*(_WIN32_WINNT >= 0x0601)*/
#endif /* _FILESYSTEMFSCTL_ */