⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntmsapi.h

📁 c语言编程软件vc6.0中文绿色版_vc6.0官方下载
💻 H
📖 第 1 页 / 共 3 页
字号:
/*++

  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 + -