ReactOS  0.4.15-dev-1074-gffc96d2
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_MEDIATYPEPDMO_PARTIAL_MEDIATYPE
 

Enumerations

enum  DMO_REGISTER_FLAGS { DMO_REGISTERF_IS_KEYED = 1 }
 
enum  DMO_ENUM_FLAGS { 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 

Definition at line 35 of file dmoreg.h.

◆ DMO_REGISTER_FLAGS

Enumerator
DMO_REGISTERF_IS_KEYED 

Definition at line 30 of file dmoreg.h.

Function Documentation

◆ DEFINE_GUID() [1/10]

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

◆ DEFINE_GUID() [2/10]

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

◆ DEFINE_GUID() [3/10]

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

◆ DEFINE_GUID() [4/10]

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

◆ 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_VIDEO_EFFECT  ,
0xd990ee14  ,
0x776c  ,
0x4723  ,
0xbe  ,
0x46  ,
0x3d  ,
0xa2  ,
0xf5  ,
0x6f  ,
0x10  ,
0xb9   
)

◆ DEFINE_GUID() [7/10]

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

◆ DEFINE_GUID() [8/10]

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

◆ DEFINE_GUID() [9/10]

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

◆ DEFINE_GUID() [10/10]

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

◆ DMOEnum()

Definition at line 732 of file dmoreg.c.

740 {
741  TRACE("%s 0x%08x %d %p %d %p %p\n", debugstr_guid(category), flags, cInTypes, pInTypes,
742  cOutTypes, pOutTypes, ppEnum);
743 
744  if (TRACE_ON(msdmo))
745  {
746  DWORD i;
747  if (cInTypes)
748  {
749  for (i = 0; i < cInTypes; i++)
750  TRACE("intype %d - type %s, subtype %s\n", i, debugstr_guid(&pInTypes[i].type),
751  debugstr_guid(&pInTypes[i].subtype));
752  }
753 
754  if (cOutTypes) {
755  for (i = 0; i < cOutTypes; i++)
756  TRACE("outtype %d - type %s, subtype %s\n", i, debugstr_guid(&pOutTypes[i].type),
757  debugstr_guid(&pOutTypes[i].subtype));
758  }
759  }
760 
761  return IEnumDMO_Constructor(category, flags, cInTypes,
762  pInTypes, cOutTypes, pOutTypes, ppEnum);
763 }
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
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
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:391
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
#define TRACE_ON(x)
Definition: compat.h:75

Referenced by create_EnumMoniker().

◆ DMOGetName()

HRESULT WINAPI DMOGetName ( REFCLSID  ,
WCHAR  [80] 
)

◆ DMOGetTypes()

HRESULT WINAPI DMOGetTypes ( REFCLSID  ,
ULONG  ,
ULONG ,
DMO_PARTIAL_MEDIATYPE ,
ULONG  ,
ULONG ,
DMO_PARTIAL_MEDIATYPE  
)

Definition at line 857 of file dmoreg.c.

864 {
865  HKEY root,hkey;
866  HRESULT ret = S_OK;
867  WCHAR szguid[64];
868 
869  TRACE ("(%s,%u,%p,%p,%u,%p,%p)\n", debugstr_guid(clsidDMO), ulInputTypesRequested,
870  pulInputTypesSupplied, pInputTypes, ulOutputTypesRequested, pulOutputTypesSupplied,
871  pOutputTypes);
872 
874  KEY_READ, &root))
875  return E_FAIL;
876 
877  if (ERROR_SUCCESS != RegOpenKeyExW(root,GUIDToString(szguid,clsidDMO) , 0,
878  KEY_READ, &hkey))
879  {
880  RegCloseKey(root);
881  return E_FAIL;
882  }
883 
884  if (ulInputTypesRequested > 0)
885  {
886  ret = read_types(hkey, szDMOInputType, pulInputTypesSupplied, ulInputTypesRequested, pInputTypes );
887  }
888  else
889  *pulInputTypesSupplied = 0;
890 
891  if (ulOutputTypesRequested > 0)
892  {
893  HRESULT ret2;
894  ret2 = read_types(hkey, szDMOOutputType, pulOutputTypesSupplied, ulOutputTypesRequested, pOutputTypes );
895 
896  if (ret == S_OK)
897  ret = ret2;
898  }
899  else
900  *pulOutputTypesSupplied = 0;
901 
902  return ret;
903 }
static const WCHAR szDMORootKey[]
Definition: dmoreg.c:37
#define ERROR_SUCCESS
Definition: deptool.c:10
#define KEY_READ
Definition: nt_native.h:1023
struct _root root
#define E_FAIL
Definition: ddrawi.h:102
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
static const WCHAR szDMOOutputType[]
Definition: dmoreg.c:48
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
static const WCHAR szDMOInputType[]
Definition: dmoreg.c:43
int ret
static HRESULT read_types(HKEY root, LPCWSTR key, ULONG *supplied, ULONG requested, DMO_PARTIAL_MEDIATYPE *types)
Definition: dmoreg.c:778
static LPWSTR GUIDToString(LPWSTR lpwstr, REFGUID lpcguid)
Definition: dmoreg.c:109
#define S_OK
Definition: intsafe.h:51
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

◆ DMORegister()

Definition at line 183 of file dmoreg.c.

