2 * Copyright (C) Hidenori TAKESHIMA
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef WINE_DSHOW_DEVENUM_H
20 #define WINE_DSHOW_DEVENUM_H
23 * implements CLSID_SystemDeviceEnum.
25 * - At least, the following interfaces should be implemented:
33 typedef struct SDE_ICreateDevEnumImpl
35 ICOM_VFIELD(ICreateDevEnum);
36 } SDE_ICreateDevEnumImpl;
38 typedef struct CSysDevEnum
41 SDE_ICreateDevEnumImpl createdevenum;
44 #define CSysDevEnum_THIS(iface,member) CSysDevEnum* This = ((CSysDevEnum*)(((char*)iface)-offsetof(CSysDevEnum,member)))
46 HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj);
48 HRESULT CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde );
49 void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde );
54 * implements CLSID_CDeviceMoniker.
56 * - At least, the following interfaces should be implemented:
59 * + IPersist - IPersistStream - IMoniker
62 typedef struct DMON_IMonikerImpl
64 ICOM_VFIELD(IMoniker);
67 typedef struct CDeviceMoniker
70 DMON_IMonikerImpl moniker;
76 #define CDeviceMoniker_THIS(iface,member) CDeviceMoniker* This = (CDeviceMoniker*)(((char*)iface)-offsetof(CDeviceMoniker,member))
78 HRESULT QUARTZ_CreateDeviceMoniker(
79 HKEY hkRoot, LPCWSTR lpKeyPath,
80 IMoniker** ppMoniker );
84 * implements IPropertyBag for accessing registry.
86 * - At least, the following interfaces should be implemented:
92 typedef struct DMON_IPropertyBagImpl
94 ICOM_VFIELD(IPropertyBag);
95 } DMON_IPropertyBagImpl;
97 typedef struct CRegPropertyBag
100 DMON_IPropertyBagImpl propbag;
101 /* IPropertyBag fields */
105 #define CRegPropertyBag_THIS(iface,member) CRegPropertyBag* This = (CRegPropertyBag*)(((char*)iface)-offsetof(CRegPropertyBag,member))
107 HRESULT QUARTZ_CreateRegPropertyBag(
108 HKEY hkRoot, LPCWSTR lpKeyPath,
109 IPropertyBag** ppPropBag );
111 /***************************************************************************
113 * related functions (internal).
117 HRESULT QUARTZ_GetFilterRegPath(
118 WCHAR** ppwszPath, /* [OUT] path from HKEY_CLASSES_ROOT */
119 const CLSID* pguidFilterCategory, /* [IN] Category */
120 const CLSID* pclsid, /* [IN] CLSID of this filter */
121 LPCWSTR lpInstance ); /* [IN] instance */
123 HRESULT QUARTZ_RegisterFilterToMoniker(
124 IMoniker* pMoniker, /* [IN] Moniker */
125 const CLSID* pclsid, /* [IN] CLSID of this filter */
126 LPCWSTR lpFriendlyName, /* [IN] friendly name */
127 const BYTE* pbFilterData, /* [IN] filter data */
128 DWORD cbFilterData ); /* [IN] size of the filter data */
130 HRESULT QUARTZ_RegDeleteKey( HKEY hkRoot, LPCWSTR lpKeyPath );
132 HRESULT QUARTZ_GetCLSIDFromMoniker(
133 IMoniker* pMoniker, /* [IN] Moniker */
134 CLSID* pclsid ); /* [OUT] */
135 HRESULT QUARTZ_GetMeritFromMoniker(
136 IMoniker* pMoniker, /* [IN] Moniker */
137 DWORD* pdwMerit ); /* [OUT] */
138 HRESULT QUARTZ_GetFilterDataFromMoniker(
139 IMoniker* pMoniker, /* [IN] Moniker */
140 BYTE** ppbFilterData, /* [OUT] */
141 DWORD* pcbFilterData ); /* [OUT] */
144 #endif /* WINE_DSHOW_DEVENUM_H */