windows-nt/Source/XPSP1/NT/public/sdk/inc/wmsp.idl
2020-09-26 16:20:57 +08:00

294 lines
9.3 KiB
Plaintext

//
// Microsoft Windows Media Technologies
// Copyright (C) Microsoft Corporation, 1999 - 2001. All rights reserved.
//
cpp_quote("// Open Mode Flags")
cpp_quote("#define MDSP_READ 0x00000001")
cpp_quote("#define MDSP_WRITE 0x00000002")
cpp_quote("// Seek Flags")
cpp_quote("#define MDSP_SEEK_BOF 0x00000001")
cpp_quote("#define MDSP_SEEK_CUR 0x00000002")
cpp_quote("#define MDSP_SEEK_EOF 0x00000004")
interface IMDSPDevice;
interface IMDSPDevice2;
interface IMDSPStorage;
interface IMDSPStorage2;
interface IMDSPObjectInfo;
interface IMDSPStorageGlobals;
interface IMDSPEnumDevice;
interface IMDSPEnumStorage;
interface IMDSPRevoked;
// IMDServiceProvider
[
object,
uuid(1DCB3A10-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDServiceProvider : IUnknown
{
HRESULT GetDeviceCount([out] DWORD *pdwCount);
HRESULT EnumDevices([out] IMDSPEnumDevice **ppEnumDevice);
};
// IMDServiceProvider2
[
object,
uuid(B2FA24B7-CDA3-4694-9862-413AE1A34819),
pointer_default(unique)
]
interface IMDServiceProvider2 : IMDServiceProvider
{
HRESULT GetDeviceFromPnPName( [in, string] LPCWSTR pwszPnPName,
[out] IMDSPDevice** ppDevice );
};
// IMDSPEnumDevice
[
object,
uuid(1DCB3A11-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPEnumDevice : IUnknown
{
HRESULT Next([in]ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IMDSPDevice **ppDevice,
[out] ULONG *pceltFetched);
HRESULT Skip([in] ULONG celt, [out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Clone([out] IMDSPEnumDevice **ppEnumDevice);
};
// IMDSPDevice
[
object,
uuid(1DCB3A12-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPDevice : 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] IMDSPEnumStorage **ppEnumStorage);
HRESULT GetFormatSupport([out, size_is( , *pnFormatCount)] _WAVEFORMATEX **pFormatEx,
[out] UINT *pnFormatCount,
[out, size_is( , *pnMimeTypeCount)] LPWSTR **pppwszMimeType,
[out] UINT *pnMimeTypeCount);
HRESULT SendOpaqueCommand([in,out] OPAQUECOMMAND *pCommand);
};
// IWMDMDevice2
[
object,
uuid(420D16AD-C97D-4e00-82AA-00E9F4335DDD),
pointer_default(unique)
]
interface IMDSPDevice2 : IMDSPDevice
{
HRESULT GetStorage([in, string] LPCWSTR pszStorageName, [out] IMDSPStorage** 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 );
};
// IMDSPDeviceControl
[
object,
uuid(1DCB3A14-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPDeviceControl : IUnknown
{
HRESULT GetDCStatus([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);
};
// IMDSPEnumStorage
[
object,
uuid(1DCB3A15-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPEnumStorage : IUnknown
{
HRESULT Next([in]ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] IMDSPStorage **ppStorage,
[out] ULONG *pceltFetched);
HRESULT Skip([in] ULONG celt, [out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Clone([out] IMDSPEnumStorage **ppEnumStorage);
};
// IMDSPStorage
[
object,
uuid(1DCB3A16-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPStorage : IUnknown
{
HRESULT SetAttributes([in] DWORD dwAttributes,
[in] _WAVEFORMATEX *pFormat);
HRESULT GetStorageGlobals([out]IMDSPStorageGlobals **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 CreateStorage([in] DWORD dwAttributes,
[in, unique] _WAVEFORMATEX *pFormat,
[in] LPWSTR pwszName,
[out] IMDSPStorage **ppNewStorage);
HRESULT EnumStorage([out] IMDSPEnumStorage **ppEnumStorage);
HRESULT SendOpaqueCommand([in,out] OPAQUECOMMAND *pCommand);
};
// IMDSPStorage2
[
object,
uuid(0A5E07A5-6454-4451-9C36-1C6AE7E2B1D6),
pointer_default(unique)
]
interface IMDSPStorage2 : IMDSPStorage
{
HRESULT GetStorage([in, string] LPCWSTR pszStorageName, [out] IMDSPStorage** ppStorage );
HRESULT CreateStorage2([in] DWORD dwAttributes,
[in] DWORD dwAttributesEx,
[in, unique] _WAVEFORMATEX *pAudioFormat,
[in, unique] _VIDEOINFOHEADER *pVideoFormat,
[in] LPWSTR pwszName,
[in] ULONGLONG qwFileSize,
[out] IMDSPStorage **ppNewStorage);
HRESULT SetAttributes2( [in] DWORD dwAttributes,
[in] DWORD dwAttributesEx,
[in] _WAVEFORMATEX *pAudioFormat,
[in] _VIDEOINFOHEADER* pVideoFormat );
HRESULT GetAttributes2( [out] DWORD *pdwAttributes,
[out] DWORD *pdwAttributesEx,
[out] _WAVEFORMATEX *pAudioFormat,
[out] _VIDEOINFOHEADER* pVideoFormat );
}
// IMDSPStorageGlobals
[
object,
uuid(1DCB3A17-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPStorageGlobals : 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);
HRESULT GetDevice([out] IMDSPDevice **ppDevice);
HRESULT GetRootStorage([out] IMDSPStorage **ppRoot);
};
// IMDSPObjectInfo
[
object,
uuid(1DCB3A19-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPObjectInfo : 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);
};
// IMDSPObject
[
object,
uuid(1DCB3A18-33ED-11d3-8470-00C04F79DBC0),
pointer_default(unique)
]
interface IMDSPObject : IUnknown
{
HRESULT Open([in] UINT fuMode);
HRESULT Read([out,size_is(*pdwSize)] BYTE *pData,
[in,out] DWORD *pdwSize,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT Write([in, size_is(*pdwSize)] BYTE *pData,
[in,out] DWORD *pdwSize,
[in, out] BYTE abMac[WMDM_MAC_LENGTH]);
HRESULT Delete([in] UINT fuMode, [in] IWMDMProgress *pProgress);
HRESULT Seek([in] UINT fuFlags,
[in] DWORD dwOffset);
HRESULT Rename([in] LPWSTR pwszNewName, [in] IWMDMProgress *pProgress);
HRESULT Move([in] UINT fuMode,
[in] IWMDMProgress *pProgress,
[in] IMDSPStorage *pTarget);
HRESULT Close();
};
// IMDSPRevoked
[
object,
uuid(A4E8F2D4-3F31-464d-B53D-4FC335998184),
pointer_default(unique)
]
interface IMDSPRevoked : IUnknown
{
HRESULT GetRevocationURL( [in, out, string, size_is(, *pdwBufferLen)] LPWSTR* ppwszRevocationURL,
[in, out] DWORD* pdwBufferLen );
};