ReactOS 0.4.17-dev-966-gf06eace
dmoreg.h File Reference
#include "mediaobj.h"
Include dependency graph for dmoreg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _DMO_PARTIAL_MEDIATYPE
 

Typedefs

typedef struct _DMO_PARTIAL_MEDIATYPE DMO_PARTIAL_MEDIATYPE
 
typedef struct _DMO_PARTIAL_MEDIATYPE * PDMO_PARTIAL_MEDIATYPE
 

Enumerations

enum  DMO_REGISTER_FLAGS { DMO_REGISTERF_IS_KEYED = 1 , DMO_REGISTERF_IS_KEYED = 1 }
 
enum  DMO_ENUM_FLAGS { DMO_ENUMF_INCLUDE_KEYED = 1 , DMO_ENUMF_INCLUDE_KEYED = 1 }
 

Functions

HRESULT WINAPI DMORegister (LPCWSTR, REFCLSID, REFGUID, DWORD, DWORD, const DMO_PARTIAL_MEDIATYPE *, DWORD, const DMO_PARTIAL_MEDIATYPE *)
 
HRESULT WINAPI DMOUnregister (REFCLSID, REFGUID)
 
HRESULT WINAPI DMOEnum (REFGUID, DWORD, DWORD, const DMO_PARTIAL_MEDIATYPE *, DWORD, const DMO_PARTIAL_MEDIATYPE *, IEnumDMO **)
 
HRESULT WINAPI DMOGetTypes (REFCLSID, ULONG, ULONG *, DMO_PARTIAL_MEDIATYPE *, ULONG, ULONG *, DMO_PARTIAL_MEDIATYPE *)
 
HRESULT WINAPI DMOGetName (REFCLSID, WCHAR[80])
 
 DEFINE_GUID (DMOCATEGORY_AUDIO_DECODER, 0x57f2db8b, 0xe6bb, 0x4513, 0x9d, 0x43, 0xdc, 0xd2, 0xa6, 0x59, 0x31, 0x25)
 
 DEFINE_GUID (DMOCATEGORY_AUDIO_ENCODER, 0x33d9a761, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
 
 DEFINE_GUID (DMOCATEGORY_VIDEO_DECODER, 0x4a69b442, 0x28be, 0x4991, 0x96, 0x9c, 0xb5, 0x00, 0xad, 0xf5, 0xd8, 0xa8)
 
 DEFINE_GUID (DMOCATEGORY_VIDEO_ENCODER, 0x33d9a760, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86)
 
 DEFINE_GUID (DMOCATEGORY_AUDIO_EFFECT, 0xf3602b3f, 0x0592, 0x48df, 0xa4, 0xcd, 0x67, 0x47, 0x21, 0xe7, 0xeb, 0xeb)
 
 DEFINE_GUID (DMOCATEGORY_VIDEO_EFFECT, 0xd990ee14, 0x776c, 0x4723, 0xbe, 0x46, 0x3d, 0xa2, 0xf5, 0x6f, 0x10, 0xb9)
 
 DEFINE_GUID (DMOCATEGORY_AUDIO_CAPTURE_EFFECT, 0xf665aaba, 0x3e09, 0x4920, 0xaa, 0x5f, 0x21, 0x98, 0x11, 0x14, 0x8f, 0x09)
 
 DEFINE_GUID (DMOCATEGORY_ACOUSTIC_ECHO_CANCEL, 0xbf963d80, 0xc559, 0x11d0, 0x8a, 0x2b, 0x00, 0xa0, 0xc9, 0x25, 0x5a, 0xc1)
 
 DEFINE_GUID (DMOCATEGORY_AUDIO_NOISE_SUPPRESS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5)
 
 DEFINE_GUID (DMOCATEGORY_AGC, 0xe88c9ba0, 0xc557, 0x11d0, 0x8a, 0x2b, 0x00, 0xa0, 0xc9, 0x25, 0x5a, 0xc1)
 

Typedef Documentation

◆ DMO_PARTIAL_MEDIATYPE

◆ PDMO_PARTIAL_MEDIATYPE

Enumeration Type Documentation

◆ DMO_ENUM_FLAGS

Enumerator
DMO_ENUMF_INCLUDE_KEYED 
DMO_ENUMF_INCLUDE_KEYED 

Definition at line 35 of file dmoreg.h.

36{
38};
@ DMO_ENUMF_INCLUDE_KEYED
Definition: dmoreg.h:37

◆ DMO_REGISTER_FLAGS

Enumerator
DMO_REGISTERF_IS_KEYED 
DMO_REGISTERF_IS_KEYED 

Definition at line 30 of file dmoreg.h.

31{
33};
@ DMO_REGISTERF_IS_KEYED
Definition: dmoreg.h:32

Function Documentation

◆ DEFINE_GUID() [1/10]

DEFINE_GUID ( DMOCATEGORY_ACOUSTIC_ECHO_CANCEL  ,
0xbf963d80  ,
0xc559  ,
0x11d0  ,
0x8a  ,
0x2b  ,
0x00  ,
0xa0  ,
0xc9  ,
0x25  ,
0x5a  ,
0xc1   
)

◆ DEFINE_GUID() [2/10]

DEFINE_GUID ( DMOCATEGORY_AGC  ,
0xe88c9ba0  ,
0xc557  ,
0x11d0  ,
0x8a  ,
0x2b  ,
0x00  ,
0xa0  ,
0xc9  ,
0x25  ,
0x5a  ,
0xc1   
)

◆ DEFINE_GUID() [3/10]

DEFINE_GUID ( DMOCATEGORY_AUDIO_CAPTURE_EFFECT  ,
0xf665aaba  ,
0x3e09  ,
0x4920  ,
0xaa  ,
0x5f  ,
0x21  ,
0x98  ,
0x11  ,
0x14  ,
0x8f  ,
0x09   
)

◆ DEFINE_GUID() [4/10]

DEFINE_GUID ( DMOCATEGORY_AUDIO_DECODER  ,
0x57f2db8b  ,
0xe6bb  ,
0x4513  ,
0x9d  ,
0x43  ,
0xdc  ,
0xd2  ,
0xa6  ,
0x59  ,
0x31  ,
0x25   
)

◆ DEFINE_GUID() [5/10]

DEFINE_GUID ( DMOCATEGORY_AUDIO_EFFECT  ,
0xf3602b3f  ,
0x0592  ,
0x48df  ,
0xa4  ,
0xcd  ,
0x67  ,
0x47  ,
0x21  ,
0xe7  ,
0xeb  ,
0xeb   
)

◆ DEFINE_GUID() [6/10]

DEFINE_GUID ( DMOCATEGORY_AUDIO_ENCODER  ,
0x33d9a761  ,
0x90c8  ,
0x11d0  ,
0xbd  ,
0x43  ,
0x00  ,
0xa0  ,
0xc9  ,
0x11  ,
0xce  ,
0x86   
)

◆ DEFINE_GUID() [7/10]

DEFINE_GUID ( DMOCATEGORY_AUDIO_NOISE_SUPPRESS  ,
0xe07f903f  ,
0x62fd  ,
0x4e60  ,
0x8c  ,
0xdd  ,
0xde  ,
0xa7  ,
0x23  ,
0x66  ,
0x65  ,
0xb5   
)

◆ DEFINE_GUID() [8/10]

DEFINE_GUID ( DMOCATEGORY_VIDEO_DECODER  ,
0x4a69b442  ,
0x28be  ,
0x4991  ,
0x96  ,
0x9c  ,
0xb5  ,
0x00  ,
0xad  ,
0xf5  ,
0xd8  ,
0xa8   
)

◆ DEFINE_GUID() [9/10]

DEFINE_GUID ( DMOCATEGORY_VIDEO_EFFECT  ,
0xd990ee14  ,
0x776c  ,
0x4723  ,
0xbe  ,
0x46  ,
0x3d  ,
0xa2  ,
0xf5  ,
0x6f  ,
0x10  ,
0xb9   
)

◆ DEFINE_GUID() [10/10]

DEFINE_GUID ( DMOCATEGORY_VIDEO_ENCODER  ,
0x33d9a760  ,
0x90c8  ,
0x11d0  ,
0xbd  ,
0x43  ,
0x00  ,
0xa0  ,
0xc9  ,
0x11  ,
0xce  ,
0x86   
)

◆ DMOEnum()

HRESULT WINAPI DMOEnum ( REFGUID  category,
DWORD  flags,
DWORD  cInTypes,
const DMO_PARTIAL_MEDIATYPE *  pInTypes,
DWORD  cOutTypes,
const DMO_PARTIAL_MEDIATYPE *  pOutTypes,
IEnumDMO **  ppEnum 
)

Definition at line 674 of file dmoreg.c.

682{
683 TRACE("%s 0x%08lx %ld %p %ld %p %p\n", debugstr_guid(category), flags, cInTypes, pInTypes,
684 cOutTypes, pOutTypes, ppEnum);
685
686 if (TRACE_ON(msdmo))
687 {
688 DWORD i;
689 if (cInTypes)
690 {
691 for (i = 0; i < cInTypes; i++)
692 TRACE("intype %ld - type %s, subtype %s\n", i, debugstr_guid(&pInTypes[i].type),
693 debugstr_guid(&pInTypes[i].subtype));
694 }
695
696 if (cOutTypes) {
697 for (i = 0; i < cOutTypes; i++)
698 TRACE("outtype %ld - type %s, subtype %s\n", i, debugstr_guid(&pOutTypes[i].type),
699 debugstr_guid(&pOutTypes[i].subtype));
700 }
701 }
702
703 return IEnumDMO_Constructor(category, flags, cInTypes,
704 pInTypes, cOutTypes, pOutTypes, ppEnum);
705}
#define TRACE_ON(x)
Definition: compat.h:75
static HRESULT IEnumDMO_Constructor(REFGUID guidCategory, DWORD dwFlags, DWORD cInTypes, const DMO_PARTIAL_MEDIATYPE *pInTypes, DWORD cOutTypes, const DMO_PARTIAL_MEDIATYPE *pOutTypes, IEnumDMO **obj)
Definition: dmoreg.c:331
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define debugstr_guid
Definition: kernel32.h:35
const GUID * subtype
Definition: mpegvideo.c:120
#define TRACE(s)
Definition: solgame.cpp:4

◆ DMOGetName()

HRESULT WINAPI DMOGetName ( REFCLSID  clsidDMO,
WCHAR  name[80] 
)

Definition at line 282 of file dmoreg.c.

283{
284 static const INT max_name_len = 80*sizeof(WCHAR);
285 DWORD count = max_name_len;
286 WCHAR szguid[64];
287 HKEY hrkey, hkey;
288 LONG ret;
289
290 TRACE("%s %p\n", debugstr_guid(clsidDMO), name);
291
292 if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"DirectShow\\MediaObjects", 0, KEY_READ, &hrkey))
293 return E_FAIL;
294
295 ret = RegOpenKeyExW(hrkey, GUIDToString(szguid, clsidDMO), 0, KEY_READ, &hkey);
296 RegCloseKey(hrkey);
297 if (ret)
298 return E_FAIL;
299
301 RegCloseKey(hkey);
302
303 if (!ret && count > 1)
304 {
305 TRACE("name=%s\n", debugstr_w(name));
306 return S_OK;
307 }
308
309 name[0] = 0;
310 return S_FALSE;
311}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
static const WCHAR * GUIDToString(WCHAR *string, const GUID *guid)
Definition: dmoreg.c:85
return ret
Definition: mutex.c:147
#define L(x)
Definition: resources.c:13
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define S_OK
Definition: intsafe.h:52
#define debugstr_w
Definition: kernel32.h:32
#define KEY_READ
Definition: nt_native.h:1026
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
Definition: name.c:39
unsigned char * LPBYTE
Definition: typedefs.h:53
int32_t INT
Definition: typedefs.h:58
#define S_FALSE
Definition: winerror.h:3451
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

◆ DMOGetTypes()

HRESULT WINAPI DMOGetTypes ( REFCLSID  clsid,
ULONG  input_count,
ULONG *  ret_input_count,
DMO_PARTIAL_MEDIATYPE *  input,
ULONG  output_count,
ULONG *  ret_output_count,
DMO_PARTIAL_MEDIATYPE *  output 
)

Definition at line 722 of file dmoreg.c.

724{
725 WCHAR guidstr[64];
726 HKEY root, key;
727 LSTATUS ret;
728 DWORD size;
729
730 TRACE("clsid %s, input_count %lu, ret_input_count %p, input %p, output_count %lu, ret_output_count %p, output %p.\n",
731 debugstr_guid(clsid), input_count, ret_input_count, input, output_count, ret_output_count, output);
732
733 if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"DirectShow\\MediaObjects", 0, KEY_READ, &root))
734 return E_FAIL;
735
736 if (RegOpenKeyExW(root, GUIDToString(guidstr, clsid), 0, KEY_READ, &key))
737 {
739 return E_FAIL;
740 }
741
742 *ret_input_count = 0;
743 size = input_count * sizeof(DMO_PARTIAL_MEDIATYPE);
744 ret = RegQueryValueExW(key, L"InputTypes", NULL, NULL, (BYTE *)input, &size);
745 if (!ret || ret == ERROR_MORE_DATA)
746 *ret_input_count = min(input_count, size / sizeof(DMO_PARTIAL_MEDIATYPE));
747
748 *ret_output_count = 0;
749 size = output_count * sizeof(DMO_PARTIAL_MEDIATYPE);
750 ret = RegQueryValueExW(key, L"OutputTypes", NULL, NULL, (BYTE *)output, &size);
751 if (!ret || ret == ERROR_MORE_DATA)
752 *ret_output_count = min(output_count, size / sizeof(DMO_PARTIAL_MEDIATYPE));
753
756 return S_OK;
757}
struct _root root
#define ERROR_MORE_DATA
Definition: dderror.h:13
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
struct _DMO_PARTIAL_MEDIATYPE DMO_PARTIAL_MEDIATYPE
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum GLenum input
Definition: glext.h:9031
#define min(a, b)
Definition: monoChain.cc:55
const CLSID * clsid
Definition: msctf.cpp:50
Definition: copy.c:22
unsigned char BYTE
Definition: xxhash.c:193

◆ DMORegister()

HRESULT WINAPI DMORegister ( LPCWSTR  szName,
REFCLSID  clsidDMO,
REFGUID  guidCategory,
DWORD  dwFlags,
DWORD  cInTypes,
const DMO_PARTIAL_MEDIATYPE *  pInTypes,
DWORD  cOutTypes,
const DMO_PARTIAL_MEDIATYPE *  pOutTypes 
)

Definition at line 126 of file dmoreg.c.

136{
137 WCHAR szguid[64];
139 HKEY hrkey = 0;
140 HKEY hkey = 0;
141 HKEY hckey = 0;
142 HKEY hclskey = 0;
143 LONG ret;
144
145 TRACE("%s %s %s\n", debugstr_w(szName), debugstr_guid(clsidDMO), debugstr_guid(guidCategory));
146
147 if (IsEqualGUID(guidCategory, &GUID_NULL))
148 return E_INVALIDARG;
149
150 ret = RegCreateKeyExW(HKEY_CLASSES_ROOT, L"DirectShow\\MediaObjects", 0,
151 NULL, 0, KEY_WRITE, NULL, &hrkey, NULL);
152 if (ret)
153 return E_FAIL;
154
155 /* Create clsidDMO key under MediaObjects */
156 ret = RegCreateKeyExW(hrkey, GUIDToString(szguid, clsidDMO), 0, NULL,
158 if (ret)
159 goto lend;
160
161 /* Set default Name value */
162 ret = RegSetValueExW(hkey, NULL, 0, REG_SZ, (const BYTE*) szName,
163 (wcslen(szName) + 1) * sizeof(WCHAR));
164
165 /* Set InputTypes */
166 hres = write_types(hkey, L"InputTypes", pInTypes, cInTypes);
167
168 /* Set OutputTypes */
169 hres = write_types(hkey, L"OutputTypes", pOutTypes, cOutTypes);
170
172 {
173 /* Create Keyed key */
174 ret = RegCreateKeyExW(hkey, L"Keyed", 0, NULL, 0, KEY_WRITE, NULL, &hckey, NULL);
175 if (ret)
176 goto lend;
177 RegCloseKey(hckey);
178 }
179
180 /* Register the category */
181 ret = RegCreateKeyExW(hrkey, L"Categories", 0, NULL, 0, KEY_WRITE, NULL, &hckey, NULL);
182 if (ret)
183 goto lend;
184
185 RegCloseKey(hkey);
186
187 ret = RegCreateKeyExW(hckey, GUIDToString(szguid, guidCategory), 0, NULL,
189 if (ret)
190 goto lend;
191 ret = RegCreateKeyExW(hkey, GUIDToString(szguid, clsidDMO), 0, NULL,
193 if (ret)
194 goto lend;
195
196lend:
197 if (hkey)
198 RegCloseKey(hkey);
199 if (hckey)
200 RegCloseKey(hckey);
201 if (hclskey)
202 RegCloseKey(hclskey);
203 if (hrkey)
204 RegCloseKey(hrkey);
205
207 TRACE(" hresult=0x%08lx\n", hres);
208 return hres;
209}
#define REG_SZ
Definition: layer.c:22
#define E_INVALIDARG
Definition: ddrawi.h:101
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE *types, DWORD count)
Definition: dmoreg.c:115
#define GUID_NULL
Definition: ks.h:106
HRESULT hres
Definition: protocol.c:432
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1060
#define KEY_WRITE
Definition: nt_native.h:1034
static const WCHAR szName[]
Definition: powrprof.c:45
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210

◆ DMOUnregister()

HRESULT WINAPI DMOUnregister ( REFCLSID  dmo,
REFGUID  category 
)

Definition at line 231 of file dmoreg.c.

232{
233 HKEY rootkey = 0, categorieskey = 0;
234 WCHAR dmoW[64], catW[64];
236 LONG ret;
237
238 TRACE("%s %s\n", debugstr_guid(dmo), debugstr_guid(category));
239
240 if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"DirectShow\\MediaObjects", 0, KEY_WRITE, &rootkey))
241 return S_FALSE;
242
243 GUIDToString(dmoW, dmo);
244 RegDeleteKeyW(rootkey, dmoW);
245
246 /* open 'Categories' */
247 ret = RegOpenKeyExW(rootkey, L"Categories", 0, KEY_WRITE|KEY_ENUMERATE_SUB_KEYS, &categorieskey);
248 RegCloseKey(rootkey);
249 if (ret)
250 {
252 goto lend;
253 }
254
255 /* remove from all categories */
257 {
258 DWORD index = 0, len = ARRAY_SIZE(catW);
259
260 while (!RegEnumKeyExW(categorieskey, index++, catW, &len, NULL, NULL, NULL, NULL))
261 hr = unregister_dmo_from_category(dmoW, catW, categorieskey);
262 }
263 else
264 {
265 GUIDToString(catW, category);
266 hr = unregister_dmo_from_category(dmoW, catW, categorieskey);
267 }
268
269lend:
270 if (categorieskey)
271 RegCloseKey(categorieskey);
272
273 return hr;
274}
#define ARRAY_SIZE(A)
Definition: main.h:20
HRESULT hr
Definition: delayimp.cpp:582
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1239
static HRESULT unregister_dmo_from_category(const WCHAR *dmoW, const WCHAR *catW, HKEY categories)
Definition: dmoreg.c:211
GLuint index
Definition: glext.h:6031
GLenum GLsizei len
Definition: glext.h:6722
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1022