1054 lines
39 KiB
C
1054 lines
39 KiB
C
/**
|
|
* 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
|