Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

626 lines
18 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. fmifs.h
  5. Abstract:
  6. This header file contains the specification of the interface
  7. between the file manager and fmifs.dll for the purposes of
  8. accomplishing IFS functions.
  9. Author:
  10. Norbert P. Kusters (norbertk) 6-Mar-92
  11. --*/
  12. #if !defined( _FMIFS_DEFN_ )
  13. #define _FMIFS_DEFN_
  14. typedef LONG *PNTSTATUS;
  15. //
  16. // These are the defines for 'PacketType'.
  17. // Revisions: 02/03/98: Dave Sheldon - Added FmIfsNoMediaInDevice
  18. //
  19. typedef enum _FMIFS_PACKET_TYPE {
  20. FmIfsPercentCompleted = 0,
  21. FmIfsFormatReport = 1,
  22. FmIfsInsertDisk = 2,
  23. FmIfsIncompatibleFileSystem = 3,
  24. FmIfsFormattingDestination = 4,
  25. FmIfsIncompatibleMedia = 5,
  26. FmIfsAccessDenied = 6,
  27. FmIfsMediaWriteProtected = 7,
  28. FmIfsCantLock = 8,
  29. FmIfsCantQuickFormat = 9,
  30. FmIfsIoError = 10,
  31. FmIfsFinished = 11,
  32. FmIfsBadLabel = 12,
  33. FmIfsCheckOnReboot = 13,
  34. FmIfsTextMessage = 14,
  35. FmIfsHiddenStatus = 15,
  36. FmIfsClusterSizeTooSmall = 16,
  37. FmIfsClusterSizeTooBig = 17,
  38. FmIfsVolumeTooSmall = 18,
  39. FmIfsVolumeTooBig = 19,
  40. FmIfsNoMediaInDevice = 20,
  41. FmIfsClustersCountBeyond32bits = 21,
  42. FmIfsCantChkMultiVolumeOfSameFS = 22,
  43. FmIfsFormatFatUsing64KCluster = 23
  44. } FMIFS_PACKET_TYPE, *PFMIFS_PACKET_TYPE;
  45. typedef struct _FMIFS_PERCENT_COMPLETE_INFORMATION {
  46. ULONG PercentCompleted;
  47. } FMIFS_PERCENT_COMPLETE_INFORMATION, *PFMIFS_PERCENT_COMPLETE_INFORMATION;
  48. //
  49. // These couple of bits are used in the ValuesInMB field of the structure
  50. // FMIFS_FORMAT_REPORT_INFORMATION. When set, the corresponding
  51. // ULONG value becomes in units of megabytes. If not set, the corresponding
  52. // ULONG value is in units of kilobytes.
  53. //
  54. #define TOTAL_DISK_SPACE_IN_MB 1
  55. #define BYTES_AVAILABLE_IN_MB 2
  56. typedef struct _FMIFS_FORMAT_REPORT_INFORMATION {
  57. ULONG KiloBytesTotalDiskSpace;
  58. ULONG KiloBytesAvailable;
  59. ULONG ValuesInMB;
  60. } FMIFS_FORMAT_REPORT_INFORMATION, *PFMIFS_FORMAT_REPORT_INFORMATION;
  61. // The packet for FmIfsDblspaceCreated is a Unicode string
  62. // giving the name of the Compressed Volume File; it is not
  63. // necessarily zero-terminated.
  64. //
  65. #define DISK_TYPE_GENERIC 0
  66. #define DISK_TYPE_SOURCE 1
  67. #define DISK_TYPE_TARGET 2
  68. #define DISK_TYPE_SOURCE_AND_TARGET 3
  69. typedef struct _FMIFS_INSERT_DISK_INFORMATION {
  70. ULONG DiskType;
  71. } FMIFS_INSERT_DISK_INFORMATION, *PFMIFS_INSERT_DISK_INFORMATION;
  72. typedef struct _FMIFS_IO_ERROR_INFORMATION {
  73. ULONG DiskType;
  74. ULONG Head;
  75. ULONG Track;
  76. } FMIFS_IO_ERROR_INFORMATION, *PFMIFS_IO_ERROR_INFORMATION;
  77. typedef struct _FMIFS_FINISHED_INFORMATION {
  78. BOOLEAN Success;
  79. } FMIFS_FINISHED_INFORMATION, *PFMIFS_FINISHED_INFORMATION;
  80. typedef struct _FMIFS_CHECKONREBOOT_INFORMATION {
  81. OUT BOOLEAN QueryResult; // TRUE for "yes", FALSE for "no"
  82. } FMIFS_CHECKONREBOOT_INFORMATION, *PFMIFS_CHECKONREBOOT_INFORMATION;
  83. typedef enum _TEXT_MESSAGE_TYPE {
  84. MESSAGE_TYPE_PROGRESS,
  85. MESSAGE_TYPE_RESULTS,
  86. MESSAGE_TYPE_FINAL
  87. } TEXT_MESSAGE_TYPE, *PTEXT_MESSAGE_TYPE;
  88. typedef struct _FMIFS_TEXT_MESSAGE {
  89. IN TEXT_MESSAGE_TYPE MessageType;
  90. IN PSTR Message;
  91. } FMIFS_TEXT_MESSAGE, *PFMIFS_TEXT_MESSAGE;
  92. #define FMIFS_SONY_MS_MASK 0x00000001 // mask for all types of memory stick
  93. #define FMIFS_SONY_MS 0x00000001 // device is a memory stick
  94. #define FMIFS_SONY_MS_FMT_CMD_CAPABLE 0x00000010 // reader supports fmt cmd
  95. #define FMIFS_SONY_MS_PROGRESS_INDICATOR_CAPABLE 0x00000020 // reader supports progress indicator
  96. #define FMIFS_NTFS_NOT_SUPPORTED 0x00000040 // ntfs should not be used on this device
  97. typedef struct _FMIFS_DEVICE_INFORMATION {
  98. ULONG Flags;
  99. } FMIFS_DEVICE_INFORMATION, *PFMIFS_DEVICE_INFORMATION;
  100. //
  101. // This is a list of supported floppy media types for format.
  102. //
  103. typedef enum _FMIFS_MEDIA_TYPE {
  104. FmMediaUnknown,
  105. FmMediaF5_160_512, // 5.25", 160KB, 512 bytes/sector
  106. FmMediaF5_180_512, // 5.25", 180KB, 512 bytes/sector
  107. FmMediaF5_320_512, // 5.25", 320KB, 512 bytes/sector
  108. FmMediaF5_320_1024, // 5.25", 320KB, 1024 bytes/sector
  109. FmMediaF5_360_512, // 5.25", 360KB, 512 bytes/sector
  110. FmMediaF3_720_512, // 3.5", 720KB, 512 bytes/sector
  111. FmMediaF5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
  112. FmMediaF3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
  113. FmMediaF3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
  114. FmMediaF3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
  115. FmMediaRemovable, // Removable media other than floppy
  116. FmMediaFixed,
  117. FmMediaF3_120M_512, // 3.5", 120M Floppy
  118. // FMR Sep.8.1994 SFT YAM
  119. // FMR Jul.14.1994 SFT KMR
  120. FmMediaF3_640_512, // 3.5" , 640KB, 512 bytes/sector
  121. FmMediaF5_640_512, // 5.25", 640KB, 512 bytes/sector
  122. FmMediaF5_720_512, // 5.25", 720KB, 512 bytes/sector
  123. // FMR Sep.8.1994 SFT YAM
  124. // FMR Jul.14.1994 SFT KMR
  125. FmMediaF3_1Pt2_512, // 3.5" , 1.2Mb, 512 bytes/sector
  126. // FMR Sep.8.1994 SFT YAM
  127. // FMR Jul.14.1994 SFT KMR
  128. FmMediaF3_1Pt23_1024, // 3.5" , 1.23Mb, 1024 bytes/sector
  129. FmMediaF5_1Pt23_1024, // 5.25", 1.23MB, 1024 bytes/sector
  130. FmMediaF3_128Mb_512, // 3.5" , 128MB, 512 bytes/sector 3.5"MO
  131. FmMediaF3_230Mb_512, // 3.5" , 230MB, 512 bytes/sector 3.5"MO
  132. FmMediaF3_200Mb_512, // 3.5" , 200MB, 512 bytes/sector HiFD (200MB Floppy)
  133. FmMediaF3_240Mb_512, // 3.5" , 240MB, 512 bytes/sector HiFD (240MB Floppy)
  134. FmMediaEndOfData // Total data count.
  135. } FMIFS_MEDIA_TYPE, *PFMIFS_MEDIA_TYPE;
  136. //
  137. // The structure below defines information to be passed into ChkdskEx.
  138. // When new fields are added, the version number will have to be upgraded
  139. // so that only new code will reference those new fields.
  140. //
  141. typedef struct {
  142. UCHAR Major; // initial version is 1.0
  143. UCHAR Minor;
  144. ULONG Flags;
  145. } FMIFS_CHKDSKEX_PARAM, *PFMIFS_CHKDSKEX_PARAM;
  146. //
  147. // Internal definitions for Flags field in FMIFS_CHKDSKEX_PARAM
  148. //
  149. #define FMIFS_CHKDSK_RECOVER_FREE_SPACE 0x00000002UL
  150. #define FMIFS_CHKDSK_RECOVER_ALLOC_SPACE 0x00000004UL
  151. //
  152. // External definitions for Flags field in FMIFS_CHKDSKEX_PARAM
  153. //
  154. // FMIFS_CHKDSK_VERBOSE
  155. // - For FAT, chkdsk will print every filename being processed
  156. // - For NTFS, chkdsk will print clean up messages
  157. // FMIFS_CHKDSK_RECOVER
  158. // - Perform sector checking on free and allocated space
  159. // FMIFS_CHKDSK_EXTEND
  160. // - For NTFS, chkdsk will extend a volume
  161. // FMIFS_CHKDSK_DOWNGRADE (for NT5 or later but obsolete anyway)
  162. // - For NTFS, this downgrade a volume from most recent NTFS version
  163. // FMIFS_CHKDSK_ENABLE_UPGRADE (for NT5 or later but obsolete anyway)
  164. // - For NTFS, this upgrades a volume to most recent NTFS version
  165. // FMIFS_CHKDSK_CHECK_IF_DIRTY
  166. // - Perform consistency check only if the volume is dirty
  167. // FMIFS_CHKDSK_FORCE (for NT5 or later)
  168. // - Forces the volume to dismount first if necessary
  169. // FMIFS_CHKDSK_SKIP_INDEX_SCAN
  170. // - Skip the scanning of each index entry
  171. // FMIFS_CHKDSK_SKIP_CYCLE_SCAN
  172. // - Skip the checking of cycles within the directory tree
  173. #define FMIFS_CHKDSK_VERBOSE 0x00000001UL
  174. #define FMIFS_CHKDSK_RECOVER (FMIFS_CHKDSK_RECOVER_FREE_SPACE | \
  175. FMIFS_CHKDSK_RECOVER_ALLOC_SPACE)
  176. #define FMIFS_CHKDSK_EXTEND 0x00000008UL
  177. #define FMIFS_CHKDSK_DOWNGRADE 0x00000010UL
  178. #define FMIFS_CHKDSK_ENABLE_UPGRADE 0x00000020UL
  179. #define FMIFS_CHKDSK_CHECK_IF_DIRTY 0x00000080UL
  180. #define FMIFS_CHKDSK_FORCE 0x00000100UL
  181. #define FMIFS_CHKDSK_SKIP_INDEX_SCAN 0x00000200UL
  182. #define FMIFS_CHKDSK_SKIP_CYCLE_SCAN 0x00000400UL
  183. //
  184. // The structure below defines information to be passed into FormatEx2.
  185. // When new fields are added, the version number will have to be upgraded
  186. // so that only new code will reference those new fields.
  187. //
  188. typedef struct {
  189. UCHAR Major; // initial version is 1.0
  190. UCHAR Minor;
  191. ULONG Flags;
  192. PWSTR LabelString; // supplies the volume's label
  193. ULONG ClusterSize; // supplies the cluster size for the volume
  194. } FMIFS_FORMATEX2_PARAM, *PFMIFS_FORMATEX2_PARAM;
  195. //
  196. // External definitions for Flags field in FMIFS_FORMATEX2_PARAM
  197. //
  198. // FMIFS_FORMAT_QUICK
  199. // - Performs a quick format
  200. // FMIFS_FORMAT_BACKWARD_COMPATIBLE
  201. // - Formats a volume to be backward compatible to an older version of NTFS volume
  202. // FMIFS_FORMAT_FORCE
  203. // - Forces the volume to dismount first if necessary
  204. #define FMIFS_FORMAT_QUICK 0x00000001UL
  205. #define FMIFS_FORMAT_BACKWARD_COMPATIBLE 0x00000002UL
  206. #define FMIFS_FORMAT_FORCE 0x00000004UL
  207. //
  208. // Maximum length of file system format name string including version number in it
  209. // (e.g. FAT32, NTFS 5.0, NTFS 4.0, FAT, etc)
  210. //
  211. #define MAX_FILE_SYSTEM_FORMAT_VERSION_NAME_LEN 16
  212. //
  213. // Maximum length of file system name string (e.g. NTFS, FAT32, FAT, etc)
  214. //
  215. #define MAX_FILE_SYSTEM_FORMAT_NAME_LEN 9
  216. //
  217. // Function types/interfaces.
  218. //
  219. typedef BOOLEAN
  220. (*FMIFS_CALLBACK)(
  221. IN FMIFS_PACKET_TYPE PacketType,
  222. IN ULONG PacketLength,
  223. IN PVOID PacketData
  224. );
  225. typedef
  226. VOID
  227. (*PFMIFS_FORMAT_ROUTINE)(
  228. IN PWSTR DriveName,
  229. IN FMIFS_MEDIA_TYPE MediaType,
  230. IN PWSTR FileSystemName,
  231. IN PWSTR Label,
  232. IN BOOLEAN Quick,
  233. IN FMIFS_CALLBACK Callback
  234. );
  235. typedef
  236. VOID
  237. (*PFMIFS_FORMATEX_ROUTINE)(
  238. IN PWSTR DriveName,
  239. IN FMIFS_MEDIA_TYPE MediaType,
  240. IN PWSTR FileSystemName,
  241. IN PWSTR Label,
  242. IN BOOLEAN Quick,
  243. IN ULONG ClusterSize,
  244. IN FMIFS_CALLBACK Callback
  245. );
  246. typedef
  247. VOID
  248. (*PFMIFS_FORMATEX2_ROUTINE)(
  249. IN PWSTR DriveName,
  250. IN FMIFS_MEDIA_TYPE MediaType,
  251. IN PWSTR FileSystemName,
  252. IN PFMIFS_FORMATEX2_PARAM Param,
  253. IN FMIFS_CALLBACK Callback
  254. );
  255. typedef
  256. BOOLEAN
  257. (*PFMIFS_ENABLECOMP_ROUTINE)(
  258. IN PWSTR DriveName,
  259. IN USHORT CompressionFormat
  260. );
  261. typedef
  262. VOID
  263. (*PFMIFS_CHKDSK_ROUTINE)(
  264. IN PWSTR DriveName,
  265. IN PWSTR FileSystemName,
  266. IN BOOLEAN Fix,
  267. IN BOOLEAN Verbose,
  268. IN BOOLEAN OnlyIfDirty,
  269. IN BOOLEAN Recover,
  270. IN PWSTR PathToCheck,
  271. IN BOOLEAN Extend,
  272. IN FMIFS_CALLBACK Callback
  273. );
  274. typedef
  275. VOID
  276. (*PFMIFS_CHKDSKEX_ROUTINE)(
  277. IN PWSTR DriveName,
  278. IN PWSTR FileSystemName,
  279. IN BOOLEAN Fix,
  280. IN PFMIFS_CHKDSKEX_PARAM Param,
  281. IN FMIFS_CALLBACK Callback
  282. );
  283. typedef
  284. VOID
  285. (*PFMIFS_EXTEND_ROUTINE)(
  286. IN PWSTR DriveName,
  287. IN BOOLEAN Verify,
  288. IN FMIFS_CALLBACK Callback
  289. );
  290. typedef
  291. VOID
  292. (*PFMIFS_DISKCOPY_ROUTINE)(
  293. IN PWSTR SourceDrive,
  294. IN PWSTR DestDrive,
  295. IN BOOLEAN Verify,
  296. IN FMIFS_CALLBACK Callback
  297. );
  298. typedef
  299. BOOLEAN
  300. (*PFMIFS_SETLABEL_ROUTINE)(
  301. IN PWSTR DriveName,
  302. IN PWSTR Label
  303. );
  304. typedef
  305. BOOLEAN
  306. (*PFMIFS_QSUPMEDIA_ROUTINE)(
  307. IN PWSTR DriveName,
  308. OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
  309. IN ULONG NumberOfArrayEntries,
  310. OUT PULONG NumberOfMediaTypes
  311. );
  312. typedef
  313. BOOLEAN
  314. (*PFMIFS_QUERY_DEVICE_INFO_BY_HANDLE_ROUTINE)(
  315. IN HANDLE DriveHandle,
  316. OUT PFMIFS_DEVICE_INFORMATION DevInfo,
  317. IN ULONG DevInfoSize
  318. );
  319. typedef
  320. BOOLEAN
  321. (*PFMIFS_QUERY_DEVICE_INFO_ROUTINE)(
  322. IN PWSTR DriveName,
  323. OUT PFMIFS_DEVICE_INFORMATION DevInfo,
  324. IN ULONG DevInfoSize
  325. );
  326. typedef
  327. VOID
  328. (*PFMIFS_DOUBLESPACE_CREATE_ROUTINE)(
  329. IN PWSTR HostDriveName,
  330. IN ULONG Size,
  331. IN PWSTR Label,
  332. IN PWSTR NewDriveName,
  333. IN FMIFS_CALLBACK Callback
  334. );
  335. #if defined( DBLSPACE_ENABLED )
  336. typedef
  337. VOID
  338. (*PFMIFS_DOUBLESPACE_DELETE_ROUTINE)(
  339. IN PWSTR DblspaceDriveName,
  340. IN FMIFS_CALLBACK Callback
  341. );
  342. typedef
  343. VOID
  344. (*PFMIFS_DOUBLESPACE_MOUNT_ROUTINE)(
  345. IN PWSTR HostDriveName,
  346. IN PWSTR CvfName,
  347. IN PWSTR NewDriveName,
  348. IN FMIFS_CALLBACK Callback
  349. );
  350. typedef
  351. VOID
  352. (*PFMIFS_DOUBLESPACE_DISMOUNT_ROUTINE)(
  353. IN PWSTR DblspaceDriveName,
  354. IN FMIFS_CALLBACK Callback
  355. );
  356. typedef
  357. BOOLEAN
  358. (*PFMIFS_DOUBLESPACE_QUERY_INFO_ROUTINE)(
  359. IN PWSTR DosDriveName,
  360. OUT PBOOLEAN IsRemovable,
  361. OUT PBOOLEAN IsFloppy,
  362. OUT PBOOLEAN IsCompressed,
  363. OUT PBOOLEAN Error,
  364. OUT PWSTR NtDriveName,
  365. IN ULONG MaxNtDriveNameLength,
  366. OUT PWSTR CvfFileName,
  367. IN ULONG MaxCvfFileNameLength,
  368. OUT PWSTR HostDriveName,
  369. IN ULONG MaxHostDriveNameLength
  370. );
  371. typedef
  372. BOOLEAN
  373. (*PFMIFS_DOUBLESPACE_SET_AUTMOUNT_ROUTINE)(
  374. IN BOOLEAN EnableAutomount
  375. );
  376. #endif // DBLSPACE_ENABLED
  377. FMIFS_MEDIA_TYPE
  378. ComputeFmMediaType(
  379. IN MEDIA_TYPE MediaType
  380. );
  381. VOID
  382. Format(
  383. IN PWSTR DriveName,
  384. IN FMIFS_MEDIA_TYPE MediaType,
  385. IN PWSTR FileSystemName,
  386. IN PWSTR Label,
  387. IN BOOLEAN Quick,
  388. IN FMIFS_CALLBACK Callback
  389. );
  390. VOID
  391. FormatEx(
  392. IN PWSTR DriveName,
  393. IN FMIFS_MEDIA_TYPE MediaType,
  394. IN PWSTR FileSystemName,
  395. IN PWSTR Label,
  396. IN BOOLEAN Quick,
  397. IN ULONG ClusterSize,
  398. IN FMIFS_CALLBACK Callback
  399. );
  400. VOID
  401. FormatEx2(
  402. IN PWSTR DriveName,
  403. IN FMIFS_MEDIA_TYPE MediaType,
  404. IN PWSTR FileSystemName,
  405. IN PFMIFS_FORMATEX2_PARAM Param,
  406. IN FMIFS_CALLBACK Callback
  407. );
  408. BOOLEAN
  409. EnableVolumeCompression(
  410. IN PWSTR DriveName,
  411. IN USHORT CompressionFormat
  412. );
  413. VOID
  414. Chkdsk(
  415. IN PWSTR DriveName,
  416. IN PWSTR FileSystemName,
  417. IN BOOLEAN Fix,
  418. IN BOOLEAN Verbose,
  419. IN BOOLEAN OnlyIfDirty,
  420. IN BOOLEAN Recover,
  421. IN PWSTR PathToCheck,
  422. IN BOOLEAN Extend,
  423. IN FMIFS_CALLBACK Callback
  424. );
  425. VOID
  426. ChkdskEx(
  427. IN PWSTR DriveName,
  428. IN PWSTR FileSystemName,
  429. IN BOOLEAN Fix,
  430. IN PFMIFS_CHKDSKEX_PARAM Param,
  431. IN FMIFS_CALLBACK Callback
  432. );
  433. VOID
  434. Extend(
  435. IN PWSTR DriveName,
  436. IN BOOLEAN Verify,
  437. IN FMIFS_CALLBACK Callback
  438. );
  439. VOID
  440. DiskCopy(
  441. IN PWSTR SourceDrive,
  442. IN PWSTR DestDrive,
  443. IN BOOLEAN Verify,
  444. IN FMIFS_CALLBACK Callback
  445. );
  446. BOOLEAN
  447. SetLabel(
  448. IN PWSTR DriveName,
  449. IN PWSTR Label
  450. );
  451. BOOLEAN
  452. QuerySupportedMedia(
  453. IN PWSTR DriveName,
  454. OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
  455. IN ULONG NumberOfArrayEntries,
  456. OUT PULONG NumberOfMediaTypes
  457. );
  458. BOOLEAN
  459. QueryAvailableFileSystemFormat(
  460. IN ULONG Index,
  461. OUT PWSTR FileSystemName,
  462. OUT PUCHAR MajorVersion,
  463. OUT PUCHAR MinorVersion,
  464. OUT PBOOLEAN Latest
  465. );
  466. BOOLEAN
  467. QueryFileSystemName(
  468. IN PWSTR DriveName,
  469. OUT PWSTR FileSystemName,
  470. OUT PUCHAR MajorVersion,
  471. OUT PUCHAR MinorVersion,
  472. OUT PNTSTATUS ErrorCode
  473. );
  474. BOOLEAN
  475. QueryLatestFileSystemVersion(
  476. IN PWSTR FileSystemName,
  477. OUT PUCHAR MajorVersion,
  478. OUT PUCHAR MinorVersion
  479. );
  480. BOOLEAN
  481. QueryDeviceInformation(
  482. IN PWSTR DriveName,
  483. OUT PFMIFS_DEVICE_INFORMATION DevInfo,
  484. IN ULONG DevInfoSize
  485. );
  486. BOOLEAN
  487. QueryDeviceInformationByHandle(
  488. IN HANDLE DriveHandle,
  489. OUT PFMIFS_DEVICE_INFORMATION DevInfo,
  490. IN ULONG DevInfoSize
  491. );
  492. VOID
  493. DoubleSpaceCreate(
  494. IN PWSTR HostDriveName,
  495. IN ULONG Size,
  496. IN PWSTR Label,
  497. IN PWSTR NewDriveName,
  498. IN FMIFS_CALLBACK Callback
  499. );
  500. #if defined( DBLSPACE_ENABLED )
  501. VOID
  502. DoubleSpaceDelete(
  503. IN PWSTR DblspaceDriveName,
  504. IN FMIFS_CALLBACK Callback
  505. );
  506. VOID
  507. DoubleSpaceMount(
  508. IN PWSTR HostDriveName,
  509. IN PWSTR CvfName,
  510. IN PWSTR NewDriveName,
  511. IN FMIFS_CALLBACK Callback
  512. );
  513. VOID
  514. DoubleSpaceDismount(
  515. IN PWSTR DblspaceDriveName,
  516. IN FMIFS_CALLBACK Callback
  517. );
  518. // Miscellaneous prototypes:
  519. //
  520. BOOLEAN
  521. FmifsQueryDriveInformation(
  522. IN PWSTR DosDriveName,
  523. OUT PBOOLEAN IsRemovable,
  524. OUT PBOOLEAN IsFloppy,
  525. OUT PBOOLEAN IsCompressed,
  526. OUT PBOOLEAN Error,
  527. OUT PWSTR NtDriveName,
  528. IN ULONG MaxNtDriveNameLength,
  529. OUT PWSTR CvfFileName,
  530. IN ULONG MaxCvfFileNameLength,
  531. OUT PWSTR HostDriveName,
  532. IN ULONG MaxHostDriveNameLength
  533. );
  534. BOOLEAN
  535. FmifsSetAutomount(
  536. IN BOOLEAN EnableAutomount
  537. );
  538. #endif
  539. #endif // _FMIFS_DEFN_