Не компилируется filem.sys ( драйвер FileMon )

Тема в разделе "WASM.BEGINNERS", создана пользователем frodo17, 10 мар 2007.

  1. frodo17

    frodo17 New Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    3
    Сразу прошу прощение за глупый вопрос но сам не могу разобраться. Проблема в следующем: пытаюсь разбраться в исходниках FileMon434, запускаю исходники драйвера на компиляцию (версия DDK -3709.1830, Windows Xp pro sp2, пробовал и Free и Checked) компилятор ругается на файл wintypes.h, четыре ошибки ( подробнее в прикремленном файле ). Подскажите пожалуйста в чем дело, заранее спасибо.
     
  2. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Где файл?
     
  3. frodo17

    frodo17 New Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    3
    Список ошибок
    wintypes.h(24) : error c2220: warning treated as error - no object file generated
    wintypes.h(24) : error c4005: 'FILE_SPECIAL_ACCESS ' : macro redefinition
    wintypes.h(33) : error c4273: 'ProbeForWrite' inconsistent dll linkage
    wintypes.h(299) : error c2011:'_FILE_NAME_INFORMATION' : 'struct' type redefinition
     
  4. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    ОФФ: а где взять исходники FileMon?
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    здесь, на сайте
     
  6. vanexe1

    vanexe1 New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2009
    Сообщения:
    1
    Используйте такой wintypes.h
    Код (Text):
    1. //======================================================================
    2. //  
    3. // Wintypes.h
    4. //
    5. // Sysinternals - www.sysinternals.com
    6. // Copyright (C) 1996-2001 Mark Russinovich and Bryce Cogswell
    7. //
    8. // This header isolates Windows-specific typedefs and defines from
    9. // those of Filemon.
    10. //
    11. //======================================================================
    12.  
    13. //
    14. // We define these so that we can build the source with the NT 4 DDK. We
    15. // picked any random #define that was introduced in the NT5DDK header file
    16. // as our key.
    17. //
    18. #if !defined(MDL_64_BIT_VA) && !defined(_IA64_)
    19.  
    20. #define IRP_MJ_POWER                          0x16
    21. #define IRP_MJ_PNP                            0x1b
    22. #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION   0x18
    23.  
    24. //#define FILE_SPECIAL_ACCESS                   FILE_ANY_ACCESS
    25. #define NT5DDK 0
    26. /*
    27. VOID  
    28. NTAPI
    29. ProbeForWrite(
    30.     PVOID Address,  
    31.     ULONG Length,  
    32.     ULONG Alignment  
    33.     );
    34.     */
    35. #else
    36. #define NT5DDK 1
    37. #endif
    38.  
    39.  
    40. //
    41. // Undocumented ntoskrnl variable
    42. //
    43. extern PSHORT           NtBuildNumber;
    44.  
    45. //
    46. // For the definitions in Winioctl.h
    47. //
    48. #undef DEVICE_TYPE
    49. typedef UCHAR  BYTE;
    50. typedef USHORT WORD;
    51. typedef ULONGLONG DWORDLONG;
    52. typedef ULONG  DWORD;
    53. typedef PVOID SID;
    54.  
    55. //
    56. // So that we can pick up NT 5.0 IOCTLs in WINIOCTL.h
    57. //
    58. #undef _WIN32_WINNT
    59. #define _WIN32_WINNT 0x0500
    60.  
    61. //
    62. // Totally undocumented named pipe file system control codes
    63. //
    64. #define FSCTL_PIPE_ASSIGN_EVENT          0x110000
    65. #define FSCTL_PIPE_DISCONNECT            0x110004
    66. #define FSCTL_PIPE_QUERY_EVENT           0x110010
    67. #define FSCTL_PIPE_LISTEN                0x110008
    68. #define FSCTL_PIPE_IMPERSONATE           0x11001C
    69. #define FSCTL_PIPE_WAIT                  0x110018
    70. #define FSCTL_PIPE_QUERY_CLIENT_PROCESS  0x110024
    71. #define FSCTL_PIPE_SET_CLIENT_PROCESS    0x110020
    72. #define FSCTL_PIPE_PEEK                  0x11400C
    73. #define FSCTL_PIPE_INTERNAL_READ         0x116000
    74. #define FSCTL_PIPE_INTERNAL_WRITE        0x119FF8
    75. #define FSCTL_PIPE_TRANSCEIVE            0x11C017
    76. #define FSCTL_PIPE_INTERNAL_TRANSCEIVE   0x11DFFF
    77.  
    78. //
    79. // Undocumented mail slot file system controls
    80. //
    81. #define FSCTL_MAILSLOT_PEEK              0xC4003
    82.  
    83. //
    84. // Undocumented network redirector control
    85. //
    86. #define FSCTL_NETWORK_SET_CONFIGURATION_INFO 0x140199
    87. #define FSCTL_NETWORK_GET_CONFIGURATION_INFO 0x14019E
    88. #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS  0x1401A7
    89. #define FSCTL_NETWORK_GET_CONNECTION_INFO    0x1401A3
    90. #define FSCTL_NETWORK_DELETE_CONNECTION      0x1401AC
    91. #define FSCTL_NETWORK_GET_STATISTICS         0x1401D0
    92. #define FSCTL_NETWORK_SET_DOMAIN_NAME        0x1401E0
    93. #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT  0x1403E8
    94.  
    95. //
    96. // File system control codes incorporated from winioctl.h
    97. //
    98. #define FSCTL_REQUEST_OPLOCK_LEVEL_1    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  0, METHOD_BUFFERED, FILE_ANY_ACCESS)
    99. #define FSCTL_REQUEST_OPLOCK_LEVEL_2    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  1, METHOD_BUFFERED, FILE_ANY_ACCESS)
    100. #define FSCTL_REQUEST_BATCH_OPLOCK      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  2, METHOD_BUFFERED, FILE_ANY_ACCESS)
    101. #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  3, METHOD_BUFFERED, FILE_ANY_ACCESS)
    102. #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  4, METHOD_BUFFERED, FILE_ANY_ACCESS)
    103. #define FSCTL_OPLOCK_BREAK_NOTIFY       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  5, METHOD_BUFFERED, FILE_ANY_ACCESS)
    104. #define FSCTL_LOCK_VOLUME               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  6, METHOD_BUFFERED, FILE_ANY_ACCESS)
    105. #define FSCTL_UNLOCK_VOLUME             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  7, METHOD_BUFFERED, FILE_ANY_ACCESS)
    106. #define FSCTL_DISMOUNT_VOLUME           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  8, METHOD_BUFFERED, FILE_ANY_ACCESS)
    107. // decommissioned fsctl value                                              9
    108. #define FSCTL_IS_VOLUME_MOUNTED         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
    109. #define FSCTL_IS_PATHNAME_VALID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) // PATHNAME_BUFFER,
    110. #define FSCTL_MARK_VOLUME_DIRTY         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
    111. // decommissioned fsctl value                                             13
    112. #define FSCTL_QUERY_RETRIEVAL_POINTERS  CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14,  METHOD_NEITHER, FILE_ANY_ACCESS)
    113. #define FSCTL_GET_COMPRESSION           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
    114. #define FSCTL_SET_COMPRESSION           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    115. // decommissioned fsctl value                                             17
    116. // decommissioned fsctl value                                             18
    117. #define FSCTL_MARK_AS_SYSTEM_HIVE       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19,  METHOD_NEITHER, FILE_ANY_ACCESS)
    118. #define FSCTL_OPLOCK_BREAK_ACK_NO_2     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
    119. #define FSCTL_INVALIDATE_VOLUMES        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
    120. #define FSCTL_QUERY_FAT_BPB             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_QUERY_FAT_BPB_BUFFER
    121. #define FSCTL_REQUEST_FILTER_OPLOCK     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
    122. #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILESYSTEM_STATISTICS
    123. #define FSCTL_GET_NTFS_VOLUME_DATA      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_VOLUME_DATA_BUFFER
    124. #define FSCTL_GET_NTFS_FILE_RECORD      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_FILE_RECORD_INPUT_BUFFER, NTFS_FILE_RECORD_OUTPUT_BUFFER
    125. #define FSCTL_GET_VOLUME_BITMAP         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27,  METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER
    126. #define FSCTL_GET_RETRIEVAL_POINTERS    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28,  METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_BUFFER
    127. #define FSCTL_MOVE_FILE                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // MOVE_FILE_DATA,
    128. #define FSCTL_IS_VOLUME_DIRTY           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
    129. // decomissioned fsctl value                                              31
    130. #define FSCTL_ALLOW_EXTENDED_DASD_IO    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER,  FILE_ANY_ACCESS)
    131. // decommissioned fsctl value                                             33
    132. // decommissioned fsctl value                                             34
    133. #define FSCTL_FIND_FILES_BY_SID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
    134. // decommissioned fsctl value                                             36
    135. // decommissioned fsctl value                                             37
    136. #define FSCTL_SET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_OBJECTID_BUFFER
    137. #define FSCTL_GET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
    138. #define FSCTL_DELETE_OBJECT_ID          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    139. #define FSCTL_SET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
    140. #define FSCTL_GET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) // REPARSE_DATA_BUFFER
    141. #define FSCTL_DELETE_REPARSE_POINT      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
    142. #define FSCTL_ENUM_USN_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_ANY_ACCESS) // MFT_ENUM_DATA,
    143. #define FSCTL_SECURITY_ID_CHECK         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45,  METHOD_NEITHER, FILE_READ_DATA)  // BULK_SECURITY_TEST_DATA,
    144. #define FSCTL_READ_USN_JOURNAL          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46,  METHOD_NEITHER, FILE_ANY_ACCESS) // READ_USN_JOURNAL_DATA, USN
    145. #define FSCTL_SET_OBJECT_ID_EXTENDED    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    146. #define FSCTL_CREATE_OR_GET_OBJECT_ID   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
    147. #define FSCTL_SET_SPARSE                CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    148. #define FSCTL_SET_ZERO_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) // FILE_ZERO_DATA_INFORMATION,
    149. #define FSCTL_QUERY_ALLOCATED_RANGES    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51,  METHOD_NEITHER, FILE_READ_DATA)  // FILE_ALLOCATED_RANGE_BUFFER, FILE_ALLOCATED_RANGE_BUFFER
    150. // decommissioned fsctl value                                             52
    151. #define FSCTL_SET_ENCRYPTION            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53,  METHOD_NEITHER, FILE_ANY_ACCESS) // ENCRYPTION_BUFFER, DECRYPTION_STATUS_BUFFER
    152. #define FSCTL_ENCRYPTION_FSCTL_IO       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54,  METHOD_NEITHER, FILE_ANY_ACCESS)
    153. #define FSCTL_WRITE_RAW_ENCRYPTED       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55,  METHOD_NEITHER, FILE_SPECIAL_ACCESS) // ENCRYPTED_DATA_INFO,
    154. #define FSCTL_READ_RAW_ENCRYPTED        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56,  METHOD_NEITHER, FILE_SPECIAL_ACCESS) // REQUEST_RAW_ENCRYPTED_DATA, ENCRYPTED_DATA_INFO
    155. #define FSCTL_CREATE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA,
    156. #define FSCTL_READ_FILE_USN_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58,  METHOD_NEITHER, FILE_ANY_ACCESS) // Read the Usn Record for a file
    157. #define FSCTL_WRITE_USN_CLOSE_RECORD    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59,  METHOD_NEITHER, FILE_ANY_ACCESS) // Generate Close Usn Record
    158. #define FSCTL_EXTEND_VOLUME             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
    159. #define FSCTL_QUERY_USN_JOURNAL         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
    160. #define FSCTL_DELETE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
    161. #define FSCTL_MARK_HANDLE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
    162. #define FSCTL_SIS_COPYFILE              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
    163. #define FSCTL_SIS_LINK_FILES            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    164. #define FSCTL_HSM_MSG                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    165. // decommissioned fsctl value                                             67
    166. #define FSCTL_HSM_DATA                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
    167. #define FSCTL_RECALL_FILE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
    168. // decommissioned fsctl value                                             70
    169. #define FSCTL_READ_FROM_PLEX            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
    170. #define FSCTL_FILE_PREFETCH             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_PREFETCH
    171. #define FSCTL_READ_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
    172. #define FSCTL_WRITE_PROPERTY_DATA       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
    173. #define FSCTL_FIND_FILES_BY_SID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
    174. // decommissioned fsctl value                                             36
    175. #define FSCTL_DUMP_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37,  METHOD_NEITHER, FILE_ANY_ACCESS)
    176. #define FSCTL_SET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_OBJECTID_BUFFER
    177. #define FSCTL_GET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
    178. #define FSCTL_DELETE_OBJECT_ID          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    179. #define FSCTL_SET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
    180. #define FSCTL_GET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) // REPARSE_DATA_BUFFER
    181. #define FSCTL_DELETE_REPARSE_POINT      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
    182. #define FSCTL_ENUM_USN_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_ANY_ACCESS) // MFT_ENUM_DATA,
    183. #define FSCTL_SECURITY_ID_CHECK         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45,  METHOD_NEITHER, FILE_READ_DATA)  // BULK_SECURITY_TEST_DATA,
    184. #define FSCTL_READ_USN_JOURNAL          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46,  METHOD_NEITHER, FILE_ANY_ACCESS) // READ_USN_JOURNAL_DATA, USN
    185. #define FSCTL_SET_OBJECT_ID_EXTENDED    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    186. #define FSCTL_CREATE_OR_GET_OBJECT_ID   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
    187. #define FSCTL_SET_SPARSE                CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
    188. #define FSCTL_SET_ZERO_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) // FILE_ZERO_DATA_INFORMATION,
    189. #define FSCTL_QUERY_ALLOCATED_RANGES    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51,  METHOD_NEITHER, FILE_READ_DATA)  // FILE_ALLOCATED_RANGE_BUFFER, FILE_ALLOCATED_RANGE_BUFFER
    190. #define FSCTL_ENABLE_UPGRADE            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
    191. #define FSCTL_SET_ENCRYPTION            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53,  METHOD_NEITHER, FILE_ANY_ACCESS) // ENCRYPTION_BUFFER, DECRYPTION_STATUS_BUFFER
    192. #define FSCTL_ENCRYPTION_FSCTL_IO       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54,  METHOD_NEITHER, FILE_ANY_ACCESS)
    193. #define FSCTL_WRITE_RAW_ENCRYPTED       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55,  METHOD_NEITHER, FILE_SPECIAL_ACCESS) // ENCRYPTED_DATA_INFO,
    194. #define FSCTL_READ_RAW_ENCRYPTED        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56,  METHOD_NEITHER, FILE_SPECIAL_ACCESS) // REQUEST_RAW_ENCRYPTED_DATA, ENCRYPTED_DATA_INFO
    195. #define FSCTL_CREATE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA,
    196. #define FSCTL_READ_FILE_USN_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58,  METHOD_NEITHER, FILE_ANY_ACCESS) // Read the Usn Record for a file
    197. #define FSCTL_WRITE_USN_CLOSE_RECORD    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59,  METHOD_NEITHER, FILE_ANY_ACCESS) // Generate Close Usn Record
    198. #define FSCTL_EXTEND_VOLUME             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
    199. #define FSCTL_QUERY_USN_JOURNAL         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
    200. #define FSCTL_DELETE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
    201. #define FSCTL_MARK_HANDLE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
    202. #define FSCTL_SIS_COPYFILE              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
    203. #define FSCTL_SIS_LINK_FILES            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    204. #define FSCTL_HSM_MSG                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    205. #define FSCTL_NSS_CONTROL               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
    206. #define FSCTL_HSM_DATA                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
    207. #define FSCTL_RECALL_FILE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
    208. #define FSCTL_NSS_RCONTROL              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
    209.  
    210.  
    211. typedef struct {
    212.  
    213.     HANDLE FileHandle;
    214.     LARGE_INTEGER StartingVcn;
    215.     LARGE_INTEGER StartingLcn;
    216.     DWORD ClusterCount;
    217.  
    218. } MOVE_FILE_DATA, *PMOVE_FILE_DATA;
    219.  
    220.  
    221. //
    222. // Named pipe and mail slot prefix names
    223. //
    224. #define NAMED_PIPE_PREFIX                "\\\\.\\Pipe"
    225. #define NAMED_PIPE_PREFIX_LENGTH         (sizeof(NAMED_PIPE_PREFIX)-1)
    226.  
    227. #define MAIL_SLOT_PREFIX                "\\\\.\\MailSlot"
    228. #define MAIL_SLOT_PREFIX_LENGTH         (sizeof(MAIL_SLOT_PREFIX)-1)
    229.  
    230. //
    231. // Common file control block header, copied from  
    232. // the file system development kit header file, NTIFS.H
    233. //
    234. typedef struct _FSRTL_COMMON_FCB_HEADER {
    235.  
    236.     CSHORT NodeTypeCode;
    237.     CSHORT NodeByteSize;
    238.  
    239.     //
    240.     //  General flags available to FsRtl.
    241.     //
    242.  
    243.     UCHAR Flags;
    244.  
    245.     //
    246.     //  Indicates if fast I/O is possible or if we should be calling
    247.     //  the check for fast I/O routine which is found via the driver
    248.     //  object.
    249.     //
    250.  
    251.     UCHAR IsFastIoPossible; // really type FAST_IO_POSSIBLE
    252.  
    253.     //
    254.     //  Second Flags Field
    255.     //
    256.  
    257.     UCHAR Flags2;
    258.  
    259.     //
    260.     //  The following reserved field should always be 0
    261.     //
    262.  
    263.     UCHAR Reserved;
    264.  
    265.     PERESOURCE Resource;
    266.  
    267.     PERESOURCE PagingIoResource;
    268.  
    269.     LARGE_INTEGER AllocationSize;
    270.     LARGE_INTEGER FileSize;
    271.     LARGE_INTEGER ValidDataLength;
    272.  
    273. } FSRTL_COMMON_FCB_HEADER;
    274. typedef FSRTL_COMMON_FCB_HEADER *PFSRTL_COMMON_FCB_HEADER;
    275.  
    276.  
    277. //  
    278. // Directory control structure
    279. //
    280. typedef struct {
    281.     ULONG Length;
    282.     PUNICODE_STRING FileName;
    283.     FILE_INFORMATION_CLASS FileInformationClass;
    284.     ULONG FileIndex;
    285. } QUERY_DIRECTORY, *PQUERY_DIRECTORY;
    286.  
    287. //
    288. // Lock control data structure
    289. //
    290. typedef struct {
    291.     PLARGE_INTEGER Length;
    292.     ULONG Key;
    293.     LARGE_INTEGER ByteOffset;
    294. } LOCK_CONTROL, *PLOCK_CONTROL;
    295.  
    296. //
    297. // File name information  
    298. //
    299. /*
    300. #if !NT5DDK
    301. typedef struct _FILE_NAME_INFORMATION {
    302.     ULONG FileNameLength;
    303.     WCHAR FileName[1];
    304. } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
    305. #endif
    306. */
    307.  
    308. typedef struct _FILE_INTERNAL_INFORMATION {
    309.     LARGE_INTEGER IndexNumber;
    310. } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
    311.  
    312. //
    313. // Documented in IFS Kit
    314. //
    315. NTKERNELAPI
    316. NTSTATUS
    317. IoQueryVolumeInformation(
    318.     IN PFILE_OBJECT FileObject,
    319.     IN FS_INFORMATION_CLASS FsInformationClass,
    320.     IN ULONG Length,
    321.     OUT PVOID FsInformation,
    322.     OUT PULONG ReturnedLength
    323.     );