📄 ntmsapi.h
字号:
[case(NTMS_IEPORT)] NTMS_IEPORTINFORMATION IEPort;
[case(NTMS_PHYSICAL_MEDIA)] NTMS_PMIDINFORMATIONA PhysicalMedia;
[case(NTMS_LOGICAL_MEDIA)] NTMS_LMIDINFORMATION LogicalMedia;
[case(NTMS_PARTITION)] NTMS_PARTITIONINFORMATIONA Partition;
[case(NTMS_MEDIA_POOL)] NTMS_MEDIAPOOLINFORMATION MediaPool;
[case(NTMS_MEDIA_TYPE)] NTMS_MEDIATYPEINFORMATION MediaType;
[case(NTMS_LIBREQUEST)] NTMS_LIBREQUESTINFORMATIONA LibRequest;
[case(NTMS_OPREQUEST)] NTMS_OPREQUESTINFORMATIONA OpRequest;
[default] ;
} Info;
#else
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;
} Info;
#endif // MIDL_PASS
} NTMS_OBJECTINFORMATIONA, *LPNTMS_OBJECTINFORMATIONA;
typedef struct _NTMS_OBJECTINFORMATIONW {
DWORD dwSize;
DWORD dwType;
SYSTEMTIME Created;
SYSTEMTIME Modified;
NTMS_GUID ObjectGuid;
BOOL Enabled;
DWORD dwOperationalState;
WCHAR szName[NTMS_OBJECTNAME_LENGTH];
WCHAR szDescription[NTMS_DESCRIPTION_LENGTH];
#ifdef MIDL_PASS
[switch_is(dwType)] union {
[case(NTMS_DRIVE)] NTMS_DRIVEINFORMATIONW Drive;
[case(NTMS_DRIVE_TYPE)] NTMS_DRIVETYPEINFORMATIONW DriveType;
[case(NTMS_LIBRARY)] NTMS_LIBRARYINFORMATION Library;
[case(NTMS_CHANGER)] NTMS_CHANGERINFORMATIONW Changer;
[case(NTMS_CHANGER_TYPE)] NTMS_CHANGERTYPEINFORMATIONW ChangerType;
[case(NTMS_STORAGESLOT)] NTMS_STORAGESLOTINFORMATION StorageSlot;
[case(NTMS_IEDOOR)] NTMS_IEDOORINFORMATION IEDoor;
[case(NTMS_IEPORT)] NTMS_IEPORTINFORMATION IEPort;
[case(NTMS_PHYSICAL_MEDIA)] NTMS_PMIDINFORMATIONW PhysicalMedia;
[case(NTMS_LOGICAL_MEDIA)] NTMS_LMIDINFORMATION LogicalMedia;
[case(NTMS_PARTITION)] NTMS_PARTITIONINFORMATIONW Partition;
[case(NTMS_MEDIA_POOL)] NTMS_MEDIAPOOLINFORMATION MediaPool;
[case(NTMS_MEDIA_TYPE)] NTMS_MEDIATYPEINFORMATION MediaType;
[case(NTMS_LIBREQUEST)] NTMS_LIBREQUESTINFORMATIONW LibRequest;
[case(NTMS_OPREQUEST)] NTMS_OPREQUESTINFORMATIONW OpRequest;
[default] ;
} Info;
#else
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;
} Info;
#endif // MIDL_PASS
} NTMS_OBJECTINFORMATIONW, *LPNTMS_OBJECTINFORMATIONW;
#endif // NTMS_NOREDEF
#ifndef MIDL_PASS
//======================================================================
// OBJECT MANAGEMENT APIS
//======================================================================
#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
// Added by SEvilia
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
);
// END of SEVILIA
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
};
DWORD WINAPI EjectNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId,
LPNTMS_GUID lpEjectOperation,
DWORD dwAction
);
enum NtmsInjectOperation {
NTMS_INJECT_START = 0,
NTMS_INJECT_STOP = 1
};
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
);
// definitions for the UpdateNtmsOmidInfo ...
#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 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
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
enum NtmsDriveType {
NTMS_UNKNOWN_DRIVE = 0
};
#endif // NTMS_NOREDEF
#ifndef MIDL_PASS
// Security for NTMS API
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
);
// Security Access Control Masks :
// NTMS_USE_ACCESS is required to use an NTMS object. For example,
// you will need this access to a library in order to mount media
// within it.
// NTMS_MODIFY_ACCESS is required to make changes to an NTMS object.
// For example, you will need modify access in order to change the name
// of an object or change its attributes.
// NTMS_CONTROL_ACCESS is required to control an NTMS object. For
// example, you will need control access to a library in order to
// inject media, eject media, clean or open the door.
//
enum NtmsAccessMask {
NTMS_USE_ACCESS = 0x1,
NTMS_MODIFY_ACCESS = 0x2,
NTMS_CONTROL_ACCESS = 0x4
};
// Generic Mappings :
#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
// Maximum attribute size for NTMS Object attribute API's
#define NTMS_MAXATTR_LENGTH 0x10000
// Object extensions for NTMS API
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
);
// Operator Requests
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
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
enum NtmsNotificationOperations {
NTMS_OBJ_UPDATE = 1,
NTMS_OBJ_INSERT = 2,
NTMS_OBJ_DELETE = 3
};
// object notification
typedef struct _NTMS_NOTIFICATIONINFORMATION {
DWORD dwOperation;
NTMS_GUID ObjectId;
} NTMS_NOTIFICATIONINFORMATION, *LPNTMS_NOTIFICATIONINFORMATION;
#endif // NTMS_NOREDEF
#ifndef MIDL_PASS
DWORD WINAPI ImportNtmsDatabase(
HANDLE hSession
);
DWORD WINAPI ExportNtmsDatabase(
HANDLE hSession
);
#endif // MIDL_PASS
#ifndef MIDL_PASS
HANDLE WINAPI OpenNtmsNotification(
HANDLE hSession,
DWORD dwType
);
DWORD WINAPI WaitForNtmsNotification(
// HANDLE hSession, //SEVILIA
HANDLE hNotification,
LPNTMS_NOTIFICATIONINFORMATION lpNotificationInformation,
DWORD dwTimeout
);
DWORD WINAPI CloseNtmsNotification(
// HANDLE hSession, //SEVILIA
HANDLE hNotification
);
#endif // MIDL_PASS
#ifdef __cplusplus
} // end extern "C"
#endif
#pragma pack()
#endif // _INCL_NTMSAPI_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -