| /* |
| * Copyright (C) Hidenori TAKESHIMA |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #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 */ |