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

📄 ntmsapi.h

📁 c语言编程软件vc6.0中文绿色版_vc6.0官方下载
💻 H
📖 第 1 页 / 共 3 页
字号:
		[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 + -