// // NTMS DCOM INTERFACE(S) // Copyright (c) 1996-1998 Microsoft Corporation // Copyright (c) 1996-1998 Highground Systems // // import "Unknwn.idl"; import "WTypes.idl"; #define MIDL_PASS #define WINAPI // Removed all references to "void *" because the MIDL // compiler doesn't know how to deal with them. // replaced the definition of HANDLE (void *) to unsigned long // replaced the definition of LPVOID with LPBYTE // and had to make a local definition of a SECURITY_ATTRIBUTE // because the definition supplied by MS in wtypes.idl uses // a LPVOID. typedef ULONG_PTR NTMS_HANDLE; typedef byte * LPBYTE; #define LPVOID LPBYTE #define SECURITY_INFORMATION DWORD #define PSECURITY_DESCRIPTOR_NTMS LPBYTE #include "NtmsApi.h" typedef struct _SECURITY_ATTRIBUTES_NTMS { DWORD nLength; [size_is(nDescriptorLength)] LPVOID lpSecurityDescriptor; BOOL bInheritHandle; DWORD nDescriptorLength; } SECURITY_ATTRIBUTES_NTMS, *PSECURITY_ATTRIBUTES_NTMS, *LPSECURITY_ATTRIBUTES_NTMS; /* // Test if embedded pointers can be NULL. // Test of CreateNtmsMediaPool typedef struct _OptCreateMediaPoolParam { [ptr] LPNTMS_GUID lpMediaType; [ptr] LPSECURITY_ATTRIBUTES_NTMS lpSecurityAttributes; } OptCreateMediaPoolParams; // Embed the pointers to structures that can be NULL // in the AllocateNtmsMedia() and WaitForNtmsAllocate() calls typedef struct _OptAllocateMediaParam { [ptr] LPNTMS_GUID lpPartition; } OptAllocateMediaParam; // Embed the pointers to structures that can be NULL // in the SubmitNtmsOperatorRequest() typedef struct _OptSubmitOperatorRequestParamW { [ptr] LPCWSTR lpMessage; [ptr] LPNTMS_GUID lpArg1Id; [ptr] LPNTMS_GUID lpArg2Id; } OptSubmitOperatorRequestParamW; typedef struct _OptSubmitOperatorRequestParamA { [ptr] LPCSTR lpMessage; [ptr] LPNTMS_GUID lpArg1Id; [ptr] LPNTMS_GUID lpArg2Id; } OptSubmitOperatorRequestParamA; // Embed the typedef struct _OptEnumerateParam { [ptr] LPNTMS_GUID lpContainerId; } OptEnumerateParam; */ #ifdef NTMS_BETA1_SUPPORT [ object, uuid(28E76EF2-8E8C-11D0-BFA0-00A024151983), helpstring("INtms Interface"), pointer_default(unique) ] interface INtms : IUnknown { HRESULT WINAPI OpenNtmsServerSessionW( [in, unique] LPCWSTR lpServer, [in, unique] LPCWSTR lpApplication, [in] LPCWSTR lpClientName, [in] LPCWSTR lpUserName, [in] DWORD dwOptions // [out] NTMS_HANDLE* phSession ); HRESULT WINAPI OpenNtmsServerSessionA( [in, unique] LPCSTR lpServer, [in, unique] LPCSTR lpApplication, [in] LPCSTR lpClientName, [in] LPCSTR lpUserName, [in] DWORD dwOptions // [out] NTMS_HANDLE* phSession ); HRESULT WINAPI CloseNtmsSession( // [in] NTMS_HANDLE hSession ); HRESULT WINAPI MountNtmsMedia( // [in] NTMS_HANDLE hSession, [in, size_is(dwCount)] LPNTMS_GUID lpMediaId, [in, out, size_is(dwCount)] LPNTMS_GUID lpDriveId, [in] DWORD dwCount, [in] DWORD dwOptions, [in] int dwPriority, [in] DWORD dwTimeout ); HRESULT WINAPI DismountNtmsMedia( // [in] NTMS_HANDLE hSession, [in, size_is(dwCount)] LPNTMS_GUID lpMediaId, [in] DWORD dwCount, [in] DWORD dwOptions ); //HRESULT WINAPI GetNtmsDeviceName( // [in] NTMS_HANDLE hSession, // [in] LPNTMS_GUID lpDeviceId, // [in] DWORD dwType, // [out] LPTSTR lpDeviceName // ); HRESULT WINAPI AllocateNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaPool, [in, unique] LPNTMS_GUID lpPartition, // optional // [in] OptAllocateMediaParam OptParam, // optional parameters [in, out] LPNTMS_GUID lpMediaId, // OUTPUT, media id or operator request id [in] DWORD dwOptions, [in] DWORD dwTimeout ); //HRESULT WINAPI WaitForNtmsAllocate( // [in] NTMS_HANDLE hSession, // [in] LPNTMS_GUID lpMediaPool, // [in] LPNTMS_GUID lpMediaId, // [in, unique] LPNTMS_GUID lpPartition, // optional // [in] OptAllocateMediaParam OptParam, // optional parameters // [in] DWORD dwOptions, // [in] DWORD dwTimeout // ); HRESULT WINAPI DeallocateNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId, [in] DWORD dwOptions ); HRESULT WINAPI SwapNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId1, [in] LPNTMS_GUID lpMediaId2 ); //======================================================================= // MEDIA STATES //======================================================================= HRESULT WINAPI DecommissionNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI SetNtmsMediaComplete( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI DeleteNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI CreateNtmsMediaPoolA( // [in] NTMS_HANDLE hSession, [in] LPCSTR lpPoolName, [in, unique] LPNTMS_GUID lpMediaType, [in] DWORD dwOptions, [in, unique] LPSECURITY_ATTRIBUTES_NTMS lpSecurityAttributes, // in] OptCreateMediaPoolParams OptParams, [out] LPNTMS_GUID lpPoolId // OUT ); HRESULT WINAPI CreateNtmsMediaPoolW( // [in] NTMS_HANDLE hSession, [in] LPCWSTR lpPoolName, [in, unique] LPNTMS_GUID lpMediaType, [in] DWORD dwOptions, [in, unique] LPSECURITY_ATTRIBUTES_NTMS lpSecurityAttributes, // [in] OptCreateMediaPoolParams OptParams, [out] LPNTMS_GUID lpPoolId // OUT ); HRESULT WINAPI GetNtmsMediaPoolNameA( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpPoolId, [out, size_is(*lpdwNameSize), length_is(*lpdwNameSize)] unsigned char *lpBufName, [in, out] LPDWORD lpdwNameSize ); HRESULT WINAPI GetNtmsMediaPoolNameW( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpPoolId, [out, size_is(*lpdwNameSize), length_is(*lpdwNameSize)] wchar_t *lpBufName, [in, out] LPDWORD lpdwNameSize ); HRESULT WINAPI MoveToNtmsMediaPool( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId, [in] LPNTMS_GUID lpPoolId ); HRESULT WINAPI DeleteNtmsMediaPool( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpPoolId ); //====================================================================== // OBJECT MANAGEMENT APIS //====================================================================== HRESULT WINAPI GetNtmsServerObjectInformationA( // [in] NTMS_HANDLE hSession, [in, unique] LPNTMS_GUID lpObjectId, [out] LPNTMS_I1_OBJECTINFORMATIONA lpInfo, [in] DWORD dwType, [in] DWORD dwSize ); HRESULT WINAPI GetNtmsServerObjectInformationW( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpObjectId, [out] LPNTMS_I1_OBJECTINFORMATIONW lpInfo, [in] DWORD dwType, [in] DWORD dwSize ); HRESULT WINAPI SetNtmsObjectInformationA( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpObjectId, [in] LPNTMS_I1_OBJECTINFORMATIONA lpInfo ); HRESULT WINAPI SetNtmsObjectInformationW( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpObjectId, [in] LPNTMS_I1_OBJECTINFORMATIONW lpInfo ); HRESULT WINAPI EnumerateNtmsObject( // [in] NTMS_HANDLE hSession, [in, unique] const LPNTMS_GUID lpContainerId, //[in] OptEnumerateParam OptParam, [out, size_is(*lpdwListBufferSize), length_is(*lpdwListBufferSize)] LPNTMS_GUID lpList, [in] LPDWORD lpdwListBufferSize, [out] LPDWORD lpdwListSize, [in] DWORD dwType, [in] DWORD dwOptions ); HRESULT WINAPI DisableNtmsObject( // [in] NTMS_HANDLE hSession, [in] DWORD dwType, [in] LPNTMS_GUID lpObjectId ); HRESULT WINAPI EnableNtmsObject( // [in] NTMS_HANDLE hSession, [in] DWORD dwType, [in] LPNTMS_GUID lpObjectId ); HRESULT WINAPI EjectNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId, [in, out] LPNTMS_GUID lpEjectOperation, [in] DWORD dwAction ); HRESULT WINAPI InjectNtmsMedia( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibraryId, [in, out] LPNTMS_GUID lpInjectOperation, [in] DWORD dwAction ); HRESULT WINAPI AccessNtmsLibraryDoor( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibraryId, [in] DWORD dwAction ); HRESULT WINAPI CleanNtmsDrive( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpDriveId ); HRESULT WINAPI DismountNtmsDrive( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpDriveId ); HRESULT WINAPI InventoryNtmsLibrary( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibraryId, [in] DWORD dwAction ); HRESULT WINAPI UpdateNtmsOmidInfo( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpMediaId, [in] DWORD labelType, [in] DWORD numberOfBytes, [in, size_is(numberOfBytes)] LPVOID lpBuffer ); HRESULT WINAPI CancelNtmsLibraryRequest( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI ReserveNtmsCleanerSlot ( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibrary, [in] LPNTMS_GUID lpSlot ); HRESULT WINAPI ReleaseNtmsCleanerSlot ( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibrary ); HRESULT WINAPI InjectNtmsCleaner ( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibrary, [in,out] LPNTMS_GUID lpInjectOperation, [in] DWORD dwNumberOfCleansLeft, [in] DWORD dwAction ); HRESULT WINAPI EjectNtmsCleaner ( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibrary, [in,out] LPNTMS_GUID lpEjectOperation, [in] DWORD dwAction ); // Security for NTMS API HRESULT WINAPI GetNtmsObjectSecurity( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpObjectId, [in] DWORD dwType, [in] SECURITY_INFORMATION SecurityInformation, [out,size_is(nLength)] PSECURITY_DESCRIPTOR_NTMS lpSecurityDescriptor, [in] DWORD nLength, [out] LPDWORD lpnLengthNeeded ); HRESULT WINAPI SetNtmsObjectSecurity( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpObjectId, [in] DWORD dwType, [in] SECURITY_INFORMATION SecurityInformation, [in,size_is(nLength)] PSECURITY_DESCRIPTOR_NTMS lpSecurityDescriptor, [in] DWORD nLength ); // Object extensions for NTMS API HRESULT WINAPI GetNtmsObjectAttributeA( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCSTR lpAttributeName, [out, size_is(*lpdwAttributeBufferSize), length_is(*lpdwAttributeBufferSize)] LPVOID lpAttributeData, [in] LPDWORD lpdwAttributeBufferSize, [out] LPDWORD lpAttributeSize ); HRESULT WINAPI GetNtmsObjectAttributeW( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCWSTR lpAttributeName, [out, size_is(*lpdwAttributeBufferSize), length_is(*lpdwAttributeBufferSize)] LPVOID lpAttributeData, [in] LPDWORD lpdwAttributeBufferSize, [out] LPDWORD lpAttributeSize ); HRESULT WINAPI SetNtmsObjectAttributeA( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCSTR lpAttributeName, [in, size_is(AttributeSize)] LPVOID lpAttributeData, [in] DWORD AttributeSize ); HRESULT WINAPI SetNtmsObjectAttributeW( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCWSTR lpAttributeName, [in, size_is(AttributeSize)] LPVOID lpAttributeData, [in] DWORD AttributeSize ); // Operator Requests HRESULT WINAPI SubmitNtmsOperatorRequestW( // [in] NTMS_HANDLE hSession, [in] DWORD dwRequest, [in, unique] LPCWSTR lpMessage, [in, unique] LPNTMS_GUID lpArg1Id, [in, unique] LPNTMS_GUID lpArg2Id, // [in] OptSubmitOperatorRequestParamW, [out] LPNTMS_GUID lpRequestId ); HRESULT WINAPI SubmitNtmsOperatorRequestA( // [in] NTMS_HANDLE hSession, [in] DWORD dwRequest, [in, unique] LPCSTR lpMessage, [in, unique] LPNTMS_GUID lpArg1Id, [in, unique] LPNTMS_GUID lpArg2Id, // [in] OptSubmitOperatorRequestParamA, [out] LPNTMS_GUID lpRequestId ); HRESULT WINAPI WaitForNtmsOperatorRequest( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpRequestId, [in] DWORD dwTimeout ); HRESULT WINAPI CancelNtmsOperatorRequest( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI SatisfyNtmsOperatorRequest( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI ImportNtmsDatabase( // [in] NTMS_HANDLE hSession ); HRESULT WINAPI ExportNtmsDatabase( // [in] NTMS_HANDLE hSession ); HRESULT WINAPI OpenNtmsServerNotification( // [in] NTMS_HANDLE hSession, [in] DWORD dwType, [out] NTMS_HANDLE* phNotification, [in] LPCSTR lpConnectionName ); HRESULT WINAPI WaitForNtmsNotification( // [in] NTMS_HANDLE hSession, [in] NTMS_HANDLE hNotification, [out] LPNTMS_NOTIFICATIONINFORMATION lpNotificationInformation, [in] DWORD dwTimeout ); HRESULT WINAPI CloseNtmsNotification( // [in] NTMS_HANDLE hSession, [in] NTMS_HANDLE hNotification ); HRESULT WINAPI DeleteNtmsLibrary( // [in] NTMS_HANDLE hSession, [in] LPNTMS_GUID lpLibraryId ); }; #endif [ object, uuid(3B953F63-A797-11D0-87B3-00AA00C7F7C9), helpstring("INtms Interface"), pointer_default(unique) ] interface INtmsBind : IUnknown { HRESULT WINAPI Bind( [in] IUnknown *pIUnk ); HRESULT WINAPI InterceptNotification( [in] DWORD dwType, [in] DWORD dwOperation, [in] LPNTMS_GUID lpIdentifier ); }; // object information interface class [ object, uuid(69ab7050-3059-11d1-8faf-00a024cb6019), helpstring("INtmsObjectInfo1 Interface"), pointer_default(unique) ] interface INtmsObjectInfo1 : IUnknown { import "oaidl.idl"; HRESULT WINAPI GetNtmsServerObjectInformationA( [in, unique] LPNTMS_GUID lpObjectId, [out] LPNTMS_OBJECTINFORMATIONA lpInfo, [in] DWORD dwType, [in] DWORD dwSize ); HRESULT WINAPI GetNtmsServerObjectInformationW( [in] LPNTMS_GUID lpObjectId, [out] LPNTMS_OBJECTINFORMATIONW lpInfo, [in] DWORD dwType, [in] DWORD dwSize ); HRESULT WINAPI SetNtmsObjectInformationA( [in] LPNTMS_GUID lpObjectId, [in] LPNTMS_OBJECTINFORMATIONA lpInfo ); HRESULT WINAPI SetNtmsObjectInformationW( [in] LPNTMS_GUID lpObjectId, [in] LPNTMS_OBJECTINFORMATIONW lpInfo ); HRESULT WINAPI CreateNtmsMediaA( [in, out] LPNTMS_OBJECTINFORMATIONA lpMedia, [in, out, size_is(*lpdwListBufferSize), length_is(dwListCount)] LPNTMS_OBJECTINFORMATIONA lpList, [in] LPDWORD lpdwListBufferSize, [in] DWORD dwListCount, [in] DWORD dwOptions ); HRESULT WINAPI CreateNtmsMediaW( [in, out] LPNTMS_OBJECTINFORMATIONW lpMedia, [in, out, size_is(*lpdwListBufferSize), length_is(dwListCount)] LPNTMS_OBJECTINFORMATIONW lpList, [in] LPDWORD lpdwListBufferSize, [in] DWORD dwListCount, [in] DWORD dwOptions ); }; // object information interface class [ object, uuid(b057dc50-3059-11d1-8faf-00a024cb6019), helpstring("INtms Object Management Interface"), pointer_default(unique) ] interface INtmsObjectManagement1 : IUnknown { // Security for NTMS API HRESULT WINAPI GetNtmsObjectSecurity( [in] LPNTMS_GUID lpObjectId, [in] DWORD dwType, [in] SECURITY_INFORMATION SecurityInformation, [out,size_is(nLength)] PSECURITY_DESCRIPTOR_NTMS lpSecurityDescriptor, [in] DWORD nLength, [out] LPDWORD lpnLengthNeeded ); HRESULT WINAPI SetNtmsObjectSecurity( [in] LPNTMS_GUID lpObjectId, [in] DWORD dwType, [in] SECURITY_INFORMATION SecurityInformation, [in,size_is(nLength)] PSECURITY_DESCRIPTOR_NTMS lpSecurityDescriptor, [in] DWORD nLength ); // Object extensions for NTMS API HRESULT WINAPI GetNtmsObjectAttributeA( [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCSTR lpAttributeName, [out, size_is(*lpdwAttributeBufferSize), length_is(*lpdwAttributeBufferSize)] LPVOID lpAttributeData, [in] LPDWORD lpdwAttributeBufferSize, [out] LPDWORD lpAttributeSize ); HRESULT WINAPI GetNtmsObjectAttributeW( [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCWSTR lpAttributeName, [out, size_is(*lpdwAttributeBufferSize), length_is(*lpdwAttributeBufferSize)] LPVOID lpAttributeData, [in] LPDWORD lpdwAttributeBufferSize, [out] LPDWORD lpAttributeSize ); HRESULT WINAPI SetNtmsObjectAttributeA( [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCSTR lpAttributeName, [in, size_is(AttributeSize)] LPVOID lpAttributeData, [in] DWORD AttributeSize ); HRESULT WINAPI SetNtmsObjectAttributeW( [in] LPNTMS_GUID ObjectId, [in] DWORD dwType, [in] LPCWSTR lpAttributeName, [in, size_is(AttributeSize)] LPVOID lpAttributeData, [in] DWORD AttributeSize ); HRESULT WINAPI EnumerateNtmsObject( [in, unique] const LPNTMS_GUID lpContainerId, [out, size_is(*lpdwListBufferSize), length_is(*lpdwListBufferSize)] LPNTMS_GUID lpList, [in] LPDWORD lpdwListBufferSize, [out] LPDWORD lpdwListSize, [in] DWORD dwType, [in] DWORD dwOptions ); HRESULT WINAPI DisableNtmsObject( [in] DWORD dwType, [in] LPNTMS_GUID lpObjectId ); HRESULT WINAPI EnableNtmsObject( [in] DWORD dwType, [in] LPNTMS_GUID lpObjectId ); }; [ object, uuid(8da03f40-3419-11d1-8fb1-00a024cb6019), helpstring("INtms Session Interface"), pointer_default(unique) ] interface INtmsSession1 : IUnknown { HRESULT WINAPI OpenNtmsServerSessionW( [in, unique] LPCWSTR lpServer, [in, unique] LPCWSTR lpApplication, [in] LPCWSTR lpClientName, [in] LPCWSTR lpUserName, [in] DWORD dwOptions ); HRESULT WINAPI OpenNtmsServerSessionA( [in, unique] LPCSTR lpServer, [in, unique] LPCSTR lpApplication, [in] LPCSTR lpClientName, [in] LPCSTR lpUserName, [in] DWORD dwOptions ); HRESULT WINAPI CloseNtmsSession( ); // Operator Requests HRESULT WINAPI SubmitNtmsOperatorRequestW( [in] DWORD dwRequest, [in, unique] LPCWSTR lpMessage, [in, unique] LPNTMS_GUID lpArg1Id, [in, unique] LPNTMS_GUID lpArg2Id, [out] LPNTMS_GUID lpRequestId ); HRESULT WINAPI SubmitNtmsOperatorRequestA( [in] DWORD dwRequest, [in, unique] LPCSTR lpMessage, [in, unique] LPNTMS_GUID lpArg1Id, [in, unique] LPNTMS_GUID lpArg2Id, [out] LPNTMS_GUID lpRequestId ); HRESULT WINAPI WaitForNtmsOperatorRequest( [in] LPNTMS_GUID lpRequestId, [in] DWORD dwTimeout ); HRESULT WINAPI CancelNtmsOperatorRequest( [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI SatisfyNtmsOperatorRequest( [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI ImportNtmsDatabase( ); HRESULT WINAPI ExportNtmsDatabase( ); HRESULT WINAPI UseRpcNotification( [in] DWORD_PTR Context, [in] LPCSTR lpProtocol, [in] LPCSTR lpEndpoint ); HRESULT WINAPI AddNotification( [in] DWORD dwType ); HRESULT WINAPI RemoveNotification( [in] DWORD dwType ); HRESULT WINAPI DispatchNotification( [in] DWORD dwType, [in] DWORD dwOperation, [in] LPNTMS_GUID lpIdentifier ); }; [ object, uuid(d02e4be0-3419-11d1-8fb1-00a024cb6019), helpstring("INtms Media Services Interface"), pointer_default(unique) ] interface INtmsMediaServices1 : IUnknown { HRESULT WINAPI MountNtmsMedia( [in, size_is(dwCount)] LPNTMS_GUID lpMediaId, [in, out, size_is(dwCount)] LPNTMS_GUID lpDriveId, [in] DWORD dwCount, [in] DWORD dwOptions, [in] int dwPriority, [in] DWORD dwTimeout, [in,out] LPNTMS_MOUNT_INFORMATION lpMountInformation ); HRESULT WINAPI DismountNtmsMedia( [in, size_is(dwCount)] LPNTMS_GUID lpMediaId, [in] DWORD dwCount, [in] DWORD dwOptions ); HRESULT WINAPI GetNtmsMountDrives( [in] LPNTMS_MOUNT_INFORMATION lpMountInformation, [in, out, size_is(dwCount)] LPNTMS_GUID lpDriveId, [in] DWORD dwCount ); HRESULT WINAPI AllocateNtmsMedia( [in] LPNTMS_GUID lpMediaPool, [in, unique] LPNTMS_GUID lpPartition, // optional [in, out] LPNTMS_GUID lpMediaId, // OUTPUT, media id or operator request id [in] DWORD dwOptions, [in] DWORD dwTimeout, [in, out] LPNTMS_ALLOCATION_INFORMATION lpAllocateInformation ); HRESULT WINAPI DeallocateNtmsMedia( [in] LPNTMS_GUID lpMediaId, [in] DWORD dwOptions ); HRESULT WINAPI SwapNtmsMedia( [in] LPNTMS_GUID lpMediaId1, [in] LPNTMS_GUID lpMediaId2 ); HRESULT WINAPI DecommissionNtmsMedia( [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI SetNtmsMediaComplete( [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI DeleteNtmsMedia( [in] LPNTMS_GUID lpMediaId ); HRESULT WINAPI CreateNtmsMediaPoolA( [in] LPCSTR lpPoolName, [in, unique] LPNTMS_GUID lpMediaType, [in] DWORD dwOptions, [in, unique] LPSECURITY_ATTRIBUTES_NTMS lpSecurityAttributes, [out] LPNTMS_GUID lpPoolId // OUT ); HRESULT WINAPI CreateNtmsMediaPoolW( [in] LPCWSTR lpPoolName, [in, unique] LPNTMS_GUID lpMediaType, [in] DWORD dwOptions, [in, unique] LPSECURITY_ATTRIBUTES_NTMS lpSecurityAttributes, [out] LPNTMS_GUID lpPoolId // OUT ); HRESULT WINAPI GetNtmsMediaPoolNameA( [in] LPNTMS_GUID lpPoolId, [out, size_is(*lpdwNameSizeBuf), length_is(*lpdwNameSizeBuf)] unsigned char *lpBufName, [in] LPDWORD lpdwNameSizeBuf, [out] LPDWORD lpdwNameSize ); HRESULT WINAPI GetNtmsMediaPoolNameW( [in] LPNTMS_GUID lpPoolId, [out, size_is(*lpdwNameSizeBuf), length_is(*lpdwNameSizeBuf)] wchar_t *lpBufName, [in] LPDWORD lpdwNameSizeBuf, [out] LPDWORD lpdwNameSize ); HRESULT WINAPI MoveToNtmsMediaPool( [in] LPNTMS_GUID lpMediaId, [in] LPNTMS_GUID lpPoolId ); HRESULT WINAPI DeleteNtmsMediaPool( [in] LPNTMS_GUID lpPoolId ); HRESULT WINAPI AddNtmsMediaType( [in] LPNTMS_GUID lpMediaTypeId, [in] LPNTMS_GUID lpLibId ); HRESULT WINAPI DeleteNtmsMediaType( [in] LPNTMS_GUID lpMediaTypeId, [in] LPNTMS_GUID lpLibId ); HRESULT WINAPI ChangeNtmsMediaType( [in] LPNTMS_GUID lpMediaId, [in] LPNTMS_GUID lpPoolId ); }; [ object, uuid(4e934f30-341a-11d1-8fb1-00a024cb6019), helpstring("INtms Library Control Interface"), pointer_default(unique) ] interface INtmsLibraryControl1 : IUnknown { HRESULT WINAPI EjectNtmsMedia( [in, unique] LPNTMS_GUID lpMediaId, [in, out] LPNTMS_GUID lpEjectOperation, [in] DWORD dwAction ); HRESULT WINAPI InjectNtmsMedia( [in] LPNTMS_GUID lpLibraryId, [in, out] LPNTMS_GUID lpInjectOperation, [in] DWORD dwAction ); HRESULT WINAPI AccessNtmsLibraryDoor( [in] LPNTMS_GUID lpLibraryId, [in] DWORD dwAction ); HRESULT WINAPI CleanNtmsDrive( [in] LPNTMS_GUID lpDriveId ); HRESULT WINAPI DismountNtmsDrive( [in] LPNTMS_GUID lpDriveId ); HRESULT WINAPI InventoryNtmsLibrary( [in] LPNTMS_GUID lpLibraryId, [in] DWORD dwAction ); HRESULT WINAPI UpdateNtmsOmidInfo( [in] LPNTMS_GUID lpMediaId, [in] DWORD labelType, [in] DWORD numberOfBytes, [in, size_is(numberOfBytes)] LPVOID lpBuffer ); HRESULT WINAPI CancelNtmsLibraryRequest( [in] LPNTMS_GUID lpRequestId ); HRESULT WINAPI ReserveNtmsCleanerSlot ( [in] LPNTMS_GUID lpLibrary, [in] LPNTMS_GUID lpSlot ); HRESULT WINAPI ReleaseNtmsCleanerSlot ( [in] LPNTMS_GUID lpLibrary ); HRESULT WINAPI InjectNtmsCleaner ( [in] LPNTMS_GUID lpLibrary, [in,out] LPNTMS_GUID lpInjectOperation, [in] DWORD dwNumberOfCleansLeft, [in] DWORD dwAction ); HRESULT WINAPI EjectNtmsCleaner ( [in] LPNTMS_GUID lpLibrary, [in,out] LPNTMS_GUID lpEjectOperation, [in] DWORD dwAction ); HRESULT WINAPI DeleteNtmsLibrary( [in] LPNTMS_GUID lpLibraryId ); HRESULT WINAPI DeleteNtmsDrive( [in] LPNTMS_GUID lpDriveId ); HRESULT WINAPI GetNtmsRequestOrder( [in] LPNTMS_GUID lpRequestId, [out] LPDWORD lpdwOrderNumber ); HRESULT WINAPI SetNtmsRequestOrder( [in] LPNTMS_GUID lpRequestId, [in] DWORD dwOrderNumber ); HRESULT WINAPI DeleteNtmsRequests( [in, size_is(dwCount)] LPNTMS_GUID lpRequestId, [in] DWORD dwType, [in] DWORD dwCount ); HRESULT WINAPI BeginNtmsDeviceChangeDetection( [out] NTMS_HANDLE* lpDetectHandle ); HRESULT WINAPI SetNtmsDeviceChangeDetection( [in] NTMS_HANDLE DetectHandle, [in, size_is(dwCount)] LPNTMS_GUID lpObjectId, [in] DWORD dwType, [in] DWORD dwCount ); HRESULT WINAPI EndNtmsDeviceChangeDetection( [in] NTMS_HANDLE DetectHandle ); }; #ifdef CONNECTIONPT_SUPPORT // // The sink interface which will be called by the object when notifications // need to be made. // [ object, uuid(879C8BBE-41B0-11d1-BE11-00C04FB6BF70), helpstring("INtmsNotifySink Interface"), pointer_default(unique) ] interface INtmsNotifySink : IUnknown { HRESULT OnNotify([in] DWORD dwType, [in] DWORD dwOperation, [in] LPNTMS_GUID lpIdentifier); }; #endif