ntmsapi.h 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INCL_NTMSAPI_H_
  7. #define _INCL_NTMSAPI_H_
  8. #include <_mingw_unicode.h>
  9. #pragma pack(8)
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. /* See http://msdn.microsoft.com/en-us/library/cc245176%28PROT.13%29.aspx */
  14. typedef GUID NTMS_GUID;
  15. typedef GUID *LPNTMS_GUID;
  16. typedef BYTE *PSECURITY_DESCRIPTOR_NTMS;
  17. typedef ULONG_PTR NTMS_HANDLE;
  18. #define NTMS_NULLGUID {0,0,0,{0,0,0,0,0,0,0,0}}
  19. #define NTMS_IS_NULLGUID(id) ((id.Data1==0)&&(id.Data2==0)&&(id.Data3==0)&& (id.Data4[0]==0)&&(id.Data4[1]==0)&&(id.Data4[2]==0)&& (id.Data4[3]==0)&&(id.Data4[4]==0)&&(id.Data4[5]==0)&& (id.Data4[6]==0)&&(id.Data4[7]==0))
  20. #define OpenNtmsSession __MINGW_NAME_AW(OpenNtmsSession)
  21. #define GetNtmsDeviceName __MINGW_NAME_AW(GetNtmsDeviceName)
  22. #define GetNtmsObjectInformation __MINGW_NAME_AW(GetNtmsObjectInformation)
  23. #define SetNtmsObjectInformation __MINGW_NAME_AW(SetNtmsObjectInformation)
  24. #define CreateNtmsMediaPool __MINGW_NAME_AW(CreateNtmsMediaPool)
  25. #define GetNtmsMediaPoolName __MINGW_NAME_AW(GetNtmsMediaPoolName)
  26. #define GetNtmsObjectAttribute __MINGW_NAME_AW(GetNtmsObjectAttribute)
  27. #define SetNtmsObjectAttribute __MINGW_NAME_AW(SetNtmsObjectAttribute)
  28. #define GetNtmsUIOptions __MINGW_NAME_AW(GetNtmsUIOptions)
  29. #define SetNtmsUIOptions __MINGW_NAME_AW(SetNtmsUIOptions)
  30. #define SubmitNtmsOperatorRequest __MINGW_NAME_AW(SubmitNtmsOperatorRequest)
  31. #define CreateNtmsMedia __MINGW_NAME_AW(CreateNtmsMedia)
  32. #define EjectDiskFromSADrive __MINGW_NAME_AW(EjectDiskFromSADrive)
  33. #define GetVolumesFromDrive __MINGW_NAME_AW(GetVolumesFromDrive)
  34. #ifndef NTMS_NOREDEF
  35. enum NtmsObjectsTypes {
  36. NTMS_UNKNOWN = 0,
  37. NTMS_OBJECT,NTMS_CHANGER,NTMS_CHANGER_TYPE,NTMS_COMPUTER,NTMS_DRIVE,NTMS_DRIVE_TYPE,NTMS_IEDOOR,NTMS_IEPORT,NTMS_LIBRARY,
  38. NTMS_LIBREQUEST,NTMS_LOGICAL_MEDIA,NTMS_MEDIA_POOL,NTMS_MEDIA_TYPE,NTMS_PARTITION,NTMS_PHYSICAL_MEDIA,NTMS_STORAGESLOT,
  39. NTMS_OPREQUEST,NTMS_UI_DESTINATION,NTMS_NUMBER_OF_OBJECT_TYPES
  40. };
  41. typedef struct _NTMS_ASYNC_IO {
  42. NTMS_GUID OperationId;
  43. NTMS_GUID EventId;
  44. DWORD dwOperationType;
  45. DWORD dwResult;
  46. DWORD dwAsyncState;
  47. HANDLE hEvent;
  48. WINBOOL bOnStateChange;
  49. } NTMS_ASYNC_IO,*LPNTMS_ASYNC_IO;
  50. enum NtmsAsyncStatus {
  51. NTMS_ASYNCSTATE_QUEUED = 0,NTMS_ASYNCSTATE_WAIT_RESOURCE,NTMS_ASYNCSTATE_WAIT_OPERATOR,NTMS_ASYNCSTATE_INPROCESS,NTMS_ASYNCSTATE_COMPLETE
  52. };
  53. enum NtmsAsyncOperations {
  54. NTMS_ASYNCOP_MOUNT = 1
  55. };
  56. #endif
  57. enum NtmsSessionOptions {
  58. NTMS_SESSION_QUERYEXPEDITE = 0x1
  59. };
  60. HANDLE WINAPI OpenNtmsSessionW(LPCWSTR lpServer,LPCWSTR lpApplication,DWORD dwOptions);
  61. HANDLE WINAPI OpenNtmsSessionA(LPCSTR lpServer,LPCSTR lpApplication,DWORD dwOptions);
  62. DWORD WINAPI CloseNtmsSession(HANDLE hSession);
  63. #ifndef NTMS_NOREDEF
  64. enum NtmsMountOptions {
  65. NTMS_MOUNT_READ = 0x0001,NTMS_MOUNT_WRITE = 0x0002,NTMS_MOUNT_ERROR_NOT_AVAILABLE = 0x0004,NTMS_MOUNT_ERROR_IF_UNAVAILABLE = 0x0004,
  66. NTMS_MOUNT_ERROR_OFFLINE = 0x0008,NTMS_MOUNT_ERROR_IF_OFFLINE = 0x0008,NTMS_MOUNT_SPECIFIC_DRIVE = 0x0010,NTMS_MOUNT_NOWAIT = 0x0020
  67. };
  68. enum NtmsDismountOptions {
  69. NTMS_DISMOUNT_DEFERRED = 0x0001,NTMS_DISMOUNT_IMMEDIATE = 0x0002
  70. };
  71. enum NtmsMountPriority {
  72. NTMS_PRIORITY_DEFAULT = 0,NTMS_PRIORITY_HIGHEST = 15,NTMS_PRIORITY_HIGH = 7,NTMS_PRIORITY_NORMAL = 0,NTMS_PRIORITY_LOW = -7,
  73. NTMS_PRIORITY_LOWEST = -15
  74. };
  75. typedef struct _NTMS_MOUNT_INFORMATION {
  76. DWORD dwSize;
  77. LPVOID lpReserved;
  78. } NTMS_MOUNT_INFORMATION,*LPNTMS_MOUNT_INFORMATION;
  79. #endif
  80. DWORD WINAPI MountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpDriveId,DWORD dwCount,DWORD dwOptions,int dwPriority,DWORD dwTimeout,LPNTMS_MOUNT_INFORMATION lpMountInformation);
  81. DWORD WINAPI DismountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwCount,DWORD dwOptions);
  82. #ifndef NTMS_NOREDEF
  83. enum NtmsAllocateOptions {
  84. NTMS_ALLOCATE_NEW = 0x0001,NTMS_ALLOCATE_NEXT = 0x0002,NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE = 0x0004
  85. };
  86. typedef struct _NTMS_ALLOCATION_INFORMATION {
  87. DWORD dwSize;
  88. LPVOID lpReserved;
  89. NTMS_GUID AllocatedFrom;
  90. } NTMS_ALLOCATION_INFORMATION,*LPNTMS_ALLOCATION_INFORMATION;
  91. #endif
  92. DWORD WINAPI AllocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaPool,LPNTMS_GUID lpPartition,LPNTMS_GUID lpMediaId,DWORD dwOptions,DWORD dwTimeout,LPNTMS_ALLOCATION_INFORMATION lpAllocateInformation);
  93. DWORD WINAPI DeallocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwOptions);
  94. DWORD WINAPI SwapNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId1,LPNTMS_GUID lpMediaId2);
  95. DWORD WINAPI AddNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId);
  96. DWORD WINAPI DeleteNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId);
  97. DWORD WINAPI ChangeNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId);
  98. DWORD WINAPI DecommissionNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId);
  99. DWORD WINAPI SetNtmsMediaComplete(HANDLE hSession,LPNTMS_GUID lpMediaId);
  100. DWORD WINAPI DeleteNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId);
  101. #ifndef NTMS_NOREDEF
  102. enum NtmsCreateOptions {
  103. NTMS_OPEN_EXISTING = 0x0001,NTMS_CREATE_NEW = 0x0002,NTMS_OPEN_ALWAYS = 0x0003
  104. };
  105. #endif
  106. #ifdef PRE_SEVIL
  107. DWORD WINAPI CreateNtmsMediaPool(HANDLE hSession,LPCTSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
  108. #endif
  109. DWORD WINAPI CreateNtmsMediaPoolA(HANDLE hSession,LPCSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
  110. DWORD WINAPI CreateNtmsMediaPoolW(HANDLE hSession,LPCWSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
  111. DWORD WINAPI GetNtmsMediaPoolNameA(HANDLE hSession,LPNTMS_GUID lpPoolId,LPSTR lpNameBuf,LPDWORD lpdwBufSize);
  112. DWORD WINAPI GetNtmsMediaPoolNameW(HANDLE hSession,LPNTMS_GUID lpPoolId,LPWSTR lpNameBuf,LPDWORD lpdwBufSize);
  113. DWORD WINAPI MoveToNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId);
  114. DWORD WINAPI DeleteNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpPoolId);
  115. DWORD WINAPI DeleteNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId);
  116. DWORD WINAPI DeleteNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
  117. #define NTMS_OBJECTNAME_LENGTH 64
  118. #define NTMS_DESCRIPTION_LENGTH 127
  119. #define NTMS_DEVICENAME_LENGTH 64
  120. #define NTMS_SERIALNUMBER_LENGTH 32
  121. #define NTMS_REVISION_LENGTH 32
  122. #define NTMS_BARCODE_LENGTH 64
  123. #define NTMS_SEQUENCE_LENGTH 32
  124. #define NTMS_VENDORNAME_LENGTH 128
  125. #define NTMS_PRODUCTNAME_LENGTH 128
  126. #define NTMS_USERNAME_LENGTH 64
  127. #define NTMS_APPLICATIONNAME_LENGTH 64
  128. #define NTMS_COMPUTERNAME_LENGTH 64
  129. #define NTMS_I1_MESSAGE_LENGTH 127
  130. #define NTMS_MESSAGE_LENGTH 256
  131. #define NTMS_POOLHIERARCHY_LENGTH 512
  132. #define NTMS_OMIDLABELID_LENGTH 255
  133. #define NTMS_OMIDLABELTYPE_LENGTH 64
  134. #define NTMS_OMIDLABELINFO_LENGTH 256
  135. #ifndef NTMS_NOREDEF
  136. enum NtmsDriveState {
  137. NTMS_DRIVESTATE_DISMOUNTED = 0,NTMS_DRIVESTATE_MOUNTED = 1,NTMS_DRIVESTATE_LOADED = 2,NTMS_DRIVESTATE_UNLOADED = 5,
  138. NTMS_DRIVESTATE_BEING_CLEANED = 6,NTMS_DRIVESTATE_DISMOUNTABLE = 7
  139. };
  140. #define _NTMS_DRIVEINFORMATION __MINGW_NAME_AW(_NTMS_DRIVEINFORMATION)
  141. #define NTMS_DRIVEINFORMATION __MINGW_NAME_AW(NTMS_DRIVEINFORMATION)
  142. typedef struct _NTMS_DRIVEINFORMATIONA {
  143. DWORD Number;
  144. DWORD State;
  145. NTMS_GUID DriveType;
  146. CHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
  147. CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
  148. CHAR szRevision[NTMS_REVISION_LENGTH];
  149. WORD ScsiPort;
  150. WORD ScsiBus;
  151. WORD ScsiTarget;
  152. WORD ScsiLun;
  153. DWORD dwMountCount;
  154. SYSTEMTIME LastCleanedTs;
  155. NTMS_GUID SavedPartitionId;
  156. NTMS_GUID Library;
  157. GUID Reserved;
  158. DWORD dwDeferDismountDelay;
  159. } NTMS_DRIVEINFORMATIONA;
  160. typedef struct _NTMS_DRIVEINFORMATIONW {
  161. DWORD Number;
  162. DWORD State;
  163. NTMS_GUID DriveType;
  164. WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
  165. WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
  166. WCHAR szRevision[NTMS_REVISION_LENGTH];
  167. WORD ScsiPort;
  168. WORD ScsiBus;
  169. WORD ScsiTarget;
  170. WORD ScsiLun;
  171. DWORD dwMountCount;
  172. SYSTEMTIME LastCleanedTs;
  173. NTMS_GUID SavedPartitionId;
  174. NTMS_GUID Library;
  175. GUID Reserved;
  176. DWORD dwDeferDismountDelay;
  177. } NTMS_DRIVEINFORMATIONW;
  178. enum NtmsLibraryType {
  179. NTMS_LIBRARYTYPE_UNKNOWN = 0,NTMS_LIBRARYTYPE_OFFLINE = 1,NTMS_LIBRARYTYPE_ONLINE = 2,NTMS_LIBRARYTYPE_STANDALONE = 3
  180. };
  181. enum NtmsLibraryFlags {
  182. NTMS_LIBRARYFLAG_FIXEDOFFLINE = 0x01,NTMS_LIBRARYFLAG_CLEANERPRESENT = 0x02,NTMS_LIBRARYFLAG_AUTODETECTCHANGE = 0x04,
  183. NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING = 0x08,NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE = 0x10
  184. };
  185. enum NtmsInventoryMethod {
  186. NTMS_INVENTORY_NONE = 0,NTMS_INVENTORY_FAST = 1,NTMS_INVENTORY_OMID = 2,NTMS_INVENTORY_DEFAULT = 3,NTMS_INVENTORY_SLOT = 4,
  187. NTMS_INVENTORY_STOP = 5,NTMS_INVENTORY_MAX
  188. };
  189. typedef struct _NTMS_LIBRARYINFORMATION {
  190. DWORD LibraryType;
  191. NTMS_GUID CleanerSlot;
  192. NTMS_GUID CleanerSlotDefault;
  193. WINBOOL LibrarySupportsDriveCleaning;
  194. WINBOOL BarCodeReaderInstalled;
  195. DWORD InventoryMethod;
  196. DWORD dwCleanerUsesRemaining;
  197. DWORD FirstDriveNumber;
  198. DWORD dwNumberOfDrives;
  199. DWORD FirstSlotNumber;
  200. DWORD dwNumberOfSlots;
  201. DWORD FirstDoorNumber;
  202. DWORD dwNumberOfDoors;
  203. DWORD FirstPortNumber;
  204. DWORD dwNumberOfPorts;
  205. DWORD FirstChangerNumber;
  206. DWORD dwNumberOfChangers;
  207. DWORD dwNumberOfMedia;
  208. DWORD dwNumberOfMediaTypes;
  209. DWORD dwNumberOfLibRequests;
  210. GUID Reserved;
  211. WINBOOL AutoRecovery;
  212. DWORD dwFlags;
  213. } NTMS_LIBRARYINFORMATION;
  214. #define _NTMS_CHANGERINFORMATION __MINGW_NAME_AW(_NTMS_CHANGERINFORMATION)
  215. #define NTMS_CHANGERINFORMATION __MINGW_NAME_AW(NTMS_CHANGERINFORMATION)
  216. typedef struct _NTMS_CHANGERINFORMATIONA {
  217. DWORD Number;
  218. NTMS_GUID ChangerType;
  219. CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
  220. CHAR szRevision[NTMS_REVISION_LENGTH];
  221. CHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
  222. WORD ScsiPort;
  223. WORD ScsiBus;
  224. WORD ScsiTarget;
  225. WORD ScsiLun;
  226. NTMS_GUID Library;
  227. } NTMS_CHANGERINFORMATIONA;
  228. typedef struct _NTMS_CHANGERINFORMATIONW {
  229. DWORD Number;
  230. NTMS_GUID ChangerType;
  231. WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
  232. WCHAR szRevision[NTMS_REVISION_LENGTH];
  233. WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
  234. WORD ScsiPort;
  235. WORD ScsiBus;
  236. WORD ScsiTarget;
  237. WORD ScsiLun;
  238. NTMS_GUID Library;
  239. } NTMS_CHANGERINFORMATIONW;
  240. enum NtmsSlotState {
  241. NTMS_SLOTSTATE_UNKNOWN = 0,NTMS_SLOTSTATE_FULL = 1,NTMS_SLOTSTATE_EMPTY = 2,NTMS_SLOTSTATE_NOTPRESENT = 3,NTMS_SLOTSTATE_NEEDSINVENTORY = 4
  242. };
  243. typedef struct _NTMS_STORAGESLOTINFORMATION {
  244. DWORD Number;
  245. DWORD State;
  246. NTMS_GUID Library;
  247. } NTMS_STORAGESLOTINFORMATION;
  248. enum NtmsDoorState {
  249. NTMS_DOORSTATE_UNKNOWN = 0,NTMS_DOORSTATE_CLOSED = 1,NTMS_DOORSTATE_OPEN = 2
  250. };
  251. typedef struct _NTMS_IEDOORINFORMATION {
  252. DWORD Number;
  253. DWORD State;
  254. WORD MaxOpenSecs;
  255. NTMS_GUID Library;
  256. } NTMS_IEDOORINFORMATION;
  257. enum NtmsPortPosition {
  258. NTMS_PORTPOSITION_UNKNOWN = 0,NTMS_PORTPOSITION_EXTENDED = 1,NTMS_PORTPOSITION_RETRACTED = 2
  259. };
  260. enum NtmsPortContent {
  261. NTMS_PORTCONTENT_UNKNOWN = 0,NTMS_PORTCONTENT_FULL = 1,NTMS_PORTCONTENT_EMPTY = 2
  262. };
  263. typedef struct _NTMS_IEPORTINFORMATION {
  264. DWORD Number;
  265. DWORD Content;
  266. DWORD Position;
  267. WORD MaxExtendSecs;
  268. NTMS_GUID Library;
  269. } NTMS_IEPORTINFORMATION;
  270. enum NtmsBarCodeState {
  271. NTMS_BARCODESTATE_OK = 1,NTMS_BARCODESTATE_UNREADABLE = 2
  272. };
  273. enum NtmsMediaState {
  274. NTMS_MEDIASTATE_IDLE = 0,
  275. NTMS_MEDIASTATE_INUSE,NTMS_MEDIASTATE_MOUNTED,NTMS_MEDIASTATE_LOADED,NTMS_MEDIASTATE_UNLOADED,
  276. NTMS_MEDIASTATE_OPERROR,NTMS_MEDIASTATE_OPREQ
  277. };
  278. #define _NTMS_PMIDINFORMATION __MINGW_NAME_AW(_NTMS_PMIDINFORMATION)
  279. #define NTMS_PMIDINFORMATION __MINGW_NAME_AW(NTMS_PMIDINFORMATION)
  280. typedef struct _NTMS_PMIDINFORMATIONA {
  281. NTMS_GUID CurrentLibrary;
  282. NTMS_GUID MediaPool;
  283. NTMS_GUID Location;
  284. DWORD LocationType;
  285. NTMS_GUID MediaType;
  286. NTMS_GUID HomeSlot;
  287. CHAR szBarCode[NTMS_BARCODE_LENGTH];
  288. DWORD BarCodeState;
  289. CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
  290. DWORD MediaState;
  291. DWORD dwNumberOfPartitions;
  292. DWORD dwMediaTypeCode;
  293. DWORD dwDensityCode;
  294. NTMS_GUID MountedPartition;
  295. } NTMS_PMIDINFORMATIONA;
  296. typedef struct _NTMS_PMIDINFORMATIONW {
  297. NTMS_GUID CurrentLibrary;
  298. NTMS_GUID MediaPool;
  299. NTMS_GUID Location;
  300. DWORD LocationType;
  301. NTMS_GUID MediaType;
  302. NTMS_GUID HomeSlot;
  303. WCHAR szBarCode[NTMS_BARCODE_LENGTH];
  304. DWORD BarCodeState;
  305. WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
  306. DWORD MediaState;
  307. DWORD dwNumberOfPartitions;
  308. DWORD dwMediaTypeCode;
  309. DWORD dwDensityCode;
  310. NTMS_GUID MountedPartition;
  311. } NTMS_PMIDINFORMATIONW;
  312. typedef struct _NTMS_LMIDINFORMATION {
  313. NTMS_GUID MediaPool;
  314. DWORD dwNumberOfPartitions;
  315. } NTMS_LMIDINFORMATION;
  316. enum NtmsPartitionState {
  317. NTMS_PARTSTATE_UNKNOWN = 0,
  318. NTMS_PARTSTATE_UNPREPARED,NTMS_PARTSTATE_INCOMPATIBLE,NTMS_PARTSTATE_DECOMMISSIONED,
  319. NTMS_PARTSTATE_AVAILABLE,NTMS_PARTSTATE_ALLOCATED,NTMS_PARTSTATE_COMPLETE,NTMS_PARTSTATE_FOREIGN,NTMS_PARTSTATE_IMPORT,
  320. NTMS_PARTSTATE_RESERVED
  321. };
  322. #define NTMS_PARTSTATE_NEW NTMS_PARTSTATE_UNKNOWN
  323. #define _NTMS_PARTITIONINFORMATION __MINGW_NAME_AW(_NTMS_PARTITIONINFORMATION)
  324. #define NTMS_PARTITIONINFORMATION __MINGW_NAME_AW(NTMS_PARTITIONINFORMATION)
  325. typedef struct _NTMS_PARTITIONINFORMATIONA {
  326. NTMS_GUID PhysicalMedia;
  327. NTMS_GUID LogicalMedia;
  328. DWORD State;
  329. WORD Side;
  330. DWORD dwOmidLabelIdLength;
  331. BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH];
  332. CHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH];
  333. CHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH];
  334. DWORD dwMountCount;
  335. DWORD dwAllocateCount;
  336. LARGE_INTEGER Capacity;
  337. } NTMS_PARTITIONINFORMATIONA;
  338. typedef struct _NTMS_PARTITIONINFORMATIONW {
  339. NTMS_GUID PhysicalMedia;
  340. NTMS_GUID LogicalMedia;
  341. DWORD State;
  342. WORD Side;
  343. DWORD dwOmidLabelIdLength;
  344. BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH];
  345. WCHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH];
  346. WCHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH];
  347. DWORD dwMountCount;
  348. DWORD dwAllocateCount;
  349. LARGE_INTEGER Capacity;
  350. } NTMS_PARTITIONINFORMATIONW;
  351. enum NtmsPoolType {
  352. NTMS_POOLTYPE_UNKNOWN = 0,NTMS_POOLTYPE_SCRATCH = 1,NTMS_POOLTYPE_FOREIGN = 2,NTMS_POOLTYPE_IMPORT = 3,NTMS_POOLTYPE_APPLICATION = 1000
  353. };
  354. enum NtmsAllocationPolicy {
  355. NTMS_ALLOCATE_FROMSCRATCH = 1
  356. };
  357. enum NtmsDeallocationPolicy {
  358. NTMS_DEALLOCATE_TOSCRATCH = 1
  359. };
  360. typedef struct _NTMS_MEDIAPOOLINFORMATION {
  361. DWORD PoolType;
  362. NTMS_GUID MediaType;
  363. NTMS_GUID Parent;
  364. DWORD AllocationPolicy;
  365. DWORD DeallocationPolicy;
  366. DWORD dwMaxAllocates;
  367. DWORD dwNumberOfPhysicalMedia;
  368. DWORD dwNumberOfLogicalMedia;
  369. DWORD dwNumberOfMediaPools;
  370. } NTMS_MEDIAPOOLINFORMATION;
  371. enum NtmsReadWriteCharacteristics {
  372. NTMS_MEDIARW_UNKNOWN = 0,NTMS_MEDIARW_REWRITABLE = 1,NTMS_MEDIARW_WRITEONCE = 2,NTMS_MEDIARW_READONLY = 3
  373. };
  374. typedef struct _NTMS_MEDIATYPEINFORMATION {
  375. DWORD MediaType;
  376. DWORD NumberOfSides;
  377. DWORD ReadWriteCharacteristics;
  378. DWORD DeviceType;
  379. } NTMS_MEDIATYPEINFORMATION;
  380. #define _NTMS_DRIVETYPEINFORMATION __MINGW_NAME_AW(_NTMS_DRIVETYPEINFORMATION)
  381. #define NTMS_DRIVETYPEINFORMATION __MINGW_NAME_AW(NTMS_DRIVETYPEINFORMATION)
  382. typedef struct _NTMS_DRIVETYPEINFORMATIONA {
  383. CHAR szVendor[NTMS_VENDORNAME_LENGTH];
  384. CHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
  385. DWORD NumberOfHeads;
  386. DWORD DeviceType;
  387. } NTMS_DRIVETYPEINFORMATIONA;
  388. typedef struct _NTMS_DRIVETYPEINFORMATIONW {
  389. WCHAR szVendor[NTMS_VENDORNAME_LENGTH];
  390. WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
  391. DWORD NumberOfHeads;
  392. DWORD DeviceType;
  393. } NTMS_DRIVETYPEINFORMATIONW;
  394. #define _NTMS_CHANGERTYPEINFORMATION __MINGW_NAME_AW(_NTMS_CHANGERTYPEINFORMATION)
  395. #define NTMS_CHANGERTYPEINFORMATION __MINGW_NAME_AW(NTMS_CHANGERTYPEINFORMATION)
  396. typedef struct _NTMS_CHANGERTYPEINFORMATIONA {
  397. CHAR szVendor[NTMS_VENDORNAME_LENGTH];
  398. CHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
  399. DWORD DeviceType;
  400. } NTMS_CHANGERTYPEINFORMATIONA;
  401. typedef struct _NTMS_CHANGERTYPEINFORMATIONW {
  402. WCHAR szVendor[NTMS_VENDORNAME_LENGTH];
  403. WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
  404. DWORD DeviceType;
  405. } NTMS_CHANGERTYPEINFORMATIONW;
  406. enum NtmsLmOperation {
  407. NTMS_LM_REMOVE = 0,NTMS_LM_DISABLECHANGER = 1,NTMS_LM_DISABLELIBRARY = 1,NTMS_LM_ENABLECHANGER = 2,NTMS_LM_ENABLELIBRARY = 2,
  408. NTMS_LM_DISABLEDRIVE = 3,NTMS_LM_ENABLEDRIVE = 4,NTMS_LM_DISABLEMEDIA = 5,NTMS_LM_ENABLEMEDIA = 6,NTMS_LM_UPDATEOMID = 7,
  409. NTMS_LM_INVENTORY = 8,NTMS_LM_DOORACCESS = 9,NTMS_LM_EJECT = 10,NTMS_LM_EJECTCLEANER = 11,NTMS_LM_INJECT = 12,NTMS_LM_INJECTCLEANER = 13,
  410. NTMS_LM_PROCESSOMID = 14,NTMS_LM_CLEANDRIVE = 15,NTMS_LM_DISMOUNT = 16,NTMS_LM_MOUNT = 17,NTMS_LM_WRITESCRATCH = 18,NTMS_LM_CLASSIFY = 19,
  411. NTMS_LM_RESERVECLEANER = 20,NTMS_LM_RELEASECLEANER = 21,NTMS_LM_MAXWORKITEM
  412. };
  413. enum NtmsLmState {
  414. NTMS_LM_QUEUED = 0,NTMS_LM_INPROCESS = 1,NTMS_LM_PASSED = 2,NTMS_LM_FAILED = 3,NTMS_LM_INVALID = 4,NTMS_LM_WAITING = 5,
  415. NTMS_LM_DEFERRED = 6,NTMS_LM_DEFFERED = 6,NTMS_LM_CANCELLED = 7,NTMS_LM_STOPPED = 8
  416. };
  417. #define _NTMS_LIBREQUESTINFORMATION __MINGW_NAME_AW(_NTMS_LIBREQUESTINFORMATION)
  418. #define NTMS_LIBREQUESTINFORMATION __MINGW_NAME_AW(NTMS_LIBREQUESTINFORMATION)
  419. typedef struct _NTMS_LIBREQUESTINFORMATIONA {
  420. DWORD OperationCode;
  421. DWORD OperationOption;
  422. DWORD State;
  423. NTMS_GUID PartitionId;
  424. NTMS_GUID DriveId;
  425. NTMS_GUID PhysMediaId;
  426. NTMS_GUID Library;
  427. NTMS_GUID SlotId;
  428. SYSTEMTIME TimeQueued;
  429. SYSTEMTIME TimeCompleted;
  430. CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  431. CHAR szUser[NTMS_USERNAME_LENGTH];
  432. CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  433. DWORD dwErrorCode;
  434. NTMS_GUID WorkItemId;
  435. DWORD dwPriority;
  436. } NTMS_LIBREQUESTINFORMATIONA;
  437. typedef struct _NTMS_LIBREQUESTINFORMATIONW {
  438. DWORD OperationCode;
  439. DWORD OperationOption;
  440. DWORD State;
  441. NTMS_GUID PartitionId;
  442. NTMS_GUID DriveId;
  443. NTMS_GUID PhysMediaId;
  444. NTMS_GUID Library;
  445. NTMS_GUID SlotId;
  446. SYSTEMTIME TimeQueued;
  447. SYSTEMTIME TimeCompleted;
  448. WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  449. WCHAR szUser[NTMS_USERNAME_LENGTH];
  450. WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  451. DWORD dwErrorCode;
  452. NTMS_GUID WorkItemId;
  453. DWORD dwPriority;
  454. } NTMS_LIBREQUESTINFORMATIONW;
  455. enum NtmsOpreqCommand {
  456. NTMS_OPREQ_UNKNOWN = 0,NTMS_OPREQ_NEWMEDIA,NTMS_OPREQ_CLEANER,NTMS_OPREQ_DEVICESERVICE,NTMS_OPREQ_MOVEMEDIA,
  457. NTMS_OPREQ_MESSAGE
  458. };
  459. enum NtmsOpreqState {
  460. NTMS_OPSTATE_UNKNOWN = 0,
  461. NTMS_OPSTATE_SUBMITTED,NTMS_OPSTATE_ACTIVE,NTMS_OPSTATE_INPROGRESS,NTMS_OPSTATE_REFUSED,
  462. NTMS_OPSTATE_COMPLETE
  463. };
  464. #define _NTMS_OPREQUESTINFORMATION __MINGW_NAME_AW(_NTMS_OPREQUESTINFORMATION)
  465. #define NTMS_OPREQUESTINFORMATION __MINGW_NAME_AW(NTMS_OPREQUESTINFORMATION)
  466. typedef struct _NTMS_OPREQUESTINFORMATIONA {
  467. DWORD Request;
  468. SYSTEMTIME Submitted;
  469. DWORD State;
  470. CHAR szMessage[NTMS_MESSAGE_LENGTH];
  471. DWORD Arg1Type;
  472. NTMS_GUID Arg1;
  473. DWORD Arg2Type;
  474. NTMS_GUID Arg2;
  475. CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  476. CHAR szUser[NTMS_USERNAME_LENGTH];
  477. CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  478. } NTMS_OPREQUESTINFORMATIONA;
  479. typedef struct _NTMS_OPREQUESTINFORMATIONW {
  480. DWORD Request;
  481. SYSTEMTIME Submitted;
  482. DWORD State;
  483. WCHAR szMessage[NTMS_MESSAGE_LENGTH];
  484. DWORD Arg1Type;
  485. NTMS_GUID Arg1;
  486. DWORD Arg2Type;
  487. NTMS_GUID Arg2;
  488. WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  489. WCHAR szUser[NTMS_USERNAME_LENGTH];
  490. WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  491. } NTMS_OPREQUESTINFORMATIONW;
  492. typedef struct _NTMS_COMPUTERINFORMATION {
  493. DWORD dwLibRequestPurgeTime;
  494. DWORD dwOpRequestPurgeTime;
  495. DWORD dwLibRequestFlags;
  496. DWORD dwOpRequestFlags;
  497. DWORD dwMediaPoolPolicy;
  498. } NTMS_COMPUTERINFORMATION;
  499. enum NtmsLibRequestFlags {
  500. NTMS_LIBREQFLAGS_NOAUTOPURGE = 0x01,NTMS_LIBREQFLAGS_NOFAILEDPURGE = 0x02
  501. };
  502. enum NtmsOpRequestFlags {
  503. NTMS_OPREQFLAGS_NOAUTOPURGE = 0x01,NTMS_OPREQFLAGS_NOFAILEDPURGE = 0x02,NTMS_OPREQFLAGS_NOALERTS = 0x10,NTMS_OPREQFLAGS_NOTRAYICON = 0x20
  504. };
  505. enum NtmsMediaPoolPolicy {
  506. NTMS_POOLPOLICY_PURGEOFFLINESCRATCH = 0x01,NTMS_POOLPOLICY_KEEPOFFLINEIMPORT = 0x02
  507. };
  508. #define _NTMS_OBJECTINFORMATION __MINGW_NAME_AW(_NTMS_OBJECTINFORMATION)
  509. #define NTMS_OBJECTINFORMATION __MINGW_NAME_AW(NTMS_OBJECTINFORMATION)
  510. #define LPNTMS_OBJECTINFORMATION __MINGW_NAME_AW(LPNTMS_OBJECTINFORMATION)
  511. enum NtmsOperationalState {
  512. NTMS_READY = 0,
  513. NTMS_INITIALIZING = 10,
  514. NTMS_NEEDS_SERVICE = 20,
  515. NTMS_NOT_PRESENT = 21
  516. };
  517. typedef struct _RSM_MESSAGE {
  518. LPGUID lpguidOperation;
  519. DWORD dwNtmsType;
  520. DWORD dwState;
  521. DWORD dwFlags;
  522. DWORD dwPriority;
  523. DWORD dwErrorCode;
  524. LPWSTR lpszComputerName;
  525. LPWSTR lpszApplication;
  526. LPWSTR lpszUser;
  527. LPWSTR lpszTimeSubmitted;
  528. LPWSTR lpszMessage;
  529. } RSM_MESSAGE, *LPRSM_MESSAGE;
  530. typedef struct _NTMS_OBJECTINFORMATIONA {
  531. DWORD dwSize;
  532. DWORD dwType;
  533. SYSTEMTIME Created;
  534. SYSTEMTIME Modified;
  535. NTMS_GUID ObjectGuid;
  536. WINBOOL Enabled;
  537. DWORD dwOperationalState;
  538. CHAR szName[NTMS_OBJECTNAME_LENGTH];
  539. CHAR szDescription[NTMS_DESCRIPTION_LENGTH];
  540. union {
  541. NTMS_DRIVEINFORMATIONA Drive;
  542. NTMS_DRIVETYPEINFORMATIONA DriveType;
  543. NTMS_LIBRARYINFORMATION Library;
  544. NTMS_CHANGERINFORMATIONA Changer;
  545. NTMS_CHANGERTYPEINFORMATIONA ChangerType;
  546. NTMS_STORAGESLOTINFORMATION StorageSlot;
  547. NTMS_IEDOORINFORMATION IEDoor;
  548. NTMS_IEPORTINFORMATION IEPort;
  549. NTMS_PMIDINFORMATIONA PhysicalMedia;
  550. NTMS_LMIDINFORMATION LogicalMedia;
  551. NTMS_PARTITIONINFORMATIONA Partition;
  552. NTMS_MEDIAPOOLINFORMATION MediaPool;
  553. NTMS_MEDIATYPEINFORMATION MediaType;
  554. NTMS_LIBREQUESTINFORMATIONA LibRequest;
  555. NTMS_OPREQUESTINFORMATIONA OpRequest;
  556. NTMS_COMPUTERINFORMATION Computer;
  557. } Info;
  558. } NTMS_OBJECTINFORMATIONA,*LPNTMS_OBJECTINFORMATIONA;
  559. typedef struct _NTMS_OBJECTINFORMATIONW {
  560. DWORD dwSize;
  561. DWORD dwType;
  562. SYSTEMTIME Created;
  563. SYSTEMTIME Modified;
  564. NTMS_GUID ObjectGuid;
  565. WINBOOL Enabled;
  566. DWORD dwOperationalState;
  567. WCHAR szName[NTMS_OBJECTNAME_LENGTH];
  568. WCHAR szDescription[NTMS_DESCRIPTION_LENGTH];
  569. union {
  570. NTMS_DRIVEINFORMATIONW Drive;
  571. NTMS_DRIVETYPEINFORMATIONW DriveType;
  572. NTMS_LIBRARYINFORMATION Library;
  573. NTMS_CHANGERINFORMATIONW Changer;
  574. NTMS_CHANGERTYPEINFORMATIONW ChangerType;
  575. NTMS_STORAGESLOTINFORMATION StorageSlot;
  576. NTMS_IEDOORINFORMATION IEDoor;
  577. NTMS_IEPORTINFORMATION IEPort;
  578. NTMS_PMIDINFORMATIONW PhysicalMedia;
  579. NTMS_LMIDINFORMATION LogicalMedia;
  580. NTMS_PARTITIONINFORMATIONW Partition;
  581. NTMS_MEDIAPOOLINFORMATION MediaPool;
  582. NTMS_MEDIATYPEINFORMATION MediaType;
  583. NTMS_LIBREQUESTINFORMATIONW LibRequest;
  584. NTMS_OPREQUESTINFORMATIONW OpRequest;
  585. NTMS_COMPUTERINFORMATION Computer;
  586. } Info;
  587. } NTMS_OBJECTINFORMATIONW,*LPNTMS_OBJECTINFORMATIONW;
  588. #define NTMS_I1_LIBREQUESTINFORMATION __MINGW_NAME_AW(NTMS_I1_LIBREQUESTINFORMATION)
  589. #define NTMS_I1_PARTITIONINFORMATION __MINGW_NAME_AW(NTMS_I1_PARTITIONINFORMATION)
  590. #define NTMS_I1_PMIDINFORMATION __MINGW_NAME_AW(NTMS_I1_PMIDINFORMATION)
  591. #define NTMS_I1_OPREQUESTINFORMATION __MINGW_NAME_AW(NTMS_I1_OPREQUESTINFORMATION)
  592. #define NTMS_I1_OBJECTINFORMATION __MINGW_NAME_AW(NTMS_I1_OBJECTINFORMATION)
  593. typedef struct _NTMS_I1_LIBRARYINFORMATION {
  594. DWORD LibraryType;
  595. NTMS_GUID CleanerSlot;
  596. NTMS_GUID CleanerSlotDefault;
  597. WINBOOL LibrarySupportsDriveCleaning;
  598. WINBOOL BarCodeReaderInstalled;
  599. DWORD InventoryMethod;
  600. DWORD dwCleanerUsesRemaining;
  601. DWORD FirstDriveNumber;
  602. DWORD dwNumberOfDrives;
  603. DWORD FirstSlotNumber;
  604. DWORD dwNumberOfSlots;
  605. DWORD FirstDoorNumber;
  606. DWORD dwNumberOfDoors;
  607. DWORD FirstPortNumber;
  608. DWORD dwNumberOfPorts;
  609. DWORD FirstChangerNumber;
  610. DWORD dwNumberOfChangers;
  611. DWORD dwNumberOfMedia;
  612. DWORD dwNumberOfMediaTypes;
  613. DWORD dwNumberOfLibRequests;
  614. GUID Reserved;
  615. } NTMS_I1_LIBRARYINFORMATION;
  616. typedef struct _NTMS_I1_LIBREQUESTINFORMATIONA {
  617. DWORD OperationCode;
  618. DWORD OperationOption;
  619. DWORD State;
  620. NTMS_GUID PartitionId;
  621. NTMS_GUID DriveId;
  622. NTMS_GUID PhysMediaId;
  623. NTMS_GUID Library;
  624. NTMS_GUID SlotId;
  625. SYSTEMTIME TimeQueued;
  626. SYSTEMTIME TimeCompleted;
  627. CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  628. CHAR szUser[NTMS_USERNAME_LENGTH];
  629. CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  630. } NTMS_I1_LIBREQUESTINFORMATIONA;
  631. typedef struct _NTMS_I1_LIBREQUESTINFORMATIONW {
  632. DWORD OperationCode;
  633. DWORD OperationOption;
  634. DWORD State;
  635. NTMS_GUID PartitionId;
  636. NTMS_GUID DriveId;
  637. NTMS_GUID PhysMediaId;
  638. NTMS_GUID Library;
  639. NTMS_GUID SlotId;
  640. SYSTEMTIME TimeQueued;
  641. SYSTEMTIME TimeCompleted;
  642. WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  643. WCHAR szUser[NTMS_USERNAME_LENGTH];
  644. WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  645. } NTMS_I1_LIBREQUESTINFORMATIONW;
  646. typedef struct _NTMS_I1_PMIDINFORMATIONA {
  647. NTMS_GUID CurrentLibrary;
  648. NTMS_GUID MediaPool;
  649. NTMS_GUID Location;
  650. DWORD LocationType;
  651. NTMS_GUID MediaType;
  652. NTMS_GUID HomeSlot;
  653. CHAR szBarCode[NTMS_BARCODE_LENGTH];
  654. DWORD BarCodeState;
  655. CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
  656. DWORD MediaState;
  657. DWORD dwNumberOfPartitions;
  658. } NTMS_I1_PMIDINFORMATIONA;
  659. typedef struct _NTMS_I1_PMIDINFORMATIONW {
  660. NTMS_GUID CurrentLibrary;
  661. NTMS_GUID MediaPool;
  662. NTMS_GUID Location;
  663. DWORD LocationType;
  664. NTMS_GUID MediaType;
  665. NTMS_GUID HomeSlot;
  666. WCHAR szBarCode[NTMS_BARCODE_LENGTH];
  667. DWORD BarCodeState;
  668. WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
  669. DWORD MediaState;
  670. DWORD dwNumberOfPartitions;
  671. } NTMS_I1_PMIDINFORMATIONW;
  672. typedef struct _NTMS_I1_PARTITIONINFORMATIONA {
  673. NTMS_GUID PhysicalMedia;
  674. NTMS_GUID LogicalMedia;
  675. DWORD State;
  676. WORD Side;
  677. DWORD dwOmidLabelIdLength;
  678. BYTE OmidLabelId[255];
  679. CHAR szOmidLabelType[64];
  680. CHAR szOmidLabelInfo[256];
  681. DWORD dwMountCount;
  682. DWORD dwAllocateCount;
  683. } NTMS_I1_PARTITIONINFORMATIONA;
  684. typedef struct _NTMS_I1_PARTITIONINFORMATIONW {
  685. NTMS_GUID PhysicalMedia;
  686. NTMS_GUID LogicalMedia;
  687. DWORD State;
  688. WORD Side;
  689. DWORD dwOmidLabelIdLength;
  690. BYTE OmidLabelId[255];
  691. WCHAR szOmidLabelType[64];
  692. WCHAR szOmidLabelInfo[256];
  693. DWORD dwMountCount;
  694. DWORD dwAllocateCount;
  695. } NTMS_I1_PARTITIONINFORMATIONW;
  696. typedef struct _NTMS_I1_OPREQUESTINFORMATIONA {
  697. DWORD Request;
  698. SYSTEMTIME Submitted;
  699. DWORD State;
  700. CHAR szMessage[NTMS_I1_MESSAGE_LENGTH];
  701. DWORD Arg1Type;
  702. NTMS_GUID Arg1;
  703. DWORD Arg2Type;
  704. NTMS_GUID Arg2;
  705. CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  706. CHAR szUser[NTMS_USERNAME_LENGTH];
  707. CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  708. } NTMS_I1_OPREQUESTINFORMATIONA;
  709. typedef struct _NTMS_I1_OPREQUESTINFORMATIONW {
  710. DWORD Request;
  711. SYSTEMTIME Submitted;
  712. DWORD State;
  713. WCHAR szMessage[NTMS_I1_MESSAGE_LENGTH];
  714. DWORD Arg1Type;
  715. NTMS_GUID Arg1;
  716. DWORD Arg2Type;
  717. NTMS_GUID Arg2;
  718. WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
  719. WCHAR szUser[NTMS_USERNAME_LENGTH];
  720. WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
  721. } NTMS_I1_OPREQUESTINFORMATIONW;
  722. typedef struct _NTMS_I1_OBJECTINFORMATIONA {
  723. DWORD dwSize;
  724. DWORD dwType;
  725. SYSTEMTIME Created;
  726. SYSTEMTIME Modified;
  727. NTMS_GUID ObjectGuid;
  728. WINBOOL Enabled;
  729. DWORD dwOperationalState;
  730. CHAR szName[NTMS_OBJECTNAME_LENGTH];
  731. CHAR szDescription[NTMS_DESCRIPTION_LENGTH];
  732. union {
  733. NTMS_DRIVEINFORMATIONA Drive;
  734. NTMS_DRIVETYPEINFORMATIONA DriveType;
  735. NTMS_I1_LIBRARYINFORMATION Library;
  736. NTMS_CHANGERINFORMATIONA Changer;
  737. NTMS_CHANGERTYPEINFORMATIONA ChangerType;
  738. NTMS_STORAGESLOTINFORMATION StorageSlot;
  739. NTMS_IEDOORINFORMATION IEDoor;
  740. NTMS_IEPORTINFORMATION IEPort;
  741. NTMS_I1_PMIDINFORMATIONA PhysicalMedia;
  742. NTMS_LMIDINFORMATION LogicalMedia;
  743. NTMS_I1_PARTITIONINFORMATIONA Partition;
  744. NTMS_MEDIAPOOLINFORMATION MediaPool;
  745. NTMS_MEDIATYPEINFORMATION MediaType;
  746. NTMS_I1_LIBREQUESTINFORMATIONA LibRequest;
  747. NTMS_I1_OPREQUESTINFORMATIONA OpRequest;
  748. } Info;
  749. } NTMS_I1_OBJECTINFORMATIONA,*LPNTMS_I1_OBJECTINFORMATIONA;
  750. typedef struct _NTMS_I1_OBJECTINFORMATIONW {
  751. DWORD dwSize;
  752. DWORD dwType;
  753. SYSTEMTIME Created;
  754. SYSTEMTIME Modified;
  755. NTMS_GUID ObjectGuid;
  756. WINBOOL Enabled;
  757. DWORD dwOperationalState;
  758. WCHAR szName[NTMS_OBJECTNAME_LENGTH];
  759. WCHAR szDescription[NTMS_DESCRIPTION_LENGTH];
  760. union {
  761. NTMS_DRIVEINFORMATIONW Drive;
  762. NTMS_DRIVETYPEINFORMATIONW DriveType;
  763. NTMS_I1_LIBRARYINFORMATION Library;
  764. NTMS_CHANGERINFORMATIONW Changer;
  765. NTMS_CHANGERTYPEINFORMATIONW ChangerType;
  766. NTMS_STORAGESLOTINFORMATION StorageSlot;
  767. NTMS_IEDOORINFORMATION IEDoor;
  768. NTMS_IEPORTINFORMATION IEPort;
  769. NTMS_I1_PMIDINFORMATIONW PhysicalMedia;
  770. NTMS_LMIDINFORMATION LogicalMedia;
  771. NTMS_I1_PARTITIONINFORMATIONW Partition;
  772. NTMS_MEDIAPOOLINFORMATION MediaPool;
  773. NTMS_MEDIATYPEINFORMATION MediaType;
  774. NTMS_I1_LIBREQUESTINFORMATIONW LibRequest;
  775. NTMS_I1_OPREQUESTINFORMATIONW OpRequest;
  776. } Info;
  777. } NTMS_I1_OBJECTINFORMATIONW,*LPNTMS_I1_OBJECTINFORMATIONW;
  778. #endif
  779. #ifndef NTMS_NOREDEF
  780. enum NtmsCreateNtmsMediaOptions {
  781. NTMS_ERROR_ON_DUPLICATE = 0x0001
  782. };
  783. #endif
  784. #ifdef PRE_SEVIL
  785. DWORD WINAPI GetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo);
  786. DWORD WINAPI SetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo);
  787. #endif
  788. DWORD WINAPI GetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo);
  789. DWORD WINAPI GetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo);
  790. DWORD WINAPI SetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo);
  791. DWORD WINAPI SetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo);
  792. DWORD WINAPI CreateNtmsMediaA(HANDLE hSession,LPNTMS_OBJECTINFORMATIONA lpMedia,LPNTMS_OBJECTINFORMATIONA lpList,DWORD dwOptions);
  793. DWORD WINAPI CreateNtmsMediaW(HANDLE hSession,LPNTMS_OBJECTINFORMATIONW lpMedia,LPNTMS_OBJECTINFORMATIONW lpList,DWORD dwOptions);
  794. enum NtmsEnumerateOption {
  795. NTMS_ENUM_DEFAULT = 0,NTMS_ENUM_ROOTPOOL = 1
  796. };
  797. DWORD WINAPI EnumerateNtmsObject(HANDLE hSession,const LPNTMS_GUID lpContainerId,LPNTMS_GUID lpList,LPDWORD lpdwListSize,DWORD dwType,DWORD dwOptions);
  798. DWORD WINAPI DisableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId);
  799. DWORD WINAPI EnableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId);
  800. enum NtmsEjectOperation {
  801. NTMS_EJECT_START = 0,NTMS_EJECT_STOP = 1,NTMS_EJECT_QUEUE = 2,NTMS_EJECT_FORCE = 3,NTMS_EJECT_IMMEDIATE = 4,NTMS_EJECT_ASK_USER = 5
  802. };
  803. DWORD WINAPI EjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpEjectOperation,DWORD dwAction);
  804. enum NtmsInjectOperation {
  805. NTMS_INJECT_START = 0,NTMS_INJECT_STOP = 1,NTMS_INJECT_RETRACT = 2,NTMS_INJECT_STARTMANY = 3
  806. };
  807. DWORD WINAPI InjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpLibraryId,LPNTMS_GUID lpInjectOperation,DWORD dwAction);
  808. DWORD WINAPI AccessNtmsLibraryDoor(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction);
  809. DWORD WINAPI CleanNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
  810. DWORD WINAPI DismountNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
  811. DWORD WINAPI InventoryNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction);
  812. DWORD WINAPI IdentifyNtmsSlot(HANDLE hSession,LPNTMS_GUID lpSlotId,DWORD dwOption);
  813. #define NTMS_OMID_TYPE_RAW_LABEL 0x01
  814. #define NTMS_OMID_TYPE_FILESYSTEM_INFO 0x02
  815. typedef struct {
  816. WCHAR FileSystemType[64];
  817. WCHAR VolumeName[256];
  818. DWORD SerialNumber;
  819. } NTMS_FILESYSTEM_INFO;
  820. DWORD WINAPI UpdateNtmsOmidInfo(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD labelType,DWORD numberOfBytes,LPVOID lpBuffer);
  821. DWORD WINAPI CancelNtmsLibraryRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
  822. DWORD WINAPI GetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,LPDWORD lpdwOrderNumber);
  823. DWORD WINAPI SetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwOrderNumber);
  824. DWORD WINAPI DeleteNtmsRequests(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount);
  825. DWORD WINAPI ReserveNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpSlot);
  826. DWORD WINAPI ReleaseNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary);
  827. DWORD WINAPI InjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpInjectOperation,DWORD dwNumberOfCleansLeft,DWORD dwAction);
  828. DWORD WINAPI EjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpEjectOperation,DWORD dwAction);
  829. DWORD WINAPI BeginNtmsDeviceChangeDetection(HANDLE hSession,LPHANDLE lpDetectHandle);
  830. DWORD WINAPI SetNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount);
  831. DWORD WINAPI EndNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle);
  832. #ifndef NTMS_NOREDEF
  833. enum NtmsDriveType {
  834. NTMS_UNKNOWN_DRIVE = 0
  835. };
  836. #endif
  837. DWORD WINAPI GetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
  838. DWORD WINAPI SetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor);
  839. enum NtmsAccessMask {
  840. NTMS_USE_ACCESS = 0x1,
  841. NTMS_MODIFY_ACCESS = 0x2,
  842. NTMS_CONTROL_ACCESS = 0x4 /* Hmm, could be 3, too. */
  843. };
  844. #define NTMS_GENERIC_READ NTMS_USE_ACCESS
  845. #define NTMS_GENERIC_WRITE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS
  846. #define NTMS_GENERIC_EXECUTE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS
  847. #define NTMS_GENERIC_ALL NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS
  848. #define NTMS_MAXATTR_LENGTH 0x10000
  849. #define NTMS_MAXATTR_NAMELEN 32
  850. DWORD WINAPI GetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize);
  851. DWORD WINAPI GetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize);
  852. DWORD WINAPI SetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,DWORD dwAttributeSize);
  853. DWORD WINAPI SetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,DWORD AttributeSize);
  854. enum NtmsUITypes {
  855. NTMS_UITYPE_INVALID = 0,
  856. NTMS_UITYPE_INFO,NTMS_UITYPE_REQ,NTMS_UITYPE_ERR,NTMS_UITYPE_MAX
  857. };
  858. enum NtmsUIOperations {
  859. NTMS_UIDEST_ADD = 1,
  860. NTMS_UIDEST_DELETE,NTMS_UIDEST_DELETEALL,
  861. NTMS_UIOPERATION_MAX
  862. };
  863. DWORD WINAPI GetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPSTR lpszDestination,LPDWORD lpdwBufSize);
  864. DWORD WINAPI GetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPWSTR lpszDestination,LPDWORD lpdwBufSize);
  865. DWORD WINAPI SetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCSTR lpszDestination);
  866. DWORD WINAPI SetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCWSTR lpszDestination);
  867. DWORD WINAPI SubmitNtmsOperatorRequestW(HANDLE hSession,DWORD dwRequest,LPCWSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId);
  868. DWORD WINAPI SubmitNtmsOperatorRequestA(HANDLE hSession,DWORD dwRequest,LPCSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId);
  869. DWORD WINAPI WaitForNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwTimeout);
  870. DWORD WINAPI CancelNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
  871. DWORD WINAPI SatisfyNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
  872. #ifndef NTMS_NOREDEF
  873. enum NtmsNotificationOperations {
  874. NTMS_OBJ_UPDATE = 1,
  875. NTMS_OBJ_INSERT,NTMS_OBJ_DELETE,NTMS_EVENT_SIGNAL,NTMS_EVENT_COMPLETE
  876. };
  877. typedef struct _NTMS_NOTIFICATIONINFORMATION {
  878. DWORD dwOperation;
  879. NTMS_GUID ObjectId;
  880. } NTMS_NOTIFICATIONINFORMATION,*LPNTMS_NOTIFICATIONINFORMATION;
  881. #endif
  882. DWORD WINAPI ImportNtmsDatabase(HANDLE hSession);
  883. DWORD WINAPI ExportNtmsDatabase(HANDLE hSession);
  884. DWORD WINAPI ImportNtmsDatabase(HANDLE hSession);
  885. DWORD WINAPI ExportNtmsDatabase(HANDLE hSession);
  886. HANDLE WINAPI OpenNtmsNotification(HANDLE hSession,DWORD dwType);
  887. DWORD WINAPI WaitForNtmsNotification(HANDLE hNotification,LPNTMS_NOTIFICATIONINFORMATION lpNotificationInformation,DWORD dwTimeout);
  888. DWORD WINAPI CloseNtmsNotification(HANDLE hNotification);
  889. DWORD WINAPI EjectDiskFromSADriveW(LPCWSTR lpComputerName,LPCWSTR lpAppName,LPCWSTR lpDeviceName,HWND hWnd,LPCWSTR lpTitle,LPCWSTR lpMessage,DWORD dwOptions);
  890. DWORD WINAPI EjectDiskFromSADriveA(LPCSTR lpComputerName,LPCSTR lpAppName,LPCSTR lpDeviceName,HWND hWnd,LPCSTR lpTitle,LPCSTR lpMessage,DWORD dwOptions);
  891. DWORD WINAPI GetVolumesFromDriveW(LPWSTR pszDriveName,LPWSTR *VolumeNameBufferPtr,LPWSTR *DriveLetterBufferPtr);
  892. DWORD WINAPI GetVolumesFromDriveA(LPSTR pszDriveName,LPSTR *VolumeNameBufferPtr,LPSTR *DriveLetterBufferPtr);
  893. #ifdef __cplusplus
  894. }
  895. #endif
  896. #pragma pack()
  897. #endif