Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

613 lines
22 KiB

//
// Microsoft Windows Media Technologies
// Copyright (C) Microsoft Corporation, 1999 - 2001. All rights reserved.
//
import "unknwn.idl";
import "objidl.idl";
import "wtypes.idl";
typedef struct _tWAVEFORMATEX
{
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample; /* Number of bits per sample of mono data */
WORD cbSize; /* The count in bytes of the size of
extra information (after cbSize) */
} _WAVEFORMATEX;
typedef struct _tagBITMAPINFOHEADER
{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} _BITMAPINFOHEADER;
typedef struct _tagVIDEOINFOHEADER{
RECT rcSource;
RECT rcTarget;
DWORD dwBitRate;
DWORD dwBitErrorRate;
LONGLONG AvgTimePerFrame;
_BITMAPINFOHEADER bmiHeader;
} _VIDEOINFOHEADER;
typedef struct _tagWMFILECAPABILITIES
{
LPWSTR pwszMimeType; // Mime type
DWORD dwReserved; // Recerved for future use - Should be 0 for now.
} WMFILECAPABILITIES;
typedef struct __OPAQUECOMMAND
{
GUID guidCommand;
DWORD dwDataLen;
[size_is(dwDataLen)]BYTE *pData;
BYTE abMAC[20];
} OPAQUECOMMAND;
cpp_quote("#define WMDMID_LENGTH 128")
#define WMDMID_LENGTH 128
typedef struct __WMDMID
{
UINT cbSize;
DWORD dwVendorID;
BYTE pID[WMDMID_LENGTH];
UINT SerialNumberLength;
} WMDMID, *PWMDMID;
typedef struct _WMDMDATETIME {
WORD wYear;
WORD wMonth;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
} WMDMDATETIME, *PWMDMDATETIME;
typedef struct __WMDMRIGHTS
{
UINT cbSize;
DWORD dwContentType;
DWORD fuFlags;
DWORD fuRights;
DWORD dwAppSec;
DWORD dwPlaybackCount;
WMDMDATETIME ExpirationDate;
} WMDMRIGHTS, *PWMDMRIGHTS;
cpp_quote("#define WMDM_MAC_LENGTH 8")
#define WMDM_MAC_LENGTH 8
cpp_quote("// WMDM HRESULTS")
cpp_quote("#define WMDM_E_BUSY 0x80045000L")
cpp_quote("#define WMDM_E_INTERFACEDEAD 0x80045001L")
cpp_quote("#define WMDM_E_INVALIDTYPE 0x80045002L")
cpp_quote("#define WMDM_E_PROCESSFAILED 0x80045003L")
cpp_quote("#define WMDM_E_NOTSUPPORTED 0x80045004L")
cpp_quote("#define WMDM_E_NOTCERTIFIED 0x80045005L")
cpp_quote("#define WMDM_E_NORIGHTS 0x80045006L")
cpp_quote("#define WMDM_E_CALL_OUT_OF_SEQUENCE 0x80045007L")
cpp_quote("#define WMDM_E_BUFFERTOOSMALL 0x80045008L")
cpp_quote("#define WMDM_E_MOREDATA 0x80045009L")
cpp_quote("#define WMDM_E_MAC_CHECK_FAILED 0x8004500AL")
cpp_quote("#define WMDM_E_USER_CANCELLED 0x8004500BL")
cpp_quote("#define WMDM_E_SDMI_TRIGGER 0x8004500CL")
cpp_quote("#define WMDM_E_SDMI_NOMORECOPIES 0x8004500DL")
cpp_quote("#define WMDM_E_REVOKED 0x8004500EL")
cpp_quote("// Revocation Flags")
cpp_quote("#define WMDM_WMDM_REVOKED 0x00000001")
cpp_quote("#define WMDM_APP_REVOKED 0x00000002")
cpp_quote("#define WMDM_SP_REVOKED 0x00000004")
cpp_quote("#define WMDM_SCP_REVOKED 0x00000008")
cpp_quote("// GetFormatSupport2 Flags")
cpp_quote("#define WMDM_GET_FORMAT_SUPPORT_AUDIO 0x00000001")
cpp_quote("#define WMDM_GET_FORMAT_SUPPORT_VIDEO 0x00000002")
cpp_quote("#define WMDM_GET_FORMAT_SUPPORT_FILE 0x00000004")
cpp_quote("// MDMRIGHTS Flags")
cpp_quote("#define WMDM_RIGHTS_PLAYBACKCOUNT 0x00000001")
cpp_quote("#define WMDM_RIGHTS_EXPIRATIONDATE 0x00000002")
cpp_quote("#define WMDM_RIGHTS_GROUPID 0x00000004")
cpp_quote("#define WMDM_RIGHTS_FREESERIALIDS 0x00000008")
cpp_quote("#define WMDM_RIGHTS_NAMEDSERIALIDS 0x00000010")
cpp_quote("// Device Type Flags")
cpp_quote("#define WMDM_DEVICE_TYPE_PLAYBACK 0x00000001")
cpp_quote("#define WMDM_DEVICE_TYPE_RECORD 0x00000002")
cpp_quote("#define WMDM_DEVICE_TYPE_DECODE 0x00000004")
cpp_quote("#define WMDM_DEVICE_TYPE_ENCODE 0x00000008")
cpp_quote("#define WMDM_DEVICE_TYPE_STORAGE 0x00000010")
cpp_quote("#define WMDM_DEVICE_TYPE_VIRTUAL 0x00000020")
cpp_quote("#define WMDM_DEVICE_TYPE_SDMI 0x00000040")
cpp_quote("#define WMDM_DEVICE_TYPE_NONSDMI 0x00000080")
cpp_quote("#define WMDM_DEVICE_TYPE_NONREENTRANT 0x00000100")
cpp_quote("#define WMDM_DEVICE_TYPE_FILELISTRESYNC 0x00000200")
cpp_quote("// Device Power Source Flags")
cpp_quote("#define WMDM_POWER_CAP_BATTERY 0x00000001")
cpp_quote("#define WMDM_POWER_CAP_EXTERNAL 0x00000002")
cpp_quote("#define WMDM_POWER_IS_BATTERY 0x00000004")
cpp_quote("#define WMDM_POWER_IS_EXTERNAL 0x00000008")
cpp_quote("#define WMDM_POWER_PERCENT_AVAILABLE 0x00000010")
cpp_quote("// Device Status Flags")
cpp_quote("#define WMDM_STATUS_READY 0x00000001")
cpp_quote("#define WMDM_STATUS_BUSY 0x00000002")
cpp_quote("#define WMDM_STATUS_DEVICE_NOTPRESENT 0x00000004")
cpp_quote("#define WMDM_STATUS_DEVICECONTROL_PLAYING 0x00000008")
cpp_quote("#define WMDM_STATUS_DEVICECONTROL_RECORDING 0x00000010")
cpp_quote("#define WMDM_STATUS_DEVICECONTROL_PAUSED 0x00000020")
cpp_quote("#define WMDM_STATUS_DEVICECONTROL_REMOTE 0x00000040")
cpp_quote("#define WMDM_STATUS_DEVICECONTROL_STREAM 0x00000080")
cpp_quote("#define WMDM_STATUS_STORAGE_NOTPRESENT 0x00000100")
cpp_quote("#define WMDM_STATUS_STORAGE_INITIALIZING 0x00000200")
cpp_quote("#define WMDM_STATUS_STORAGE_BROKEN 0x00000400")
cpp_quote("#define WMDM_STATUS_STORAGE_NOTSUPPORTED 0x00000800")
cpp_quote("#define WMDM_STATUS_STORAGE_UNFORMATTED 0x00001000")
cpp_quote("#define WMDM_STATUS_STORAGECONTROL_INSERTING 0x00002000")
cpp_quote("#define WMDM_STATUS_STORAGECONTROL_DELETING 0x00004000")
cpp_quote("#define WMDM_STATUS_STORAGECONTROL_APPENDING 0x00008000")
cpp_quote("#define WMDM_STATUS_STORAGECONTROL_MOVING 0x00010000")
cpp_quote("#define WMDM_STATUS_STORAGECONTROL_READING 0x00020000")
cpp_quote("// Device Capabilities Flags")
cpp_quote("#define WMDM_DEVICECAP_CANPLAY 0x00000001")
cpp_quote("#define WMDM_DEVICECAP_CANSTREAMPLAY 0x00000002")
cpp_quote("#define WMDM_DEVICECAP_CANRECORD 0x00000004")
cpp_quote("#define WMDM_DEVICECAP_CANSTREAMRECORD 0x00000008")
cpp_quote("#define WMDM_DEVICECAP_CANPAUSE 0x00000010")
cpp_quote("#define WMDM_DEVICECAP_CANRESUME 0x00000020")
cpp_quote("#define WMDM_DEVICECAP_CANSTOP 0x00000040")
cpp_quote("#define WMDM_DEVICECAP_CANSEEK 0x00000080")
cpp_quote("// WMDM Seek Flags")
cpp_quote("#define WMDM_SEEK_REMOTECONTROL 0x00000001")
cpp_quote("#define WMDM_SEEK_STREAMINGAUDIO 0x00000002")
cpp_quote("// Storage Attributes Flags")
cpp_quote("#define WMDM_STORAGE_ATTR_FILESYSTEM 0x00000001")
cpp_quote("#define WMDM_STORAGE_ATTR_REMOVABLE 0x00000002")
cpp_quote("#define WMDM_STORAGE_ATTR_NONREMOVABLE 0x00000004")
cpp_quote("#define WMDM_FILE_ATTR_FOLDER 0x00000008")
cpp_quote("#define WMDM_FILE_ATTR_LINK 0x00000010")
cpp_quote("#define WMDM_FILE_ATTR_FILE 0x00000020")
cpp_quote("#define WMDM_FILE_ATTR_VIDEO 0x00000040")
cpp_quote("#define WMDM_STORAGE_ATTR_FOLDERS 0x00000100")
// These flag are defined below but can be used with this group of flags also
//cpp_quote("#define WMDM_STORAGECONTROL_INSERTBEFORE 0x00000200")
//cpp_quote("#define WMDM_STORAGECONTROL_INSERTAFTER 0x00000400")
//cpp_quote("#define WMDM_STORAGECONTROL_INSERTINTO 0x00000800")
cpp_quote("#define WMDM_FILE_ATTR_AUDIO 0x00001000")
cpp_quote("#define WMDM_FILE_ATTR_DATA 0x00002000")
cpp_quote("#define WMDM_FILE_ATTR_CANPLAY 0x00004000")
cpp_quote("#define WMDM_FILE_ATTR_CANDELETE 0x00008000")
cpp_quote("#define WMDM_FILE_ATTR_CANMOVE 0x00010000")
cpp_quote("#define WMDM_FILE_ATTR_CANRENAME 0x00020000")
cpp_quote("#define WMDM_FILE_ATTR_CANREAD 0x00040000")
cpp_quote("#define WMDM_FILE_ATTR_MUSIC 0x00080000")
cpp_quote("#define WMDM_FILE_CREATE_OVERWRITE 0x00100000")
cpp_quote("#define WMDM_FILE_ATTR_AUDIOBOOK 0x00200000")
cpp_quote("#define WMDM_FILE_ATTR_HIDDEN 0x00400000")
cpp_quote("#define WMDM_FILE_ATTR_SYSTEM 0x00800000")
cpp_quote("#define WMDM_FILE_ATTR_READONLY 0x01000000")
cpp_quote("#define WMDM_STORAGE_ATTR_HAS_FOLDERS 0x02000000")
cpp_quote("#define WMDM_STORAGE_ATTR_HAS_FILES 0x04000000")
cpp_quote("#define WMDM_STORAGE_IS_DEFAULT 0x08000000")
cpp_quote("#define WMDM_STORAGE_CONTAINS_DEFAULT 0x10000000")
cpp_quote("// Storage Capabilities Flags")
cpp_quote("#define WMDM_STORAGECAP_FOLDERSINROOT 0x00000001")
cpp_quote("#define WMDM_STORAGECAP_FILESINROOT 0x00000002")
cpp_quote("#define WMDM_STORAGECAP_FOLDERSINFOLDERS 0x00000004")
cpp_quote("#define WMDM_STORAGECAP_FILESINFOLDERS 0x00000008")
cpp_quote("#define WMDM_STORAGECAP_FOLDERLIMITEXISTS 0x00000010")
cpp_quote("#define WMDM_STORAGECAP_FILELIMITEXISTS 0x00000020")
cpp_quote("// WMDM Mode Flags")
cpp_quote("#define WMDM_MODE_BLOCK 0x00000001")
cpp_quote("#define WMDM_MODE_THREAD 0x00000002")
cpp_quote("#define WMDM_CONTENT_FILE 0x00000004")
cpp_quote("#define WMDM_CONTENT_FOLDER 0x00000008")
cpp_quote("#define WMDM_CONTENT_OPERATIONINTERFACE 0x00000010")
cpp_quote("#define WMDM_MODE_QUERY 0x00000020")
cpp_quote("#define WMDM_MODE_PROGRESS 0x00000040")
cpp_quote("#define WMDM_MODE_TRANSFER_PROTECTED 0x00000080")
cpp_quote("#define WMDM_MODE_TRANSFER_UNPROTECTED 0x00000100")
cpp_quote("#define WMDM_STORAGECONTROL_INSERTBEFORE 0x00000200")
cpp_quote("#define WMDM_STORAGECONTROL_INSERTAFTER 0x00000400")
cpp_quote("#define WMDM_STORAGECONTROL_INSERTINTO 0x00000800")
cpp_quote("#define WMDM_MODE_RECURSIVE 0x00001000")
//cpp_quote("#define WMDM_FILE_CREATE_OVERWRITE 0x00100000")
cpp_quote("// WMDM Rights Flags")
cpp_quote("// NON_SDMI = !SDMI_PROTECTED")
cpp_quote("// SDMI = SDMI_VALIDATED")
cpp_quote("#define WMDM_RIGHTS_PLAY_ON_PC 0x00000001")
cpp_quote("#define WMDM_RIGHTS_COPY_TO_NON_SDMI_DEVICE 0x00000002")
cpp_quote("#define WMDM_RIGHTS_COPY_TO_CD 0x00000008")
cpp_quote("#define WMDM_RIGHTS_COPY_TO_SDMI_DEVICE 0x00000010")
cpp_quote("// WMDM Seek Flags")
cpp_quote("#define WMDM_SEEK_BEGIN 0x00000001")
cpp_quote("#define WMDM_SEEK_CURRENT 0x00000002")
cpp_quote("#define WMDM_SEEK_END 0x00000008")
interface IWMDMStorage;
interface IWMDMStorage2;
interface IWMDMProgress;
interface IWMDMProgress2;
interface IWMDMDevice;
interface IWMDMDevice2;
interface IWMDMEnumDevice;
interface IWMDMEnumStorage;
interface IWMDMRevoked;
// IWMDeviceManager
[
object,
uuid(1DCB3A00-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDeviceManager : IUnknown
{
HRESULT GetRevision([out] DWORD *pdwRevision);
HRESULT GetDeviceCount([out]DWORD *pdwCount);
HRESULT EnumDevices([out] IWMDMEnumDevice **ppEnumDevice);
};
// IWMDeviceManager2
[
object,
uuid(923E5249-8731-4c5b-9B1C-B8B60B6E46AF),
pointer_default(unique)
]
interface IWMDeviceManager2 : IWMDeviceManager
{
HRESULT GetDeviceFromPnPName( [in, string] LPCWSTR pwszPnPName,
[out] IWMDMDevice** ppDevice );
}
// IWMDMStorageGlobals
[
object,
uuid(1DCB3A07-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMStorageGlobals : IUnknown
{
HRESULT GetCapabilities([out] DWORD *pdwCapabilities);
HRESULT GetSerialNumber([out] PWMDMID pSerialNum,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT GetTotalSize([out] DWORD *pdwTotalSizeLow,
[out] DWORD *pdwTotalSizeHigh);
HRESULT GetTotalFree([out] DWORD *pdwFreeLow,
[out] DWORD *pdwFreeHigh);
HRESULT GetTotalBad([out] DWORD *pdwBadLow,
[out] DWORD *pdwBadHigh);
HRESULT GetStatus([out] DWORD *pdwStatus);
HRESULT Initialize([in] UINT fuMode,
[in] IWMDMProgress *pProgress);
};
// IWMDMStorage
[
object,
uuid(1DCB3A06-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMStorage : IUnknown
{
HRESULT SetAttributes([in] DWORD dwAttributes,
[in] _WAVEFORMATEX *pFormat);
HRESULT GetStorageGlobals([out]IWMDMStorageGlobals **ppStorageGlobals);
HRESULT GetAttributes([out] DWORD *pdwAttributes,
[out] _WAVEFORMATEX *pFormat);
HRESULT GetName([out,string,size_is(nMaxChars)] LPWSTR pwszName,
[in] UINT nMaxChars);
HRESULT GetDate([out] PWMDMDATETIME pDateTimeUTC);
HRESULT GetSize([out] DWORD *pdwSizeLow,
[out] DWORD *pdwSizeHigh);
HRESULT GetRights([out, size_is(, *pnRightsCount)] PWMDMRIGHTS *ppRights,
[out] UINT *pnRightsCount,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT EnumStorage([out] IWMDMEnumStorage **pEnumStorage);
HRESULT SendOpaqueCommand([in,out] OPAQUECOMMAND *pCommand);
};
// IWMDMStorage2
[
object,
uuid(1ED5A144-5CD5-4683-9EFF-72CBDB2D9533),
pointer_default(unique)
]
interface IWMDMStorage2 : IWMDMStorage
{
HRESULT GetStorage([in, string] LPCWSTR pszStorageName, [out] IWMDMStorage** ppStorage );
HRESULT SetAttributes2( [in] DWORD dwAttributes,
[in] DWORD dwAttributesEx,
[in] _WAVEFORMATEX *pFormat,
[in] _VIDEOINFOHEADER* pVideoFormat );
HRESULT GetAttributes2( [out] DWORD *pdwAttributes,
[out] DWORD *pdwAttributesEx,
[out] _WAVEFORMATEX *pAudioFormat,
[out] _VIDEOINFOHEADER* pVideoFormat );
}
// IWMDMOperation
[
object,
uuid(1DCB3A0B-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMOperation : IUnknown
{
HRESULT BeginRead();
HRESULT BeginWrite();
HRESULT GetObjectName([out,string,size_is(nMaxChars)] LPWSTR pwszName,
[in] UINT nMaxChars);
HRESULT SetObjectName([in,string,size_is(nMaxChars)] LPWSTR pwszName,
[in] UINT nMaxChars);
HRESULT GetObjectAttributes([out] DWORD *pdwAttributes,
[out] _WAVEFORMATEX *pFormat);
HRESULT SetObjectAttributes([in] DWORD dwAttributes,
[in] _WAVEFORMATEX *pFormat);
HRESULT GetObjectTotalSize([out] DWORD *pdwSize,
[out] DWORD *pdwSizeHigh);
HRESULT SetObjectTotalSize([in] DWORD dwSize,
[in] DWORD dwSizeHigh);
HRESULT TransferObjectData([in,out,size_is(*pdwSize)] BYTE *pData,
[in,out] DWORD *pdwSize,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT End([in] HRESULT *phCompletionCode,
[in] IUnknown *pNewObject);
};
// IWMDMOperation2
[
object,
uuid(33445B48-7DF7-425c-AD8F-0FC6D82F9F75),
pointer_default(unique)
]
interface IWMDMOperation2 : IWMDMOperation
{
HRESULT SetObjectAttributes2( [in] DWORD dwAttributes,
[in] DWORD dwAttributesEx,
[in] _WAVEFORMATEX *pFormat,
[in] _VIDEOINFOHEADER* pVideoFormat );
HRESULT GetObjectAttributes2( [out] DWORD *pdwAttributes,
[out] DWORD *pdwAttributesEx,
[out] _WAVEFORMATEX *pAudioFormat,
[out] _VIDEOINFOHEADER* pVideoFormat );
};
// IWMDMProgress
[
object,
uuid(1DCB3A0C-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMProgress : IUnknown
{
HRESULT Begin([in] DWORD dwEstimatedTicks);
HRESULT Progress([in] DWORD dwTranspiredTicks);
HRESULT End();
};
// IWMDMProgress2
[
object,
uuid(3A43F550-B383-4e92-B04A-E6BBC660FEFC),
pointer_default(unique)
]
interface IWMDMProgress2 : IWMDMProgress
{
HRESULT End2([in] HRESULT hrCompletionCode );
};
// IWMDMDevice
[
object,
uuid(1DCB3A02-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMDevice : IUnknown
{
HRESULT GetName([out,string,size_is(nMaxChars)] LPWSTR pwszName,
[in] UINT nMaxChars);
HRESULT GetManufacturer([out,string,size_is(nMaxChars)] LPWSTR pwszName,
[in] UINT nMaxChars);
HRESULT GetVersion([out] DWORD *pdwVersion);
HRESULT GetType([out] DWORD *pdwType);
HRESULT GetSerialNumber([out] PWMDMID pSerialNumber,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT GetPowerSource([out] DWORD *pdwPowerSource,
[out] DWORD *pdwPercentRemaining);
HRESULT GetStatus([out] DWORD *pdwStatus);
HRESULT GetDeviceIcon([out] ULONG *hIcon);
HRESULT EnumStorage([out] IWMDMEnumStorage **ppEnumStorage);
HRESULT GetFormatSupport([out, size_is( , *pnFormatCount)] _WAVEFORMATEX **ppFormatEx,
[out] UINT *pnFormatCount,
[out, size_is( , *pnMimeTypeCount)] LPWSTR **pppwszMimeType,
[out] UINT *pnMimeTypeCount);
HRESULT SendOpaqueCommand([in,out] OPAQUECOMMAND *pCommand);
};
// IWMDMDevice2
[
object,
uuid(E34F3D37-9D67-4fc1-9252-62D28B2F8B55),
pointer_default(unique)
]
interface IWMDMDevice2 : IWMDMDevice
{
HRESULT GetStorage([in, string] LPCWSTR pszStorageName, [out] IWMDMStorage** ppStorage );
HRESULT GetFormatSupport2(
[in] DWORD dwFlags,
[out, size_is( , *pnAudioFormatCount)] _WAVEFORMATEX** ppAudioFormatEx,
[out, ref] UINT *pnAudioFormatCount,
[out, size_is( , *pnVideoFormatCount)] _VIDEOINFOHEADER** ppVideoFormatEx,
[out, ref] UINT *pnVideoFormatCount,
[out, size_is( , *pnFileTypeCount)] WMFILECAPABILITIES** ppFileType,
[out, ref] UINT* pnFileTypeCount);
HRESULT GetSpecifyPropertyPages([out, ref] ISpecifyPropertyPages** ppSpecifyPropPages,
[out, ref, size_is(,*pcUnks)] IUnknown*** pppUnknowns,
[out, ref] ULONG* pcUnks );
HRESULT GetPnPName([out, size_is(nMaxChars)] LPWSTR pwszPnPName,
[in] UINT nMaxChars );
};
// IWMDMEnumDevice
[
object,
uuid(1DCB3A01-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMEnumDevice : IUnknown
{
HRESULT Next([in]ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IWMDMDevice **ppDevice,
[out] ULONG *pceltFetched);
HRESULT Skip([in] ULONG celt, [out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Clone([out] IWMDMEnumDevice **ppEnumDevice);
};
// IWMDMDeviceControl
[
object,
uuid(1DCB3A04-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMDeviceControl : IUnknown
{
HRESULT GetStatus([out] DWORD *pdwStatus);
HRESULT GetCapabilities([out] DWORD *pdwCapabilitiesMask);
HRESULT Play();
HRESULT Record([in] _WAVEFORMATEX *pFormat);
HRESULT Pause();
HRESULT Resume();
HRESULT Stop();
HRESULT Seek([in] UINT fuMode, [in] int nOffset);
};
// IWMDMEnumStorage
[
object,
uuid(1DCB3A05-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMEnumStorage : IUnknown
{
HRESULT Next([in]ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IWMDMStorage **ppStorage,
[out] ULONG *pceltFetched);
HRESULT Skip([in] ULONG celt, [out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Clone([out] IWMDMEnumStorage **ppEnumStorage);
};
// IWMDMStorageControl
[
object,
uuid(1DCB3A08-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMStorageControl : IUnknown
{
HRESULT Insert([in] UINT fuMode,
[in,unique] LPWSTR pwszFile,
[in] IWMDMOperation *pOperation,
[in] IWMDMProgress *pProgress,
[out] IWMDMStorage **ppNewObject);
HRESULT Delete([in] UINT fuMode,
[in] IWMDMProgress *pProgress);
HRESULT Rename([in] UINT fuMode,
[in] LPWSTR pwszNewName,
[in] IWMDMProgress *pProgress);
HRESULT Read([in] UINT fuMode,
[in,unique] LPWSTR pwszFile,
[in] IWMDMProgress *pProgress,
[in] IWMDMOperation *pOperation);
HRESULT Move([in] UINT fuMode,
[in] IWMDMStorage *pTargetObject,
[in] IWMDMProgress *pProgress);
};
// IWMDMStorageControl2
[
object,
uuid(972C2E88-BD6C-4125-8E09-84F837E637B6),
pointer_default(unique)
]
interface IWMDMStorageControl2 : IWMDMStorageControl
{
HRESULT Insert2([in] UINT fuMode,
[in,unique] LPWSTR pwszFileSource,
[in,unique] LPWSTR pwszFileDest,
[in] IWMDMOperation *pOperation,
[in] IWMDMProgress *pProgress,
[in] IUnknown* pUnknown,
[in,out,unique] IWMDMStorage **ppNewObject);
};
// IWMDMObjectInfo
[
object,
uuid(1DCB3A09-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IWMDMObjectInfo : IUnknown
{
HRESULT GetPlayLength([out] DWORD *pdwLength);
HRESULT SetPlayLength([in] DWORD dwLength);
HRESULT GetPlayOffset([out] DWORD *pdwOffset);
HRESULT SetPlayOffset([in] DWORD dwOffset);
HRESULT GetTotalLength([out] DWORD *pdwLength);
HRESULT GetLastPlayPosition([out] DWORD *pdwLastPos);
HRESULT GetLongestPlayPosition([out] DWORD *pdwLongestPos);
};
// IWMDMRevoked
[
object,
uuid(EBECCEDB-88EE-4e55-B6A4-8D9F07D696AA),
pointer_default(ref)
]
interface IWMDMRevoked : IUnknown
{
HRESULT GetRevocationURL( [in,out, string, size_is(, *pdwBufferLen)] LPWSTR* ppwszRevocationURL,
[in,out] DWORD* pdwBufferLen,
[out] DWORD* pdwRevokedBitFlag );
};