Mercurial > games > semicongine
diff fuhtark_test/include/winapi/ntmsapi.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/ntmsapi.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,1053 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef _INCL_NTMSAPI_H_ +#define _INCL_NTMSAPI_H_ + +#pragma pack(8) + +#ifdef __cplusplus +extern "C" { +#endif + + typedef GUID NTMS_GUID; + typedef GUID *LPNTMS_GUID; + +#define NTMS_NULLGUID {0,0,0,{0,0,0,0,0,0,0,0}} +#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)) + +#ifdef UNICODE +#define OpenNtmsSession OpenNtmsSessionW +#define GetNtmsDeviceName GetNtmsDeviceNameW +#define GetNtmsObjectInformation GetNtmsObjectInformationW +#define SetNtmsObjectInformation SetNtmsObjectInformationW +#define CreateNtmsMediaPool CreateNtmsMediaPoolW +#define GetNtmsMediaPoolName GetNtmsMediaPoolNameW +#define GetNtmsObjectAttribute GetNtmsObjectAttributeW +#define SetNtmsObjectAttribute SetNtmsObjectAttributeW +#define GetNtmsUIOptions GetNtmsUIOptionsW +#define SetNtmsUIOptions SetNtmsUIOptionsW +#define SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestW +#define CreateNtmsMedia CreateNtmsMediaW +#define EjectDiskFromSADrive EjectDiskFromSADriveW +#define GetVolumesFromDrive GetVolumesFromDriveW +#else +#define OpenNtmsSession OpenNtmsSessionA +#define GetNtmsDeviceName GetNtmsDeviceNameA +#define GetNtmsObjectInformation GetNtmsObjectInformationA +#define SetNtmsObjectInformation SetNtmsObjectInformationA +#define CreateNtmsMediaPool CreateNtmsMediaPoolA +#define GetNtmsMediaPoolName GetNtmsMediaPoolNameA +#define GetNtmsObjectAttribute GetNtmsObjectAttributeA +#define SetNtmsObjectAttribute SetNtmsObjectAttributeA +#define GetNtmsUIOptions GetNtmsUIOptionsA +#define SetNtmsUIOptions SetNtmsUIOptionsA +#define SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestA +#define CreateNtmsMedia CreateNtmsMediaA +#define EjectDiskFromSADrive EjectDiskFromSADriveA +#define GetVolumesFromDrive GetVolumesFromDriveA +#endif + +#ifndef NTMS_NOREDEF + + enum NtmsObjectsTypes { + NTMS_UNKNOWN = 0,NTMS_OBJECT,NTMS_CHANGER,NTMS_CHANGER_TYPE,NTMS_COMPUTER,NTMS_DRIVE,NTMS_DRIVE_TYPE,NTMS_IEDOOR,NTMS_IEPORT,NTMS_LIBRARY, + NTMS_LIBREQUEST,NTMS_LOGICAL_MEDIA,NTMS_MEDIA_POOL,NTMS_MEDIA_TYPE,NTMS_PARTITION,NTMS_PHYSICAL_MEDIA,NTMS_STORAGESLOT,NTMS_OPREQUEST, + NTMS_UI_DESTINATION,NTMS_NUMBER_OF_OBJECT_TYPES + }; + + typedef struct _NTMS_ASYNC_IO { + NTMS_GUID OperationId; + NTMS_GUID EventId; + DWORD dwOperationType; + DWORD dwResult; + DWORD dwAsyncState; + HANDLE hEvent; + WINBOOL bOnStateChange; + } NTMS_ASYNC_IO,*LPNTMS_ASYNC_IO; + + enum NtmsAsyncStatus { + NTMS_ASYNCSTATE_QUEUED = 0,NTMS_ASYNCSTATE_WAIT_RESOURCE,NTMS_ASYNCSTATE_WAIT_OPERATOR,NTMS_ASYNCSTATE_INPROCESS,NTMS_ASYNCSTATE_COMPLETE + }; + + enum NtmsAsyncOperations { + NTMS_ASYNCOP_MOUNT = 1 + }; +#endif + + enum NtmsSessionOptions { + NTMS_SESSION_QUERYEXPEDITE = 0x1 + }; + + HANDLE WINAPI OpenNtmsSessionW(LPCWSTR lpServer,LPCWSTR lpApplication,DWORD dwOptions); + HANDLE WINAPI OpenNtmsSessionA(LPCSTR lpServer,LPCSTR lpApplication,DWORD dwOptions); + DWORD WINAPI CloseNtmsSession(HANDLE hSession); + +#ifndef NTMS_NOREDEF + + enum NtmsMountOptions { + NTMS_MOUNT_READ = 0x0001,NTMS_MOUNT_WRITE = 0x0002,NTMS_MOUNT_ERROR_NOT_AVAILABLE = 0x0004,NTMS_MOUNT_ERROR_IF_UNAVAILABLE = 0x0004, + NTMS_MOUNT_ERROR_OFFLINE = 0x0008,NTMS_MOUNT_ERROR_IF_OFFLINE = 0x0008,NTMS_MOUNT_SPECIFIC_DRIVE = 0x0010,NTMS_MOUNT_NOWAIT = 0x0020 + }; + + enum NtmsDismountOptions { + NTMS_DISMOUNT_DEFERRED = 0x0001,NTMS_DISMOUNT_IMMEDIATE = 0x0002 + }; + + enum NtmsMountPriority { + NTMS_PRIORITY_DEFAULT = 0,NTMS_PRIORITY_HIGHEST = 15,NTMS_PRIORITY_HIGH = 7,NTMS_PRIORITY_NORMAL = 0,NTMS_PRIORITY_LOW = -7, + NTMS_PRIORITY_LOWEST = -15 + }; + + typedef struct _NTMS_MOUNT_INFORMATION { + DWORD dwSize; + LPVOID lpReserved; + } NTMS_MOUNT_INFORMATION,*LPNTMS_MOUNT_INFORMATION; +#endif + + DWORD WINAPI MountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpDriveId,DWORD dwCount,DWORD dwOptions,int dwPriority,DWORD dwTimeout,LPNTMS_MOUNT_INFORMATION lpMountInformation); + DWORD WINAPI DismountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwCount,DWORD dwOptions); + +#ifndef NTMS_NOREDEF + enum NtmsAllocateOptions { + NTMS_ALLOCATE_NEW = 0x0001,NTMS_ALLOCATE_NEXT = 0x0002,NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE = 0x0004 + }; + + typedef struct _NTMS_ALLOCATION_INFORMATION { + DWORD dwSize; + LPVOID lpReserved; + NTMS_GUID AllocatedFrom; + } NTMS_ALLOCATION_INFORMATION,*LPNTMS_ALLOCATION_INFORMATION; +#endif + + DWORD WINAPI AllocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaPool,LPNTMS_GUID lpPartition,LPNTMS_GUID lpMediaId,DWORD dwOptions,DWORD dwTimeout,LPNTMS_ALLOCATION_INFORMATION lpAllocateInformation); + DWORD WINAPI DeallocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwOptions); + DWORD WINAPI SwapNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId1,LPNTMS_GUID lpMediaId2); + DWORD WINAPI AddNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId); + DWORD WINAPI DeleteNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId); + DWORD WINAPI ChangeNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId); + DWORD WINAPI DecommissionNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId); + DWORD WINAPI SetNtmsMediaComplete(HANDLE hSession,LPNTMS_GUID lpMediaId); + DWORD WINAPI DeleteNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId); + +#ifndef NTMS_NOREDEF + enum NtmsCreateOptions { + NTMS_OPEN_EXISTING = 0x0001,NTMS_CREATE_NEW = 0x0002,NTMS_OPEN_ALWAYS = 0x0003 + }; +#endif + +#ifdef PRE_SEVIL + DWORD WINAPI CreateNtmsMediaPool(HANDLE hSession,LPCTSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId); +#endif + DWORD WINAPI CreateNtmsMediaPoolA(HANDLE hSession,LPCSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId); + DWORD WINAPI CreateNtmsMediaPoolW(HANDLE hSession,LPCWSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId); + DWORD WINAPI GetNtmsMediaPoolNameA(HANDLE hSession,LPNTMS_GUID lpPoolId,LPSTR lpNameBuf,LPDWORD lpdwBufSize); + DWORD WINAPI GetNtmsMediaPoolNameW(HANDLE hSession,LPNTMS_GUID lpPoolId,LPWSTR lpNameBuf,LPDWORD lpdwBufSize); + DWORD WINAPI MoveToNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId); + DWORD WINAPI DeleteNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpPoolId); + DWORD WINAPI DeleteNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId); + DWORD WINAPI DeleteNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId); + +#define NTMS_OBJECTNAME_LENGTH 64 +#define NTMS_DESCRIPTION_LENGTH 127 +#define NTMS_DEVICENAME_LENGTH 64 +#define NTMS_SERIALNUMBER_LENGTH 32 +#define NTMS_REVISION_LENGTH 32 +#define NTMS_BARCODE_LENGTH 64 +#define NTMS_SEQUENCE_LENGTH 32 +#define NTMS_VENDORNAME_LENGTH 128 +#define NTMS_PRODUCTNAME_LENGTH 128 +#define NTMS_USERNAME_LENGTH 64 +#define NTMS_APPLICATIONNAME_LENGTH 64 +#define NTMS_COMPUTERNAME_LENGTH 64 +#define NTMS_I1_MESSAGE_LENGTH 127 +#define NTMS_MESSAGE_LENGTH 256 +#define NTMS_POOLHIERARCHY_LENGTH 512 +#define NTMS_OMIDLABELID_LENGTH 255 +#define NTMS_OMIDLABELTYPE_LENGTH 64 +#define NTMS_OMIDLABELINFO_LENGTH 256 + +#ifndef NTMS_NOREDEF + + enum NtmsDriveState { + NTMS_DRIVESTATE_DISMOUNTED = 0,NTMS_DRIVESTATE_MOUNTED = 1,NTMS_DRIVESTATE_LOADED = 2,NTMS_DRIVESTATE_UNLOADED = 5, + NTMS_DRIVESTATE_BEING_CLEANED = 6,NTMS_DRIVESTATE_DISMOUNTABLE = 7 + }; + +#ifdef UNICODE +#define _NTMS_DRIVEINFORMATION _NTMS_DRIVEINFORMATIONW +#define NTMS_DRIVEINFORMATION NTMS_DRIVEINFORMATIONW +#else +#define _NTMS_DRIVEINFORMATION _NTMS_DRIVEINFORMATIONA +#define NTMS_DRIVEINFORMATION NTMS_DRIVEINFORMATIONA +#endif + + typedef struct _NTMS_DRIVEINFORMATIONA { + DWORD Number; + DWORD State; + NTMS_GUID DriveType; + CHAR szDeviceName[NTMS_DEVICENAME_LENGTH]; + CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH]; + CHAR szRevision[NTMS_REVISION_LENGTH]; + WORD ScsiPort; + WORD ScsiBus; + WORD ScsiTarget; + WORD ScsiLun; + DWORD dwMountCount; + SYSTEMTIME LastCleanedTs; + NTMS_GUID SavedPartitionId; + NTMS_GUID Library; + GUID Reserved; + DWORD dwDeferDismountDelay; + } NTMS_DRIVEINFORMATIONA; + + typedef struct _NTMS_DRIVEINFORMATIONW { + DWORD Number; + DWORD State; + NTMS_GUID DriveType; + WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH]; + WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH]; + WCHAR szRevision[NTMS_REVISION_LENGTH]; + WORD ScsiPort; + WORD ScsiBus; + WORD ScsiTarget; + WORD ScsiLun; + DWORD dwMountCount; + SYSTEMTIME LastCleanedTs; + NTMS_GUID SavedPartitionId; + NTMS_GUID Library; + GUID Reserved; + DWORD dwDeferDismountDelay; + } NTMS_DRIVEINFORMATIONW; + + enum NtmsLibraryType { + NTMS_LIBRARYTYPE_UNKNOWN = 0,NTMS_LIBRARYTYPE_OFFLINE = 1,NTMS_LIBRARYTYPE_ONLINE = 2,NTMS_LIBRARYTYPE_STANDALONE = 3 + }; + + enum NtmsLibraryFlags { + NTMS_LIBRARYFLAG_FIXEDOFFLINE = 0x01,NTMS_LIBRARYFLAG_CLEANERPRESENT = 0x02,NTMS_LIBRARYFLAG_AUTODETECTCHANGE = 0x04, + NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING = 0x08,NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE = 0x10 + }; + + enum NtmsInventoryMethod { + NTMS_INVENTORY_NONE = 0,NTMS_INVENTORY_FAST = 1,NTMS_INVENTORY_OMID = 2,NTMS_INVENTORY_DEFAULT = 3,NTMS_INVENTORY_SLOT = 4, + NTMS_INVENTORY_STOP = 5,NTMS_INVENTORY_MAX + }; + + typedef struct _NTMS_LIBRARYINFORMATION { + DWORD LibraryType; + NTMS_GUID CleanerSlot; + NTMS_GUID CleanerSlotDefault; + WINBOOL LibrarySupportsDriveCleaning; + WINBOOL BarCodeReaderInstalled; + DWORD InventoryMethod; + DWORD dwCleanerUsesRemaining; + DWORD FirstDriveNumber; + DWORD dwNumberOfDrives; + DWORD FirstSlotNumber; + DWORD dwNumberOfSlots; + DWORD FirstDoorNumber; + DWORD dwNumberOfDoors; + DWORD FirstPortNumber; + DWORD dwNumberOfPorts; + DWORD FirstChangerNumber; + DWORD dwNumberOfChangers; + DWORD dwNumberOfMedia; + DWORD dwNumberOfMediaTypes; + DWORD dwNumberOfLibRequests; + GUID Reserved; + WINBOOL AutoRecovery; + DWORD dwFlags; + } NTMS_LIBRARYINFORMATION; + +#ifdef UNICODE +#define _NTMS_CHANGERINFORMATION _NTMS_CHANGERINFORMATIONW +#define NTMS_CHANGERINFORMATION NTMS_CHANGERINFORMATIONW +#else +#define _NTMS_CHANGERINFORMATION _NTMS_CHANGERINFORMATIONA +#define NTMS_CHANGERINFORMATION NTMS_CHANGERINFORMATIONA +#endif + + typedef struct _NTMS_CHANGERINFORMATIONA { + DWORD Number; + NTMS_GUID ChangerType; + CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH]; + CHAR szRevision[NTMS_REVISION_LENGTH]; + CHAR szDeviceName[NTMS_DEVICENAME_LENGTH]; + WORD ScsiPort; + WORD ScsiBus; + WORD ScsiTarget; + WORD ScsiLun; + NTMS_GUID Library; + } NTMS_CHANGERINFORMATIONA; + + typedef struct _NTMS_CHANGERINFORMATIONW { + DWORD Number; + NTMS_GUID ChangerType; + WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH]; + WCHAR szRevision[NTMS_REVISION_LENGTH]; + WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH]; + WORD ScsiPort; + WORD ScsiBus; + WORD ScsiTarget; + WORD ScsiLun; + NTMS_GUID Library; + } NTMS_CHANGERINFORMATIONW; + + enum NtmsSlotState { + NTMS_SLOTSTATE_UNKNOWN = 0,NTMS_SLOTSTATE_FULL = 1,NTMS_SLOTSTATE_EMPTY = 2,NTMS_SLOTSTATE_NOTPRESENT = 3,NTMS_SLOTSTATE_NEEDSINVENTORY = 4 + }; + + typedef struct _NTMS_STORAGESLOTINFORMATION { + DWORD Number; + DWORD State; + NTMS_GUID Library; + } NTMS_STORAGESLOTINFORMATION; + + enum NtmsDoorState { + NTMS_DOORSTATE_UNKNOWN = 0,NTMS_DOORSTATE_CLOSED = 1,NTMS_DOORSTATE_OPEN = 2 + }; + + typedef struct _NTMS_IEDOORINFORMATION { + DWORD Number; + DWORD State; + WORD MaxOpenSecs; + NTMS_GUID Library; + } NTMS_IEDOORINFORMATION; + + enum NtmsPortPosition { + NTMS_PORTPOSITION_UNKNOWN = 0,NTMS_PORTPOSITION_EXTENDED = 1,NTMS_PORTPOSITION_RETRACTED = 2 + }; + + enum NtmsPortContent { + NTMS_PORTCONTENT_UNKNOWN = 0,NTMS_PORTCONTENT_FULL = 1,NTMS_PORTCONTENT_EMPTY = 2 + }; + + typedef struct _NTMS_IEPORTINFORMATION { + DWORD Number; + DWORD Content; + DWORD Position; + WORD MaxExtendSecs; + NTMS_GUID Library; + } NTMS_IEPORTINFORMATION; + + enum NtmsBarCodeState { + NTMS_BARCODESTATE_OK = 1,NTMS_BARCODESTATE_UNREADABLE = 2 + }; + + enum NtmsMediaState { + NTMS_MEDIASTATE_IDLE = 0,NTMS_MEDIASTATE_INUSE = 1,NTMS_MEDIASTATE_MOUNTED = 2,NTMS_MEDIASTATE_LOADED = 3,NTMS_MEDIASTATE_UNLOADED = 4, + NTMS_MEDIASTATE_OPERROR = 5,NTMS_MEDIASTATE_OPREQ = 6 + }; + +#ifdef UNICODE +#define _NTMS_PMIDINFORMATION _NTMS_PMIDINFORMATIONW +#define NTMS_PMIDINFORMATION NTMS_PMIDINFORMATIONW +#else +#define _NTMS_PMIDINFORMATION _NTMS_PMIDINFORMATIONA +#define NTMS_PMIDINFORMATION NTMS_PMIDINFORMATIONA +#endif + + typedef struct _NTMS_PMIDINFORMATIONA { + NTMS_GUID CurrentLibrary; + NTMS_GUID MediaPool; + NTMS_GUID Location; + DWORD LocationType; + NTMS_GUID MediaType; + NTMS_GUID HomeSlot; + CHAR szBarCode[NTMS_BARCODE_LENGTH]; + DWORD BarCodeState; + CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH]; + DWORD MediaState; + DWORD dwNumberOfPartitions; + DWORD dwMediaTypeCode; + DWORD dwDensityCode; + NTMS_GUID MountedPartition; + } NTMS_PMIDINFORMATIONA; + + typedef struct _NTMS_PMIDINFORMATIONW { + NTMS_GUID CurrentLibrary; + NTMS_GUID MediaPool; + NTMS_GUID Location; + DWORD LocationType; + NTMS_GUID MediaType; + NTMS_GUID HomeSlot; + WCHAR szBarCode[NTMS_BARCODE_LENGTH]; + DWORD BarCodeState; + WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH]; + DWORD MediaState; + DWORD dwNumberOfPartitions; + DWORD dwMediaTypeCode; + DWORD dwDensityCode; + NTMS_GUID MountedPartition; + } NTMS_PMIDINFORMATIONW; + + typedef struct _NTMS_LMIDINFORMATION { + NTMS_GUID MediaPool; + DWORD dwNumberOfPartitions; + } NTMS_LMIDINFORMATION; + + enum NtmsPartitionState { + NTMS_PARTSTATE_UNKNOWN = 0,NTMS_PARTSTATE_UNPREPARED = 1,NTMS_PARTSTATE_INCOMPATIBLE = 2,NTMS_PARTSTATE_DECOMMISSIONED = 3, + NTMS_PARTSTATE_AVAILABLE = 4,NTMS_PARTSTATE_ALLOCATED = 5,NTMS_PARTSTATE_COMPLETE = 6,NTMS_PARTSTATE_FOREIGN = 7,NTMS_PARTSTATE_IMPORT = 8, + NTMS_PARTSTATE_RESERVED = 9 + }; + +#define NTMS_PARTSTATE_NEW NTMS_PARTSTATE_UNKNOWN + +#ifdef UNICODE +#define _NTMS_PARTITIONINFORMATION _NTMS_PARTITIONINFORMATIONW +#define NTMS_PARTITIONINFORMATION NTMS_PARTITIONINFORMATIONW +#else +#define _NTMS_PARTITIONINFORMATION _NTMS_PARTITIONINFORMATIONA +#define NTMS_PARTITIONINFORMATION NTMS_PARTITIONINFORMATIONA +#endif + + typedef struct _NTMS_PARTITIONINFORMATIONA { + NTMS_GUID PhysicalMedia; + NTMS_GUID LogicalMedia; + DWORD State; + WORD Side; + DWORD dwOmidLabelIdLength; + BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH]; + CHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH]; + CHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH]; + DWORD dwMountCount; + DWORD dwAllocateCount; + LARGE_INTEGER Capacity; + } NTMS_PARTITIONINFORMATIONA; + + typedef struct _NTMS_PARTITIONINFORMATIONW { + NTMS_GUID PhysicalMedia; + NTMS_GUID LogicalMedia; + DWORD State; + WORD Side; + DWORD dwOmidLabelIdLength; + BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH]; + WCHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH]; + WCHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH]; + DWORD dwMountCount; + DWORD dwAllocateCount; + LARGE_INTEGER Capacity; + } NTMS_PARTITIONINFORMATIONW; + + enum NtmsPoolType { + NTMS_POOLTYPE_UNKNOWN = 0,NTMS_POOLTYPE_SCRATCH = 1,NTMS_POOLTYPE_FOREIGN = 2,NTMS_POOLTYPE_IMPORT = 3,NTMS_POOLTYPE_APPLICATION = 1000 + }; + + enum NtmsAllocationPolicy { + NTMS_ALLOCATE_FROMSCRATCH = 1 + }; + + enum NtmsDeallocationPolicy { + NTMS_DEALLOCATE_TOSCRATCH = 1 + }; + + typedef struct _NTMS_MEDIAPOOLINFORMATION { + DWORD PoolType; + NTMS_GUID MediaType; + NTMS_GUID Parent; + DWORD AllocationPolicy; + DWORD DeallocationPolicy; + DWORD dwMaxAllocates; + DWORD dwNumberOfPhysicalMedia; + DWORD dwNumberOfLogicalMedia; + DWORD dwNumberOfMediaPools; + } NTMS_MEDIAPOOLINFORMATION; + + enum NtmsReadWriteCharacteristics { + NTMS_MEDIARW_UNKNOWN = 0,NTMS_MEDIARW_REWRITABLE = 1,NTMS_MEDIARW_WRITEONCE = 2,NTMS_MEDIARW_READONLY = 3 + }; + + typedef struct _NTMS_MEDIATYPEINFORMATION { + DWORD MediaType; + DWORD NumberOfSides; + DWORD ReadWriteCharacteristics; + DWORD DeviceType; + } NTMS_MEDIATYPEINFORMATION; + +#ifdef UNICODE +#define _NTMS_DRIVETYPEINFORMATION _NTMS_DRIVETYPEINFORMATIONW +#define NTMS_DRIVETYPEINFORMATION NTMS_DRIVETYPEINFORMATIONW +#else +#define _NTMS_DRIVETYPEINFORMATION _NTMS_DRIVETYPEINFORMATIONA +#define NTMS_DRIVETYPEINFORMATION NTMS_DRIVETYPEINFORMATIONA +#endif + + typedef struct _NTMS_DRIVETYPEINFORMATIONA { + CHAR szVendor[NTMS_VENDORNAME_LENGTH]; + CHAR szProduct[NTMS_PRODUCTNAME_LENGTH]; + DWORD NumberOfHeads; + DWORD DeviceType; + } NTMS_DRIVETYPEINFORMATIONA; + + typedef struct _NTMS_DRIVETYPEINFORMATIONW { + WCHAR szVendor[NTMS_VENDORNAME_LENGTH]; + WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH]; + DWORD NumberOfHeads; + DWORD DeviceType; + } NTMS_DRIVETYPEINFORMATIONW; + +#ifdef UNICODE +#define _NTMS_CHANGERTYPEINFORMATION _NTMS_CHANGERTYPEINFORMATIONW +#define NTMS_CHANGERTYPEINFORMATION NTMS_CHANGERTYPEINFORMATIONW +#else +#define _NTMS_CHANGERTYPEINFORMATION _NTMS_CHANGERTYPEINFORMATIONA +#define NTMS_CHANGERTYPEINFORMATION NTMS_CHANGERTYPEINFORMATIONA +#endif + + typedef struct _NTMS_CHANGERTYPEINFORMATIONA { + CHAR szVendor[NTMS_VENDORNAME_LENGTH]; + CHAR szProduct[NTMS_PRODUCTNAME_LENGTH]; + DWORD DeviceType; + } NTMS_CHANGERTYPEINFORMATIONA; + + typedef struct _NTMS_CHANGERTYPEINFORMATIONW { + WCHAR szVendor[NTMS_VENDORNAME_LENGTH]; + WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH]; + DWORD DeviceType; + } NTMS_CHANGERTYPEINFORMATIONW; + + enum NtmsLmOperation { + NTMS_LM_REMOVE = 0,NTMS_LM_DISABLECHANGER = 1,NTMS_LM_DISABLELIBRARY = 1,NTMS_LM_ENABLECHANGER = 2,NTMS_LM_ENABLELIBRARY = 2, + NTMS_LM_DISABLEDRIVE = 3,NTMS_LM_ENABLEDRIVE = 4,NTMS_LM_DISABLEMEDIA = 5,NTMS_LM_ENABLEMEDIA = 6,NTMS_LM_UPDATEOMID = 7, + NTMS_LM_INVENTORY = 8,NTMS_LM_DOORACCESS = 9,NTMS_LM_EJECT = 10,NTMS_LM_EJECTCLEANER = 11,NTMS_LM_INJECT = 12,NTMS_LM_INJECTCLEANER = 13, + NTMS_LM_PROCESSOMID = 14,NTMS_LM_CLEANDRIVE = 15,NTMS_LM_DISMOUNT = 16,NTMS_LM_MOUNT = 17,NTMS_LM_WRITESCRATCH = 18,NTMS_LM_CLASSIFY = 19, + NTMS_LM_RESERVECLEANER = 20,NTMS_LM_RELEASECLEANER = 21,NTMS_LM_MAXWORKITEM + }; + + enum NtmsLmState { + NTMS_LM_QUEUED = 0,NTMS_LM_INPROCESS = 1,NTMS_LM_PASSED = 2,NTMS_LM_FAILED = 3,NTMS_LM_INVALID = 4,NTMS_LM_WAITING = 5, + NTMS_LM_DEFERRED = 6,NTMS_LM_DEFFERED = 6,NTMS_LM_CANCELLED = 7,NTMS_LM_STOPPED = 8 + }; + +#ifdef UNICODE +#define _NTMS_LIBREQUESTINFORMATION _NTMS_LIBREQUESTINFORMATIONW +#define NTMS_LIBREQUESTINFORMATION NTMS_LIBREQUESTINFORMATIONW +#else +#define _NTMS_LIBREQUESTINFORMATION _NTMS_LIBREQUESTINFORMATIONA +#define NTMS_LIBREQUESTINFORMATION NTMS_LIBREQUESTINFORMATIONA +#endif + + typedef struct _NTMS_LIBREQUESTINFORMATIONA { + DWORD OperationCode; + DWORD OperationOption; + DWORD State; + NTMS_GUID PartitionId; + NTMS_GUID DriveId; + NTMS_GUID PhysMediaId; + NTMS_GUID Library; + NTMS_GUID SlotId; + SYSTEMTIME TimeQueued; + SYSTEMTIME TimeCompleted; + CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + CHAR szUser[NTMS_USERNAME_LENGTH]; + CHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + DWORD dwErrorCode; + NTMS_GUID WorkItemId; + DWORD dwPriority; + } NTMS_LIBREQUESTINFORMATIONA; + + typedef struct _NTMS_LIBREQUESTINFORMATIONW { + DWORD OperationCode; + DWORD OperationOption; + DWORD State; + NTMS_GUID PartitionId; + NTMS_GUID DriveId; + NTMS_GUID PhysMediaId; + NTMS_GUID Library; + NTMS_GUID SlotId; + SYSTEMTIME TimeQueued; + SYSTEMTIME TimeCompleted; + WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + WCHAR szUser[NTMS_USERNAME_LENGTH]; + WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + DWORD dwErrorCode; + NTMS_GUID WorkItemId; + DWORD dwPriority; + } NTMS_LIBREQUESTINFORMATIONW; + + enum NtmsOpreqCommand { + NTMS_OPREQ_UNKNOWN = 0,NTMS_OPREQ_NEWMEDIA = 1,NTMS_OPREQ_CLEANER = 2,NTMS_OPREQ_DEVICESERVICE = 3,NTMS_OPREQ_MOVEMEDIA = 4, + NTMS_OPREQ_MESSAGE = 5 + }; + + enum NtmsOpreqState { + NTMS_OPSTATE_UNKNOWN = 0,NTMS_OPSTATE_SUBMITTED = 1,NTMS_OPSTATE_ACTIVE = 2,NTMS_OPSTATE_INPROGRESS = 3,NTMS_OPSTATE_REFUSED = 4, + NTMS_OPSTATE_COMPLETE = 5 + }; + +#ifdef UNICODE +#define _NTMS_OPREQUESTINFORMATION _NTMS_OPREQUESTINFORMATIONW +#define NTMS_OPREQUESTINFORMATION NTMS_OPREQUESTINFORMATIONW +#else +#define _NTMS_OPREQUESTINFORMATION _NTMS_OPREQUESTINFORMATIONA +#define NTMS_OPREQUESTINFORMATION NTMS_OPREQUESTINFORMATIONA +#endif + + typedef struct _NTMS_OPREQUESTINFORMATIONA { + DWORD Request; + SYSTEMTIME Submitted; + DWORD State; + CHAR szMessage[NTMS_MESSAGE_LENGTH]; + DWORD Arg1Type; + NTMS_GUID Arg1; + DWORD Arg2Type; + NTMS_GUID Arg2; + CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + CHAR szUser[NTMS_USERNAME_LENGTH]; + CHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_OPREQUESTINFORMATIONA; + + typedef struct _NTMS_OPREQUESTINFORMATIONW { + DWORD Request; + SYSTEMTIME Submitted; + DWORD State; + WCHAR szMessage[NTMS_MESSAGE_LENGTH]; + DWORD Arg1Type; + NTMS_GUID Arg1; + DWORD Arg2Type; + NTMS_GUID Arg2; + WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + WCHAR szUser[NTMS_USERNAME_LENGTH]; + WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_OPREQUESTINFORMATIONW; + + typedef struct _NTMS_COMPUTERINFORMATION { + DWORD dwLibRequestPurgeTime; + DWORD dwOpRequestPurgeTime; + DWORD dwLibRequestFlags; + DWORD dwOpRequestFlags; + DWORD dwMediaPoolPolicy; + } NTMS_COMPUTERINFORMATION; + + enum NtmsLibRequestFlags { + NTMS_LIBREQFLAGS_NOAUTOPURGE = 0x01,NTMS_LIBREQFLAGS_NOFAILEDPURGE = 0x02 + }; + + enum NtmsOpRequestFlags { + NTMS_OPREQFLAGS_NOAUTOPURGE = 0x01,NTMS_OPREQFLAGS_NOFAILEDPURGE = 0x02,NTMS_OPREQFLAGS_NOALERTS = 0x10,NTMS_OPREQFLAGS_NOTRAYICON = 0x20 + }; + + enum NtmsMediaPoolPolicy { + NTMS_POOLPOLICY_PURGEOFFLINESCRATCH = 0x01,NTMS_POOLPOLICY_KEEPOFFLINEIMPORT = 0x02 + }; + +#ifdef UNICODE +#define _NTMS_OBJECTINFORMATION _NTMS_OBJECTINFORMATIONW +#define NTMS_OBJECTINFORMATION NTMS_OBJECTINFORMATIONW +#define LPNTMS_OBJECTINFORMATION LPNTMS_OBJECTINFORMATIONW +#else +#define _NTMS_OBJECTINFORMATION _NTMS_OBJECTINFORMATIONA +#define NTMS_OBJECTINFORMATION NTMS_OBJECTINFORMATIONA +#define LPNTMS_OBJECTINFORMATION LPNTMS_OBJECTINFORMATIONA +#endif + + enum NtmsOperationalState { + NTMS_READY = 0,NTMS_INITIALIZING = 10,NTMS_NEEDS_SERVICE = 20,NTMS_NOT_PRESENT = 21 + }; + + typedef struct _NTMS_OBJECTINFORMATIONA { + DWORD dwSize; + DWORD dwType; + SYSTEMTIME Created; + SYSTEMTIME Modified; + NTMS_GUID ObjectGuid; + WINBOOL Enabled; + DWORD dwOperationalState; + CHAR szName[NTMS_OBJECTNAME_LENGTH]; + CHAR szDescription[NTMS_DESCRIPTION_LENGTH]; + union { + NTMS_DRIVEINFORMATIONA Drive; + NTMS_DRIVETYPEINFORMATIONA DriveType; + NTMS_LIBRARYINFORMATION Library; + NTMS_CHANGERINFORMATIONA Changer; + NTMS_CHANGERTYPEINFORMATIONA ChangerType; + NTMS_STORAGESLOTINFORMATION StorageSlot; + NTMS_IEDOORINFORMATION IEDoor; + NTMS_IEPORTINFORMATION IEPort; + NTMS_PMIDINFORMATIONA PhysicalMedia; + NTMS_LMIDINFORMATION LogicalMedia; + NTMS_PARTITIONINFORMATIONA Partition; + NTMS_MEDIAPOOLINFORMATION MediaPool; + NTMS_MEDIATYPEINFORMATION MediaType; + NTMS_LIBREQUESTINFORMATIONA LibRequest; + NTMS_OPREQUESTINFORMATIONA OpRequest; + NTMS_COMPUTERINFORMATION Computer; + } Info; + } NTMS_OBJECTINFORMATIONA,*LPNTMS_OBJECTINFORMATIONA; + + typedef struct _NTMS_OBJECTINFORMATIONW { + DWORD dwSize; + DWORD dwType; + SYSTEMTIME Created; + SYSTEMTIME Modified; + NTMS_GUID ObjectGuid; + WINBOOL Enabled; + DWORD dwOperationalState; + WCHAR szName[NTMS_OBJECTNAME_LENGTH]; + WCHAR szDescription[NTMS_DESCRIPTION_LENGTH]; + union { + NTMS_DRIVEINFORMATIONW Drive; + NTMS_DRIVETYPEINFORMATIONW DriveType; + NTMS_LIBRARYINFORMATION Library; + NTMS_CHANGERINFORMATIONW Changer; + NTMS_CHANGERTYPEINFORMATIONW ChangerType; + NTMS_STORAGESLOTINFORMATION StorageSlot; + NTMS_IEDOORINFORMATION IEDoor; + NTMS_IEPORTINFORMATION IEPort; + NTMS_PMIDINFORMATIONW PhysicalMedia; + NTMS_LMIDINFORMATION LogicalMedia; + NTMS_PARTITIONINFORMATIONW Partition; + NTMS_MEDIAPOOLINFORMATION MediaPool; + NTMS_MEDIATYPEINFORMATION MediaType; + NTMS_LIBREQUESTINFORMATIONW LibRequest; + NTMS_OPREQUESTINFORMATIONW OpRequest; + NTMS_COMPUTERINFORMATION Computer; + } Info; + } NTMS_OBJECTINFORMATIONW,*LPNTMS_OBJECTINFORMATIONW; + +#ifdef UNICODE +#define NTMS_I1_LIBREQUESTINFORMATION NTMS_I1_LIBREQUESTINFORMATIONW +#define NTMS_I1_PARTITIONINFORMATION NTMS_I1_PARTITIONINFORMATIONW +#define NTMS_I1_PMIDINFORMATION NTMS_I1_PMIDINFORMATIONW +#define NTMS_I1_OPREQUESTINFORMATION NTMS_I1_OPREQUESTINFORMATIONW +#define NTMS_I1_OBJECTINFORMATION NTMS_I1_OBJECTINFORMATIONW +#else +#define NTMS_I1_LIBREQUESTINFORMATION NTMS_I1_LIBREQUESTINFORMATIONA +#define NTMS_I1_PARTITIONINFORMATION NTMS_I1_PARTITIONINFORMATIONA +#define NTMS_I1_PMIDINFORMATION NTMS_I1_PMIDINFORMATIONA +#define NTMS_I1_OPREQUESTINFORMATION NTMS_I1_OPREQUESTINFORMATIONA +#define NTMS_I1_OBJECTINFORMATION NTMS_I1_OBJECTINFORMATIONA +#endif + + typedef struct _NTMS_I1_LIBRARYINFORMATION { + DWORD LibraryType; + NTMS_GUID CleanerSlot; + NTMS_GUID CleanerSlotDefault; + WINBOOL LibrarySupportsDriveCleaning; + WINBOOL BarCodeReaderInstalled; + DWORD InventoryMethod; + DWORD dwCleanerUsesRemaining; + DWORD FirstDriveNumber; + DWORD dwNumberOfDrives; + DWORD FirstSlotNumber; + DWORD dwNumberOfSlots; + DWORD FirstDoorNumber; + DWORD dwNumberOfDoors; + DWORD FirstPortNumber; + DWORD dwNumberOfPorts; + DWORD FirstChangerNumber; + DWORD dwNumberOfChangers; + DWORD dwNumberOfMedia; + DWORD dwNumberOfMediaTypes; + DWORD dwNumberOfLibRequests; + GUID Reserved; + } NTMS_I1_LIBRARYINFORMATION; + + typedef struct _NTMS_I1_LIBREQUESTINFORMATIONA { + DWORD OperationCode; + DWORD OperationOption; + DWORD State; + NTMS_GUID PartitionId; + NTMS_GUID DriveId; + NTMS_GUID PhysMediaId; + NTMS_GUID Library; + NTMS_GUID SlotId; + SYSTEMTIME TimeQueued; + SYSTEMTIME TimeCompleted; + CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + CHAR szUser[NTMS_USERNAME_LENGTH]; + CHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_I1_LIBREQUESTINFORMATIONA; + + typedef struct _NTMS_I1_LIBREQUESTINFORMATIONW { + DWORD OperationCode; + DWORD OperationOption; + DWORD State; + NTMS_GUID PartitionId; + NTMS_GUID DriveId; + NTMS_GUID PhysMediaId; + NTMS_GUID Library; + NTMS_GUID SlotId; + SYSTEMTIME TimeQueued; + SYSTEMTIME TimeCompleted; + WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + WCHAR szUser[NTMS_USERNAME_LENGTH]; + WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_I1_LIBREQUESTINFORMATIONW; + + typedef struct _NTMS_I1_PMIDINFORMATIONA { + NTMS_GUID CurrentLibrary; + NTMS_GUID MediaPool; + NTMS_GUID Location; + DWORD LocationType; + NTMS_GUID MediaType; + NTMS_GUID HomeSlot; + CHAR szBarCode[NTMS_BARCODE_LENGTH]; + DWORD BarCodeState; + CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH]; + DWORD MediaState; + DWORD dwNumberOfPartitions; + } NTMS_I1_PMIDINFORMATIONA; + + typedef struct _NTMS_I1_PMIDINFORMATIONW { + NTMS_GUID CurrentLibrary; + NTMS_GUID MediaPool; + NTMS_GUID Location; + DWORD LocationType; + NTMS_GUID MediaType; + NTMS_GUID HomeSlot; + WCHAR szBarCode[NTMS_BARCODE_LENGTH]; + DWORD BarCodeState; + WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH]; + DWORD MediaState; + DWORD dwNumberOfPartitions; + } NTMS_I1_PMIDINFORMATIONW; + + typedef struct _NTMS_I1_PARTITIONINFORMATIONA { + NTMS_GUID PhysicalMedia; + NTMS_GUID LogicalMedia; + DWORD State; + WORD Side; + DWORD dwOmidLabelIdLength; + BYTE OmidLabelId[255]; + CHAR szOmidLabelType[64]; + CHAR szOmidLabelInfo[256]; + DWORD dwMountCount; + DWORD dwAllocateCount; + } NTMS_I1_PARTITIONINFORMATIONA; + + typedef struct _NTMS_I1_PARTITIONINFORMATIONW { + NTMS_GUID PhysicalMedia; + NTMS_GUID LogicalMedia; + DWORD State; + WORD Side; + DWORD dwOmidLabelIdLength; + BYTE OmidLabelId[255]; + WCHAR szOmidLabelType[64]; + WCHAR szOmidLabelInfo[256]; + DWORD dwMountCount; + DWORD dwAllocateCount; + } NTMS_I1_PARTITIONINFORMATIONW; + + typedef struct _NTMS_I1_OPREQUESTINFORMATIONA { + DWORD Request; + SYSTEMTIME Submitted; + DWORD State; + CHAR szMessage[NTMS_I1_MESSAGE_LENGTH]; + DWORD Arg1Type; + NTMS_GUID Arg1; + DWORD Arg2Type; + NTMS_GUID Arg2; + CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + CHAR szUser[NTMS_USERNAME_LENGTH]; + CHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_I1_OPREQUESTINFORMATIONA; + + typedef struct _NTMS_I1_OPREQUESTINFORMATIONW { + DWORD Request; + SYSTEMTIME Submitted; + DWORD State; + WCHAR szMessage[NTMS_I1_MESSAGE_LENGTH]; + DWORD Arg1Type; + NTMS_GUID Arg1; + DWORD Arg2Type; + NTMS_GUID Arg2; + WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH]; + WCHAR szUser[NTMS_USERNAME_LENGTH]; + WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH]; + } NTMS_I1_OPREQUESTINFORMATIONW; + + typedef struct _NTMS_I1_OBJECTINFORMATIONA { + DWORD dwSize; + DWORD dwType; + SYSTEMTIME Created; + SYSTEMTIME Modified; + NTMS_GUID ObjectGuid; + WINBOOL Enabled; + DWORD dwOperationalState; + CHAR szName[NTMS_OBJECTNAME_LENGTH]; + CHAR szDescription[NTMS_DESCRIPTION_LENGTH]; + union { + NTMS_DRIVEINFORMATIONA Drive; + NTMS_DRIVETYPEINFORMATIONA DriveType; + NTMS_I1_LIBRARYINFORMATION Library; + NTMS_CHANGERINFORMATIONA Changer; + NTMS_CHANGERTYPEINFORMATIONA ChangerType; + NTMS_STORAGESLOTINFORMATION StorageSlot; + NTMS_IEDOORINFORMATION IEDoor; + NTMS_IEPORTINFORMATION IEPort; + NTMS_I1_PMIDINFORMATIONA PhysicalMedia; + NTMS_LMIDINFORMATION LogicalMedia; + NTMS_I1_PARTITIONINFORMATIONA Partition; + NTMS_MEDIAPOOLINFORMATION MediaPool; + NTMS_MEDIATYPEINFORMATION MediaType; + NTMS_I1_LIBREQUESTINFORMATIONA LibRequest; + NTMS_I1_OPREQUESTINFORMATIONA OpRequest; + } Info; + } NTMS_I1_OBJECTINFORMATIONA,*LPNTMS_I1_OBJECTINFORMATIONA; + + typedef struct _NTMS_I1_OBJECTINFORMATIONW { + DWORD dwSize; + DWORD dwType; + SYSTEMTIME Created; + SYSTEMTIME Modified; + NTMS_GUID ObjectGuid; + WINBOOL Enabled; + DWORD dwOperationalState; + WCHAR szName[NTMS_OBJECTNAME_LENGTH]; + WCHAR szDescription[NTMS_DESCRIPTION_LENGTH]; + union { + NTMS_DRIVEINFORMATIONW Drive; + NTMS_DRIVETYPEINFORMATIONW DriveType; + NTMS_I1_LIBRARYINFORMATION Library; + NTMS_CHANGERINFORMATIONW Changer; + NTMS_CHANGERTYPEINFORMATIONW ChangerType; + NTMS_STORAGESLOTINFORMATION StorageSlot; + NTMS_IEDOORINFORMATION IEDoor; + NTMS_IEPORTINFORMATION IEPort; + NTMS_I1_PMIDINFORMATIONW PhysicalMedia; + NTMS_LMIDINFORMATION LogicalMedia; + NTMS_I1_PARTITIONINFORMATIONW Partition; + NTMS_MEDIAPOOLINFORMATION MediaPool; + NTMS_MEDIATYPEINFORMATION MediaType; + NTMS_I1_LIBREQUESTINFORMATIONW LibRequest; + NTMS_I1_OPREQUESTINFORMATIONW OpRequest; + } Info; + } NTMS_I1_OBJECTINFORMATIONW,*LPNTMS_I1_OBJECTINFORMATIONW; +#endif + +#ifndef NTMS_NOREDEF + + enum NtmsCreateNtmsMediaOptions { + NTMS_ERROR_ON_DUPLICATE = 0x0001 + }; +#endif + +#ifdef PRE_SEVIL + DWORD WINAPI GetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo); + DWORD WINAPI SetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo); +#endif + DWORD WINAPI GetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo); + DWORD WINAPI GetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo); + DWORD WINAPI SetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo); + DWORD WINAPI SetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo); + DWORD WINAPI CreateNtmsMediaA(HANDLE hSession,LPNTMS_OBJECTINFORMATIONA lpMedia,LPNTMS_OBJECTINFORMATIONA lpList,DWORD dwOptions); + DWORD WINAPI CreateNtmsMediaW(HANDLE hSession,LPNTMS_OBJECTINFORMATIONW lpMedia,LPNTMS_OBJECTINFORMATIONW lpList,DWORD dwOptions); + enum NtmsEnumerateOption { + NTMS_ENUM_DEFAULT = 0,NTMS_ENUM_ROOTPOOL = 1 + }; + DWORD WINAPI EnumerateNtmsObject(HANDLE hSession,const LPNTMS_GUID lpContainerId,LPNTMS_GUID lpList,LPDWORD lpdwListSize,DWORD dwType,DWORD dwOptions); + DWORD WINAPI DisableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId); + DWORD WINAPI EnableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId); + enum NtmsEjectOperation { + 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 + }; + DWORD WINAPI EjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpEjectOperation,DWORD dwAction); + enum NtmsInjectOperation { + NTMS_INJECT_START = 0,NTMS_INJECT_STOP = 1,NTMS_INJECT_RETRACT = 2,NTMS_INJECT_STARTMANY = 3 + }; + DWORD WINAPI InjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpLibraryId,LPNTMS_GUID lpInjectOperation,DWORD dwAction); + DWORD WINAPI AccessNtmsLibraryDoor(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction); + DWORD WINAPI CleanNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId); + DWORD WINAPI DismountNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId); + DWORD WINAPI InventoryNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction); + DWORD WINAPI IdentifyNtmsSlot(HANDLE hSession,LPNTMS_GUID lpSlotId,DWORD dwOption); + +#define NTMS_OMID_TYPE_RAW_LABEL 0x01 +#define NTMS_OMID_TYPE_FILESYSTEM_INFO 0x02 + + typedef struct { + WCHAR FileSystemType[64]; + WCHAR VolumeName[256]; + DWORD SerialNumber; + } NTMS_FILESYSTEM_INFO; + + DWORD WINAPI UpdateNtmsOmidInfo(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD labelType,DWORD numberOfBytes,LPVOID lpBuffer); + DWORD WINAPI CancelNtmsLibraryRequest(HANDLE hSession,LPNTMS_GUID lpRequestId); + DWORD WINAPI GetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,LPDWORD lpdwOrderNumber); + DWORD WINAPI SetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwOrderNumber); + DWORD WINAPI DeleteNtmsRequests(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount); + DWORD WINAPI ReserveNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpSlot); + DWORD WINAPI ReleaseNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary); + DWORD WINAPI InjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpInjectOperation,DWORD dwNumberOfCleansLeft,DWORD dwAction); + DWORD WINAPI EjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpEjectOperation,DWORD dwAction); + DWORD WINAPI BeginNtmsDeviceChangeDetection(HANDLE hSession,LPHANDLE lpDetectHandle); + DWORD WINAPI SetNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount); + DWORD WINAPI EndNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle); + +#ifndef NTMS_NOREDEF + enum NtmsDriveType { + NTMS_UNKNOWN_DRIVE = 0 + }; +#endif + + DWORD WINAPI GetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded); + DWORD WINAPI SetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor); + enum NtmsAccessMask { + NTMS_USE_ACCESS = 0x1,NTMS_MODIFY_ACCESS = 0x2,NTMS_CONTROL_ACCESS = 0x4 + }; + +#define NTMS_GENERIC_READ NTMS_USE_ACCESS +#define NTMS_GENERIC_WRITE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS +#define NTMS_GENERIC_EXECUTE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS +#define NTMS_GENERIC_ALL NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS + +#define NTMS_MAXATTR_LENGTH 0x10000 +#define NTMS_MAXATTR_NAMELEN 32 + + DWORD WINAPI GetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize); + DWORD WINAPI GetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize); + DWORD WINAPI SetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,DWORD dwAttributeSize); + DWORD WINAPI SetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,DWORD AttributeSize); + + enum NtmsUITypes { + NTMS_UITYPE_INVALID = 0,NTMS_UITYPE_INFO,NTMS_UITYPE_REQ,NTMS_UITYPE_ERR,NTMS_UITYPE_MAX + }; + + enum NtmsUIOperations { + NTMS_UIDEST_ADD = 1,NTMS_UIDEST_DELETE,NTMS_UIDEST_DELETEALL,NTMS_UIOPERATION_MAX + }; + + DWORD WINAPI GetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPSTR lpszDestination,LPDWORD lpdwBufSize); + DWORD WINAPI GetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPWSTR lpszDestination,LPDWORD lpdwBufSize); + DWORD WINAPI SetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCSTR lpszDestination); + DWORD WINAPI SetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCWSTR lpszDestination); + DWORD WINAPI SubmitNtmsOperatorRequestW(HANDLE hSession,DWORD dwRequest,LPCWSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId); + DWORD WINAPI SubmitNtmsOperatorRequestA(HANDLE hSession,DWORD dwRequest,LPCSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId); + DWORD WINAPI WaitForNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwTimeout); + DWORD WINAPI CancelNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId); + DWORD WINAPI SatisfyNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId); + +#ifndef NTMS_NOREDEF + enum NtmsNotificationOperations { + NTMS_OBJ_UPDATE = 1,NTMS_OBJ_INSERT = 2,NTMS_OBJ_DELETE = 3,NTMS_EVENT_SIGNAL = 4,NTMS_EVENT_COMPLETE = 5 + }; + + typedef struct _NTMS_NOTIFICATIONINFORMATION { + DWORD dwOperation; + NTMS_GUID ObjectId; + } NTMS_NOTIFICATIONINFORMATION,*LPNTMS_NOTIFICATIONINFORMATION; +#endif + + DWORD WINAPI ImportNtmsDatabase(HANDLE hSession); + DWORD WINAPI ExportNtmsDatabase(HANDLE hSession); + DWORD WINAPI ImportNtmsDatabase(HANDLE hSession); + DWORD WINAPI ExportNtmsDatabase(HANDLE hSession); + HANDLE WINAPI OpenNtmsNotification(HANDLE hSession,DWORD dwType); + DWORD WINAPI WaitForNtmsNotification(HANDLE hNotification,LPNTMS_NOTIFICATIONINFORMATION lpNotificationInformation,DWORD dwTimeout); + DWORD WINAPI CloseNtmsNotification(HANDLE hNotification); + DWORD WINAPI EjectDiskFromSADriveW(LPCWSTR lpComputerName,LPCWSTR lpAppName,LPCWSTR lpDeviceName,HWND hWnd,LPCWSTR lpTitle,LPCWSTR lpMessage,DWORD dwOptions); + DWORD WINAPI EjectDiskFromSADriveA(LPCSTR lpComputerName,LPCSTR lpAppName,LPCSTR lpDeviceName,HWND hWnd,LPCSTR lpTitle,LPCSTR lpMessage,DWORD dwOptions); + DWORD WINAPI GetVolumesFromDriveW(LPWSTR pszDriveName,LPWSTR *VolumeNameBufferPtr,LPWSTR *DriveLetterBufferPtr); + DWORD WINAPI GetVolumesFromDriveA(LPSTR pszDriveName,LPSTR *VolumeNameBufferPtr,LPSTR *DriveLetterBufferPtr); + +#ifdef __cplusplus +} +#endif + +#pragma pack() +#endif
