Implement ResetDC and PHYSICALOFFSET[X|Y] devcaps.
[wine] / dlls / quartz / devenum.h
1 /*
2  * Copyright (C) Hidenori TAKESHIMA
3  *
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.
8  *
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.
13  *
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
17  */
18
19 #ifndef WINE_DSHOW_DEVENUM_H
20 #define WINE_DSHOW_DEVENUM_H
21
22 /*
23  *              implements CLSID_SystemDeviceEnum.
24  *
25  *      - At least, the following interfaces should be implemented:
26  *
27  *      IUnknown
28  *              + ICreateDevEnum
29  */
30
31 #include "iunk.h"
32
33 typedef struct SDE_ICreateDevEnumImpl
34 {
35         ICOM_VFIELD(ICreateDevEnum);
36 } SDE_ICreateDevEnumImpl;
37
38 typedef struct CSysDevEnum
39 {
40         QUARTZ_IUnkImpl unk;
41         SDE_ICreateDevEnumImpl  createdevenum;
42 } CSysDevEnum;
43
44 #define CSysDevEnum_THIS(iface,member)          CSysDevEnum*    This = ((CSysDevEnum*)(((char*)iface)-offsetof(CSysDevEnum,member)))
45
46 HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj);
47
48 HRESULT CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde );
49 void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde );
50
51
52
53 /*
54  *              implements CLSID_CDeviceMoniker.
55  *
56  *      - At least, the following interfaces should be implemented:
57  *
58  *      IUnknown
59  *              + IPersist - IPersistStream - IMoniker
60  */
61
62 typedef struct DMON_IMonikerImpl
63 {
64         ICOM_VFIELD(IMoniker);
65 } DMON_IMonikerImpl;
66
67 typedef struct CDeviceMoniker
68 {
69         QUARTZ_IUnkImpl unk;
70         DMON_IMonikerImpl       moniker;
71         /* IMoniker fields */
72         HKEY    m_hkRoot;
73         WCHAR*  m_pwszPath;
74 } CDeviceMoniker;
75
76 #define CDeviceMoniker_THIS(iface,member)       CDeviceMoniker* This = (CDeviceMoniker*)(((char*)iface)-offsetof(CDeviceMoniker,member))
77
78 HRESULT QUARTZ_CreateDeviceMoniker(
79         HKEY hkRoot, LPCWSTR lpKeyPath,
80         IMoniker** ppMoniker );
81
82
83 /*
84  *              implements IPropertyBag for accessing registry.
85  *
86  *      - At least, the following interfaces should be implemented:
87  *
88  *      IUnknown
89  *              + IPropertyBag
90  */
91
92 typedef struct DMON_IPropertyBagImpl
93 {
94         ICOM_VFIELD(IPropertyBag);
95 } DMON_IPropertyBagImpl;
96
97 typedef struct CRegPropertyBag
98 {
99         QUARTZ_IUnkImpl unk;
100         DMON_IPropertyBagImpl   propbag;
101         /* IPropertyBag fields */
102         HKEY    m_hKey;
103 } CRegPropertyBag;
104
105 #define CRegPropertyBag_THIS(iface,member)      CRegPropertyBag*        This = (CRegPropertyBag*)(((char*)iface)-offsetof(CRegPropertyBag,member))
106
107 HRESULT QUARTZ_CreateRegPropertyBag(
108         HKEY hkRoot, LPCWSTR lpKeyPath,
109         IPropertyBag** ppPropBag );
110
111 /***************************************************************************
112  *
113  *      related functions (internal).
114  *
115  */
116
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 */
122
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 */
129
130 HRESULT QUARTZ_RegDeleteKey( HKEY hkRoot, LPCWSTR lpKeyPath );
131
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] */
142
143
144 #endif  /* WINE_DSHOW_DEVENUM_H */