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.

195 lines
5.1 KiB

  1. /*++
  2. Copyright (c) 1992 Microsoft Corporation
  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. //
  15. // These are the defines for 'PacketType'.
  16. //
  17. typedef enum _FMIFS_PACKET_TYPE {
  18. FmIfsPercentCompleted,
  19. FmIfsFormatReport,
  20. FmIfsInsertDisk,
  21. FmIfsIncompatibleFileSystem,
  22. FmIfsFormattingDestination,
  23. FmIfsIncompatibleMedia,
  24. FmIfsAccessDenied,
  25. FmIfsMediaWriteProtected,
  26. FmIfsCantLock,
  27. FmIfsCantQuickFormat,
  28. FmIfsIoError,
  29. FmIfsFinished,
  30. FmIfsBadLabel
  31. } FMIFS_PACKET_TYPE, *PFMIFS_PACKET_TYPE;
  32. typedef struct _FMIFS_PERCENT_COMPLETE_INFORMATION {
  33. DWORD PercentCompleted;
  34. } FMIFS_PERCENT_COMPLETE_INFORMATION, *PFMIFS_PERCENT_COMPLETE_INFORMATION;
  35. typedef struct _FMIFS_FORMAT_REPORT_INFORMATION {
  36. DWORD KiloBytesTotalDiskSpace;
  37. DWORD KiloBytesAvailable;
  38. } FMIFS_FORMAT_REPORT_INFORMATION, *PFMIFS_FORMAT_REPORT_INFORMATION;
  39. #define DISK_TYPE_GENERIC 0
  40. #define DISK_TYPE_SOURCE 1
  41. #define DISK_TYPE_TARGET 2
  42. #define DISK_TYPE_SOURCE_AND_TARGET 3
  43. typedef struct _FMIFS_INSERT_DISK_INFORMATION {
  44. DWORD DiskType;
  45. } FMIFS_INSERT_DISK_INFORMATION, *PFMIFS_INSERT_DISK_INFORMATION;
  46. typedef struct _FMIFS_IO_ERROR_INFORMATION {
  47. DWORD DiskType;
  48. DWORD Head;
  49. DWORD Track;
  50. } FMIFS_IO_ERROR_INFORMATION, *PFMIFS_IO_ERROR_INFORMATION;
  51. typedef struct _FMIFS_FINISHED_INFORMATION {
  52. BOOLEAN Success;
  53. } FMIFS_FINISHED_INFORMATION, *PFMIFS_FINISHED_INFORMATION;
  54. //
  55. // This is a list of supported floppy media types for format.
  56. //
  57. typedef enum _FMIFS_MEDIA_TYPE {
  58. FmMediaUnknown,
  59. FmMediaF5_160_512, // 5.25", 160KB, 512 bytes/sector
  60. FmMediaF5_180_512, // 5.25", 180KB, 512 bytes/sector
  61. FmMediaF5_320_512, // 5.25", 320KB, 512 bytes/sector
  62. FmMediaF5_320_1024, // 5.25", 320KB, 1024 bytes/sector
  63. FmMediaF5_360_512, // 5.25", 360KB, 512 bytes/sector
  64. FmMediaF3_720_512, // 3.5", 720KB, 512 bytes/sector
  65. FmMediaF5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
  66. FmMediaF3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
  67. FmMediaF3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
  68. FmMediaF3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
  69. FmMediaRemovable, // Removable media other than floppy
  70. FmMediaFixed
  71. #ifdef JAPAN // JAPAN && i386
  72. ,
  73. FmMediaF3_120M_512, // 3.5", 120M Floppy
  74. // FMR Sep.8.1994 SFT YAM
  75. // FMR Jul.14.1994 SFT KMR
  76. FmMediaF3_640_512, // 3.5" , 640KB, 512 bytes/sector
  77. FmMediaF5_640_512, // 5.25", 640KB, 512 bytes/sector
  78. FmMediaF5_720_512, // 5.25", 720KB, 512 bytes/sector
  79. // FMR Sep.8.1994 SFT YAM
  80. // FMR Jul.14.1994 SFT KMR
  81. FmMediaF3_1Pt2_512, // 3.5" , 1.2Mb, 512 bytes/sector
  82. // FMR Sep.8.1994 SFT YAM
  83. // FMR Jul.14.1994 SFT KMR
  84. FmMediaF3_1Pt23_1024, // 3.5" , 1.23Mb, 1024 bytes/sector
  85. FmMediaF5_1Pt23_1024, // 5.25", 1.23MB, 1024 bytes/sector
  86. FmMediaF3_128Mb_512, // 3.5" , 128MB, 512 bytes/sector 3.5"MO
  87. FmMediaF3_230Mb_512, // 3.5" , 230MB, 512 bytes/sector 3.5"MO
  88. FmMediaEndOfData // Total data count.
  89. #endif
  90. } FMIFS_MEDIA_TYPE, *PFMIFS_MEDIA_TYPE;
  91. //
  92. // Function types/interfaces.
  93. //
  94. typedef BOOLEAN
  95. (*FMIFS_CALLBACK)(
  96. IN FMIFS_PACKET_TYPE PacketType,
  97. IN DWORD PacketLength,
  98. IN PVOID PacketData
  99. );
  100. typedef
  101. VOID
  102. (*PFMIFS_FORMAT_ROUTINE)(
  103. IN PWSTR DriveName,
  104. IN FMIFS_MEDIA_TYPE MediaType,
  105. IN PWSTR FileSystemName,
  106. IN PWSTR Label,
  107. IN BOOLEAN Quick,
  108. IN FMIFS_CALLBACK Callback
  109. );
  110. typedef
  111. VOID
  112. (*PFMIFS_DISKCOPY_ROUTINE)(
  113. IN PWSTR SourceDrive,
  114. IN PWSTR DestDrive,
  115. IN BOOLEAN Verify,
  116. IN FMIFS_CALLBACK Callback
  117. );
  118. typedef
  119. BOOLEAN
  120. (*PFMIFS_SETLABEL_ROUTINE)(
  121. IN PWSTR DriveName,
  122. IN PWSTR Label
  123. );
  124. typedef
  125. BOOLEAN
  126. (*PFMIFS_QSUPMEDIA_ROUTINE)(
  127. IN PWSTR DriveName,
  128. OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
  129. IN DWORD NumberOfArrayEntries,
  130. OUT PDWORD NumberOfMediaTypes
  131. );
  132. VOID
  133. Format(
  134. IN PWSTR DriveName,
  135. IN FMIFS_MEDIA_TYPE MediaType,
  136. IN PWSTR FileSystemName,
  137. IN PWSTR Label,
  138. IN BOOLEAN Quick,
  139. IN FMIFS_CALLBACK Callback
  140. );
  141. VOID
  142. DiskCopy(
  143. IN PWSTR SourceDrive,
  144. IN PWSTR DestDrive,
  145. IN BOOLEAN Verify,
  146. IN FMIFS_CALLBACK Callback
  147. );
  148. BOOLEAN
  149. SetLabel(
  150. IN PWSTR DriveName,
  151. IN PWSTR Label
  152. );
  153. BOOLEAN
  154. QuerySupportedMedia(
  155. IN PWSTR DriveName,
  156. OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
  157. IN DWORD NumberOfArrayEntries,
  158. OUT PDWORD NumberOfMediaTypes
  159. );
  160. #endif // _FMIFS_DEFN_