📄 ntmsapi.h
字号:
/*++
Copyright (c) 1996-1997 Microsoft Corporation
Copyright (c) 1996-1997 Highground Systems
Module Name:
NtmsApi.h
Abstract:
This module contains the NTMS API prototypes and public definitions
supported in the API. The NTMS API provide a "C" interface to NTMS.
This header can be included in "C" and "C++" code.
Author:
Tom Hansen (thansen@highground.com) 25-Nov-1996
Revision History:
--*/
#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))
#ifndef NTMS_NOREDEF
// WARNING : The object types are provided as an ordered list of NTMS
// database objects. DO NOT change the order without also changing the
// object metadata table in obmeta.cpp.
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_NUMBER_OF_OBJECT_TYPES
};
// define unicode/ascii specific functions. This include functions that
// get or return strings.
#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 SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestW
#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 SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestA
#endif
#endif // NTMS_NOREDEF
//=======================================================================
// SESSION ESTABLISHMENT
//=======================================================================
#ifndef MIDL_PASS
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
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
//=======================================================================
// MOUNT DEFINITIONS
//=======================================================================
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
};
enum NtmsMountPriority {
NTMS_PRIORITY_DEFAULT = 50,
NTMS_PRIORITY_HIGHEST = 1,
NTMS_PRIORITY_HIGH = 25,
NTMS_PRIORITY_NORMAL = 50,
NTMS_PRIORITY_LOW = 75,
NTMS_PRIORITY_LOWEST = 100
};
#endif // NTMS_NOREDEF
//=======================================================================
// MOUNT AND DISMOUNT APIS
//=======================================================================
#ifndef MIDL_PASS
DWORD WINAPI MountNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId,
LPNTMS_GUID lpDriveId,
DWORD dwCount,
DWORD dwOptions,
DWORD dwPriority,
DWORD dwTimeout
);
DWORD WINAPI DismountNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId,
DWORD dwCount,
DWORD dwOptions
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
//=======================================================================
// ALLOCATE DEFINITIONS
//=======================================================================
enum NtmsAllocateOptions {
NTMS_ALLOCATE_NEW = 0x0001,
NTMS_ALLOCATE_NEXT = 0x0002,
NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE = 0x0004
};
#endif
//=======================================================================
// ALLOCATE AND DEALLOCATE APIS
//=======================================================================
#ifndef MIDL_PASS
DWORD WINAPI AllocateNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaPool,
LPNTMS_GUID lpPartition, // optional
LPNTMS_GUID lpMediaId, // OUTPUT, media id or operator request id
DWORD dwOptions,
DWORD dwTimeout
);
DWORD WINAPI DeallocateNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId,
DWORD dwOptions
);
DWORD WINAPI SwapNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId1,
LPNTMS_GUID lpMediaId2
);
//=======================================================================
// MEDIA STATES
//=======================================================================
DWORD WINAPI DecommissionNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId
);
DWORD WINAPI SetNtmsMediaComplete(
HANDLE hSession,
LPNTMS_GUID lpMediaId
);
DWORD WINAPI DeleteNtmsMedia(
HANDLE hSession,
LPNTMS_GUID lpMediaId
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
//=======================================================================
// MEDIA POOLS
//=======================================================================
enum NtmsCreateOptions {
NTMS_OPEN_EXISTING = 0x0001,
NTMS_CREATE_NEW = 0x0002,
NTMS_OPEN_ALWAYS = 0x0003
};
#endif // NTMS_NOREDEF
#ifndef MIDL_PASS
#ifdef PRE_SEVIL
DWORD WINAPI CreateNtmsMediaPool(
HANDLE hSession,
LPCTSTR lpPoolName,
LPNTMS_GUID lpMediaType,
DWORD dwAction,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
LPNTMS_GUID lpPoolId // OUT
);
#endif
// SEVILIA
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,
char *lpBufName,
LPDWORD lpdwNameSize
);
DWORD WINAPI GetNtmsMediaPoolNameW(
HANDLE hSession,
LPNTMS_GUID lpPoolId,
wchar_t *lpBufName,
LPDWORD lpdwNameSize
);
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
);
#endif // MIDL_PASS
#ifndef NTMS_NOREDEF
//======================================================================
// OBJECT INFORMATION STRUCTURES
//======================================================================
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
};
#define NTMS_DEVICENAME_LENGTH 64
#define NTMS_SERIALNUMBER_LENGTH 32
#define NTMS_REVISION_LENGTH 32
#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 NtmsInventoryMethod {
NTMS_INVENTORY_NONE = 0,
NTMS_INVENTORY_FAST = 1,
NTMS_INVENTORY_OMID = 2,
NTMS_INVENTORY_DEFAULT = 3,
NTMS_INVENTORY_MAX
};
typedef struct _NTMS_LIBRARYINFORMATION {
DWORD LibraryType;
NTMS_GUID CleanerSlot;
NTMS_GUID CleanerSlotDefault;
BOOL LibrarySupportsDriveCleaning;
BOOL 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_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];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -