- Sync with trunk r58248 to bring the latest changes from Amine (headers) and others...
[reactos.git] / dll / directx / devenum / devenum_private.h
1 /*
2 * includes for devenum.dll
3 *
4 * Copyright (C) 2002 John K. Hohm
5 * Copyright (C) 2002 Robert Shearman
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 *
21 * NOTES ON FILE:
22 * - Private file where devenum globals are declared
23 */
24
25 #ifndef RC_INVOKED
26 #include <stdarg.h>
27 #endif
28
29 #define WIN32_NO_STATUS
30 #define _INC_WINDOWS
31 #define COM_NO_WINDOWS_H
32
33 #include <windef.h>
34 #include <winbase.h>
35 #include <wingdi.h>
36 //#include "winuser.h"
37 #include <winreg.h>
38 //#include "winerror.h"
39
40 #define COBJMACROS
41
42 #include <ole2.h>
43 #include <strmif.h>
44 //#include "olectl.h"
45 #include <uuids.h>
46
47 #ifndef RC_INVOKED
48 #include <wine/unicode.h>
49 #endif
50
51 /**********************************************************************
52 * Dll lifetime tracking declaration for devenum.dll
53 */
54 extern LONG dll_refs;
55 static inline void DEVENUM_LockModule(void) { InterlockedIncrement(&dll_refs); }
56 static inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs); }
57
58
59 /**********************************************************************
60 * ClassFactory declaration for devenum.dll
61 */
62 typedef struct
63 {
64 const IClassFactoryVtbl *lpVtbl;
65 } ClassFactoryImpl;
66
67 typedef struct
68 {
69 const ICreateDevEnumVtbl *lpVtbl;
70 } CreateDevEnumImpl;
71
72 typedef struct
73 {
74 const IParseDisplayNameVtbl *lpVtbl;
75 } ParseDisplayNameImpl;
76
77 typedef struct
78 {
79 const IEnumMonikerVtbl *lpVtbl;
80 LONG ref;
81 DWORD index;
82 HKEY hkey;
83 } EnumMonikerImpl;
84
85 typedef struct
86 {
87 const IMonikerVtbl *lpVtbl;
88 LONG ref;
89 HKEY hkey;
90 } MediaCatMoniker;
91
92 MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void);
93 HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker);
94
95 extern ClassFactoryImpl DEVENUM_ClassFactory;
96 extern CreateDevEnumImpl DEVENUM_CreateDevEnum;
97 extern ParseDisplayNameImpl DEVENUM_ParseDisplayName;
98
99 /**********************************************************************
100 * Private helper function to get AM filter category key location
101 */
102 HRESULT DEVENUM_GetCategoryKey(REFCLSID clsidDeviceClass, HKEY *pBaseKey, WCHAR *wszRegKeyName, UINT maxLen);
103
104 /**********************************************************************
105 * Global string constant declarations
106 */
107 extern const WCHAR clsid_keyname[6];
108 extern const WCHAR wszInstanceKeyName[];
109 #define CLSID_STR_LEN (sizeof(clsid_keyname) / sizeof(WCHAR))
110
111 /**********************************************************************
112 * Resource IDs
113 */
114 #define IDS_DEVENUM_DSDEFAULT 7
115 #define IDS_DEVENUM_DS 8
116 #define IDS_DEVENUM_WODEFAULT 9
117 #define IDS_DEVENUM_MIDEFAULT 10
118 #define IDS_DEVENUM_KSDEFAULT 11
119 #define IDS_DEVENUM_KS 12