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