193 {
194  WCHAR szguid[64];
195  HRESULT hres;
196  HKEY hrkey = 0;
197  HKEY hkey = 0;
198  HKEY hckey = 0;
199  HKEY hclskey = 0;
200  LONG ret;
201 
202  TRACE("%s %s %s\n", debugstr_w(szName), debugstr_guid(clsidDMO), debugstr_guid(guidCategory));
203 
204  if (IsEqualGUID(guidCategory, &GUID_NULL))
205  return E_INVALIDARG;
206 
209  if (ret)
210  return E_FAIL;
211 
212  /* Create clsidDMO key under MediaObjects */
213  ret = RegCreateKeyExW(hrkey, GUIDToString(szguid, clsidDMO), 0, NULL,
215  if (ret)
216  goto lend;
217 
218  /* Set default Name value */
219  ret = RegSetValueExW(hkey, NULL, 0, REG_SZ, (const BYTE*) szName,
220  (lstrlenW(szName) + 1) * sizeof(WCHAR));
221 
222  /* Set InputTypes */
223  hres = write_types(hkey, szDMOInputType, pInTypes, cInTypes);
224 
225  /* Set OutputTypes */
226  hres = write_types(hkey, szDMOOutputType, pOutTypes, cOutTypes);
227 
229  {
230  /* Create Keyed key */
231  ret = RegCreateKeyExW(hkey, szDMOKeyed, 0, NULL,
233  if (ret)
234  goto lend;
235  RegCloseKey(hckey);
236  }
237 
238  /* Register the category */
241  if (ret)
242  goto lend;
243 
244  RegCloseKey(hkey);
245 
246  ret = RegCreateKeyExW(hckey, GUIDToString(szguid, guidCategory), 0, NULL,
248  if (ret)
249  goto lend;
250  ret = RegCreateKeyExW(hkey, GUIDToString(szguid, clsidDMO), 0, NULL,
252  if (ret)
253  goto lend;
254 
255 lend:
256  if (hkey)
257  RegCloseKey(hkey);
258  if (hckey)
259  RegCloseKey(hckey);
260  if (hclskey)
261  RegCloseKey(hclskey);
262  if (hrkey)
263  RegCloseKey(hrkey);
264 
266  TRACE(" hresult=0x%08x\n", hres);
267  return hres;
268 }
static const WCHAR szDMORootKey[]
Definition: dmoreg.c:37
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE *types, DWORD count)
Definition: dmoreg.c:140
#define lstrlenW
Definition: compat.h:498
#define E_FAIL
Definition: ddrawi.h:102
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:1091
static const WCHAR szDMOKeyed[]
Definition: dmoreg.c:53
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
long LONG
Definition: pedump.c:60
static const WCHAR szDMOOutputType[]
Definition: dmoreg.c:48
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
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:4895
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
static const WCHAR szDMOCategories[]
Definition: dmoreg.c:58
static const WCHAR szDMOInputType[]
Definition: dmoreg.c:43
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define GUID_NULL
Definition: ks.h:106
unsigned char BYTE
Definition: xxhash.c:193
static LPWSTR GUIDToString(LPWSTR lpwstr, REFGUID lpcguid)
Definition: dmoreg.c:109
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
static const WCHAR szName[]
Definition: msipriv.h:1194
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
#define REG_SZ
Definition: layer.c:22

Referenced by test_dmo().

◆ DMOUnregister()

HRESULT WINAPI DMOUnregister ( REFCLSID  ,
REFGUID   
)

Definition at line 290 of file dmoreg.c.

291 {
292  HKEY rootkey = 0, categorieskey = 0;
293  WCHAR dmoW[64], catW[64];
294  HRESULT hr = S_FALSE;
295  LONG ret;
296 
297  TRACE("%s %s\n", debugstr_guid(dmo), debugstr_guid(category));
298 
300  if (ret)
301  return S_FALSE;
302 
303  GUIDToString(dmoW, dmo);
304  RegDeleteKeyW(rootkey, dmoW);
305 
306  /* open 'Categories' */
307  ret = RegOpenKeyExW(rootkey, szDMOCategories, 0, KEY_WRITE|KEY_ENUMERATE_SUB_KEYS, &categorieskey);
308  RegCloseKey(rootkey);
309  if (ret)
310  {
312  goto lend;
313  }
314 
315  /* remove from all categories */
317  {
318  DWORD index = 0, len = ARRAY_SIZE(catW);
319 
320  while (!RegEnumKeyExW(categorieskey, index++, catW, &len, NULL, NULL, NULL, NULL))
321  hr = unregister_dmo_from_category(dmoW, catW, categorieskey);
322  }
323  else
324  {
325  GUIDToString(catW, category);
326  hr = unregister_dmo_from_category(dmoW, catW, categorieskey);
327  }
328 
329 lend:
330  if (categorieskey)
331  RegCloseKey(categorieskey);
332 
333  return hr;
334 }
static const WCHAR dmoW[]
static const WCHAR szDMORootKey[]
Definition: dmoreg.c:37
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1237
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
long LONG
Definition: pedump.c:60
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
static HRESULT unregister_dmo_from_category(const WCHAR *dmoW, const WCHAR *catW, HKEY categories)
Definition: dmoreg.c:270
GLuint index
Definition: glext.h:6031
#define debugstr_guid
Definition: kernel32.h:35
#define KEY_WRITE
Definition: nt_native.h:1031
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
static const WCHAR szDMOCategories[]
Definition: dmoreg.c:58
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define GUID_NULL
Definition: ks.h:106
static LPWSTR GUIDToString(LPWSTR lpwstr, REFGUID lpcguid)
Definition: dmoreg.c:109
#define ARRAY_SIZE(a)
Definition: main.h:24
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3366
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
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:2527
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1019

Referenced by test_dmo().