#define SSINFO_OFFSET_UNKNOWN 0xffffffff
+/* MS-FSCC 2.4 File Information Classes */
+
+#define FSCC_FILE_DIRECTORY_INFORMATION 1
+#define FSCC_FILE_FULL_DIRECTORY_INFORMATION 2
+#define FSCC_FILE_BOTH_DIRECTORY_INFORMATION 3
+#define FSCC_FILE_BASIC_INFORMATION 4
+#define FSCC_FILE_STANDARD_INFORMATION 5
+#define FSCC_FILE_INTERNAL_INFORMATION 6
+#define FSCC_FILE_EA_INFORMATION 7
+#define FSCC_FILE_ACCESS_INFORMATION 8
+#define FSCC_FILE_NAME_INFORMATION 9
+#define FSCC_FILE_RENAME_INFORMATION 10
+#define FSCC_FILE_LINK_INFORMATION 11
+#define FSCC_FILE_NAMES_INFORMATION 12
+#define FSCC_FILE_DISPOSITION_INFORMATION 13
+#define FSCC_FILE_POSITION_INFORMATION 14
+#define FSCC_FILE_FULL_EA_INFORMATION 15
+#define FSCC_FILE_MODE_INFORMATION 16
+#define FSCC_FILE_ALIGNMENT_INFORMATION 17
+#define FSCC_FILE_ALL_INFORMATION 18
+#define FSCC_FILE_ALLOCATION_INFORMATION 19
+#define FSCC_FILE_END_OF_FILE_INFORMATION 20
+#define FSCC_FILE_ALTERNATE_NAME_INFORMATION 21
+#define FSCC_FILE_STREAM_INFORMATION 22
+#define FSCC_FILE_PIPE_INFORMATION 23
+#define FSCC_FILE_PIPE_LOCAL_INFORMATION 24
+#define FSCC_FILE_PIPE_REMOTE_INFORMATION 25
+#define FSCC_FILE_MAILSLOT_QUERY_INFORMATION 26
+#define FSCC_FILE_MAILSLOT_SET_INFORMATION 27
+#define FSCC_FILE_COMPRESSION_INFORMATION 28
+#define FSCC_FILE_OBJECTID_INFORMATION 29
+#define FSCC_FILE_COMPLETION_INFORMATION 30
+#define FSCC_FILE_MOVE_CLUSTER_INFORMATION 31
+#define FSCC_FILE_QUOTA_INFORMATION 32
+#define FSCC_FILE_REPARSEPOINT_INFORMATION 33
+#define FSCC_FILE_NETWORK_OPEN_INFORMATION 34
+#define FSCC_FILE_ATTRIBUTE_TAG_INFORMATION 35
+#define FSCC_FILE_TRACKING_INFORMATION 36
+#define FSCC_FILE_ID_BOTH_DIRECTORY_INFORMATION 37
+#define FSCC_FILE_ID_FULL_DIRECTORY_INFORMATION 38
+#define FSCC_FILE_VALID_DATA_LENGTH_INFORMATION 39
+#define FSCC_FILE_SHORT_NAME_INFORMATION 40
+#define FSCC_FILE_SFIO_RESERVE_INFORMATION 44
+#define FSCC_FILE_SFIO_VOLUME_INFORMATION 45
+#define FSCC_FILE_HARD_LINK_INFORMATION 46
+#define FSCC_FILE_NORMALIZED_NAME_INFORMATION 48
+#define FSCC_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION 50
+#define FSCC_FILE_STANDARD_LINK_INFORMATION 54
+#define FSCC_FILE_MAXIMUM_INFORMATION 55
+
+/* MS-FSCC 2.4 File System Information Classes */
+
+#define FSCC_FS_VOLUME_INFORMATION 1
+#define FSCC_FS_LABEL_INFORMATION 2
+#define FSCC_FS_SIZE_INFORMATION 3
+#define FSCC_FS_DEVICE_INFORMATION 4
+#define FSCC_FS_ATTRIBUTE_INFORMATION 5
+#define FSCC_FS_QUOTA_INFORMATION 6
+#define FSCC_FS_FULL_SIZE_INFORMATION 7
+#define FSCC_FS_OBJECTID_INFORMATION 8
+#define FSCC_FS_SECTOR_SIZE_INFORMATION 11
+
/* NT passthrough levels... */
-#define SMB_FILE_DIRECTORY_INFORMATION 1001
-#define SMB_FILE_FULL_DIRECTORY_INFORMATION 1002
-#define SMB_FILE_BOTH_DIRECTORY_INFORMATION 1003
-#define SMB_FILE_BASIC_INFORMATION 1004
-#define SMB_FILE_STANDARD_INFORMATION 1005
-#define SMB_FILE_INTERNAL_INFORMATION 1006
-#define SMB_FILE_EA_INFORMATION 1007
-#define SMB_FILE_ACCESS_INFORMATION 1008
-#define SMB_FILE_NAME_INFORMATION 1009
-#define SMB_FILE_RENAME_INFORMATION 1010
-#define SMB2_FILE_RENAME_INFORMATION_INTERNAL 0xFF0A /* Internal mapped version. */
-#define SMB_FILE_LINK_INFORMATION 1011
-#define SMB_FILE_NAMES_INFORMATION 1012
-#define SMB_FILE_DISPOSITION_INFORMATION 1013
-#define SMB_FILE_POSITION_INFORMATION 1014
-#define SMB_FILE_FULL_EA_INFORMATION 1015
-#define SMB_FILE_MODE_INFORMATION 1016
-#define SMB_FILE_ALIGNMENT_INFORMATION 1017
-#define SMB_FILE_ALL_INFORMATION 1018
-#define SMB_FILE_ALLOCATION_INFORMATION 1019
-#define SMB_FILE_END_OF_FILE_INFORMATION 1020
-#define SMB_FILE_ALTERNATE_NAME_INFORMATION 1021
-#define SMB_FILE_STREAM_INFORMATION 1022
-#define SMB_FILE_PIPE_INFORMATION 1023
-#define SMB_FILE_PIPE_LOCAL_INFORMATION 1024
-#define SMB_FILE_PIPE_REMOTE_INFORMATION 1025
-#define SMB_FILE_MAILSLOT_QUERY_INFORMATION 1026
-#define SMB_FILE_MAILSLOT_SET_INFORMATION 1027
-#define SMB_FILE_COMPRESSION_INFORMATION 1028
-#define SMB_FILE_OBJECTID_INFORMATION 1029
-#define SMB_FILE_COMPLETION_INFORMATION 1030
-#define SMB_FILE_MOVE_CLUSTER_INFORMATION 1031
-#define SMB_FILE_QUOTA_INFORMATION 1032
-#define SMB_FILE_REPARSEPOINT_INFORMATION 1033
-#define SMB_FILE_NETWORK_OPEN_INFORMATION 1034
-#define SMB_FILE_ATTRIBUTE_TAG_INFORMATION 1035
-#define SMB_FILE_TRACKING_INFORMATION 1036
-#define SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION 1037
-#define SMB_FILE_ID_FULL_DIRECTORY_INFORMATION 1038
-#define SMB_FILE_VALID_DATA_LENGTH_INFORMATION 1039
-#define SMB_FILE_SHORT_NAME_INFORMATION 1040
-#define SMB_FILE_SFIO_RESERVE_INFORMATION 1044
-#define SMB_FILE_SFIO_VOLUME_INFORMATION 1045
-#define SMB_FILE_HARD_LINK_INFORMATION 1046
-#define SMB_FILE_NORMALIZED_NAME_INFORMATION 1048
-#define SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION 1050
-#define SMB_FILE_STANDARD_LINK_INFORMATION 1054
-#define SMB_FILE_MAXIMUM_INFORMATION 1055
+#define NT_PASSTHROUGH_OFFSET 1000
+#define SMB2_INFO_SPECIAL 0xFF00
+
+#define SMB_FILE_DIRECTORY_INFORMATION (FSCC_FILE_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_FULL_DIRECTORY_INFORMATION (FSCC_FILE_FULL_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_BOTH_DIRECTORY_INFORMATION (FSCC_FILE_BOTH_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_BASIC_INFORMATION (FSCC_FILE_BASIC_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STANDARD_INFORMATION (FSCC_FILE_STANDARD_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_INTERNAL_INFORMATION (FSCC_FILE_INTERNAL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_EA_INFORMATION (FSCC_FILE_EA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ACCESS_INFORMATION (FSCC_FILE_ACCESS_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NAME_INFORMATION (FSCC_FILE_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_RENAME_INFORMATION (FSCC_FILE_RENAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_LINK_INFORMATION (FSCC_FILE_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NAMES_INFORMATION (FSCC_FILE_NAMES_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_DISPOSITION_INFORMATION (FSCC_FILE_DISPOSITION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_POSITION_INFORMATION (FSCC_FILE_POSITION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_FULL_EA_INFORMATION (FSCC_FILE_FULL_EA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MODE_INFORMATION (FSCC_FILE_MODE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALIGNMENT_INFORMATION (FSCC_FILE_ALIGNMENT_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALL_INFORMATION (FSCC_FILE_ALL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALLOCATION_INFORMATION (FSCC_FILE_ALLOCATION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_END_OF_FILE_INFORMATION (FSCC_FILE_END_OF_FILE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ALTERNATE_NAME_INFORMATION (FSCC_FILE_ALTERNATE_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STREAM_INFORMATION (FSCC_FILE_STREAM_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_INFORMATION (FSCC_FILE_PIPE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_LOCAL_INFORMATION (FSCC_FILE_PIPE_LOCAL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_PIPE_REMOTE_INFORMATION (FSCC_FILE_PIPE_REMOTE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAILSLOT_QUERY_INFORMATION (FSCC_FILE_MAILSLOT_QUERY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAILSLOT_SET_INFORMATION (FSCC_FILE_MAILSLOT_SET_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_COMPRESSION_INFORMATION (FSCC_FILE_COMPRESSION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_OBJECTID_INFORMATION (FSCC_FILE_OBJECTID_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_COMPLETION_INFORMATION (FSCC_FILE_COMPLETION_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MOVE_CLUSTER_INFORMATION (FSCC_FILE_MOVE_CLUSTER_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_QUOTA_INFORMATION (FSCC_FILE_QUOTA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_REPARSEPOINT_INFORMATION (FSCC_FILE_REPARSEPOINT_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NETWORK_OPEN_INFORMATION (FSCC_FILE_NETWORK_OPEN_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ATTRIBUTE_TAG_INFORMATION (FSCC_FILE_ATTRIBUTE_TAG_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_TRACKING_INFORMATION (FSCC_FILE_TRACKING_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION (FSCC_FILE_ID_BOTH_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_FULL_DIRECTORY_INFORMATION (FSCC_FILE_ID_FULL_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_VALID_DATA_LENGTH_INFORMATION (FSCC_FILE_VALID_DATA_LENGTH_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SHORT_NAME_INFORMATION (FSCC_FILE_SHORT_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SFIO_RESERVE_INFORMATION (FSCC_FILE_SFIO_RESERVE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_SFIO_VOLUME_INFORMATION (FSCC_FILE_SFIO_VOLUME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_HARD_LINK_INFORMATION (FSCC_FILE_HARD_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_NORMALIZED_NAME_INFORMATION (FSCC_FILE_NORMALIZED_NAME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION (FSCC_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_STANDARD_LINK_INFORMATION (FSCC_FILE_STANDARD_LINK_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FILE_MAXIMUM_INFORMATION (FSCC_FILE_MAXIMUM_INFORMATION + NT_PASSTHROUGH_OFFSET)
+/* Internal mapped versions. */
+#define SMB2_FILE_RENAME_INFORMATION_INTERNAL (FSCC_FILE_RENAME_INFORMATION + SMB2_INFO_SPECIAL)
/* NT passthough levels for qfsinfo. */
-#define SMB_FS_VOLUME_INFORMATION 1001
-#define SMB_FS_LABEL_INFORMATION 1002
-#define SMB_FS_SIZE_INFORMATION 1003
-#define SMB_FS_DEVICE_INFORMATION 1004
-#define SMB_FS_ATTRIBUTE_INFORMATION 1005
-#define SMB_FS_QUOTA_INFORMATION 1006
-#define SMB_FS_FULL_SIZE_INFORMATION 1007
-#define SMB_FS_OBJECTID_INFORMATION 1008
-#define SMB_FS_SECTOR_SIZE_INFORMATION 1011
+#define SMB_FS_VOLUME_INFORMATION (FSCC_FS_VOLUME_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_LABEL_INFORMATION (FSCC_FS_LABEL_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_SIZE_INFORMATION (FSCC_FS_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_DEVICE_INFORMATION (FSCC_FS_DEVICE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_ATTRIBUTE_INFORMATION (FSCC_FS_ATTRIBUTE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_QUOTA_INFORMATION (FSCC_FS_QUOTA_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_FULL_SIZE_INFORMATION (FSCC_FS_FULL_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_OBJECTID_INFORMATION (FSCC_FS_OBJECTID_INFORMATION + NT_PASSTHROUGH_OFFSET)
+#define SMB_FS_SECTOR_SIZE_INFORMATION (FSCC_FS_SECTOR_SIZE_INFORMATION + NT_PASSTHROUGH_OFFSET)
/* SMB_FS_DEVICE_INFORMATION device types. */
#define FILE_DEVICE_CD_ROM 0x2