614 lines
22 KiB
Plaintext
614 lines
22 KiB
Plaintext
//
|
|
// 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 );
|
|
};
|