#ifndef WINE_DSHOW_DEVENUM_H #define WINE_DSHOW_DEVENUM_H /* * implements CLSID_SystemDeviceEnum. * * - At least, the following interfaces should be implemented: * * IUnknown * + ICreateDevEnum */ #include "iunk.h" typedef struct SDE_ICreateDevEnumImpl { ICOM_VFIELD(ICreateDevEnum); } SDE_ICreateDevEnumImpl; typedef struct CSysDevEnum { QUARTZ_IUnkImpl unk; SDE_ICreateDevEnumImpl createdevenum; } CSysDevEnum; #define CSysDevEnum_THIS(iface,member) CSysDevEnum* This = ((CSysDevEnum*)(((char*)iface)-offsetof(CSysDevEnum,member))) HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj); HRESULT CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde ); void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde ); /* * implements CLSID_CDeviceMoniker. * * - At least, the following interfaces should be implemented: * * IUnknown * + IPersist - IPersistStream - IMoniker */ typedef struct DMON_IMonikerImpl { ICOM_VFIELD(IMoniker); } DMON_IMonikerImpl; typedef struct CDeviceMoniker { QUARTZ_IUnkImpl unk; DMON_IMonikerImpl moniker; /* IMoniker fields */ HKEY m_hkRoot; WCHAR* m_pwszPath; } CDeviceMoniker; #define CDeviceMoniker_THIS(iface,member) CDeviceMoniker* This = (CDeviceMoniker*)(((char*)iface)-offsetof(CDeviceMoniker,member)) HRESULT QUARTZ_CreateDeviceMoniker( HKEY hkRoot, LPCWSTR lpKeyPath, IMoniker** ppMoniker ); /* * implements IPropertyBag for accessing registry. * * - At least, the following interfaces should be implemented: * * IUnknown * + IPropertyBag */ typedef struct DMON_IPropertyBagImpl { ICOM_VFIELD(IPropertyBag); } DMON_IPropertyBagImpl; typedef struct CRegPropertyBag { QUARTZ_IUnkImpl unk; DMON_IPropertyBagImpl propbag; /* IPropertyBag fields */ HKEY m_hKey; } CRegPropertyBag; #define CRegPropertyBag_THIS(iface,member) CRegPropertyBag* This = (CRegPropertyBag*)(((char*)iface)-offsetof(CRegPropertyBag,member)) HRESULT QUARTZ_CreateRegPropertyBag( HKEY hkRoot, LPCWSTR lpKeyPath, IPropertyBag** ppPropBag ); /*************************************************************************** * * related functions (internal). * */ HRESULT QUARTZ_GetFilterRegPath( WCHAR** ppwszPath, /* [OUT] path from HKEY_CLASSES_ROOT */ const CLSID* pguidFilterCategory, /* [IN] Category */ const CLSID* pclsid, /* [IN] CLSID of this filter */ LPCWSTR lpInstance ); /* [IN] instance */ HRESULT QUARTZ_RegisterFilterToMoniker( IMoniker* pMoniker, /* [IN] Moniker */ const CLSID* pclsid, /* [IN] CLSID of this filter */ LPCWSTR lpFriendlyName, /* [IN] friendly name */ const BYTE* pbFilterData, /* [IN] filter data */ DWORD cbFilterData ); /* [IN] size of the filter data */ HRESULT QUARTZ_RegDeleteKey( HKEY hkRoot, LPCWSTR lpKeyPath ); HRESULT QUARTZ_GetCLSIDFromMoniker( IMoniker* pMoniker, /* [IN] Moniker */ CLSID* pclsid ); /* [OUT] */ HRESULT QUARTZ_GetMeritFromMoniker( IMoniker* pMoniker, /* [IN] Moniker */ DWORD* pdwMerit ); /* [OUT] */ HRESULT QUARTZ_GetFilterDataFromMoniker( IMoniker* pMoniker, /* [IN] Moniker */ BYTE** ppbFilterData, /* [OUT] */ DWORD* pcbFilterData ); /* [OUT] */ #endif /* WINE_DSHOW_DEVENUM_H */