// // 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 ); };