35 #define MSDMO_MAJOR_VERSION 6 39 'D',
'i',
'r',
'e',
'c',
't',
'S',
'h',
'o',
'w',
'\\',
40 'M',
'e',
'd',
'i',
'a',
'O',
'b',
'j',
'e',
'c',
't',
's',0
45 'I',
'n',
'p',
'u',
't',
'T',
'y',
'p',
'e',
's',0
50 'O',
'u',
't',
'p',
'u',
't',
'T',
'y',
'p',
'e',
's',0
60 'C',
'a',
't',
'e',
'g',
'o',
'r',
'i',
'e',
's',0
65 '%',
'0',
'8',
'X',
'-',
'%',
'0',
'4',
'X',
'-',
'%',
'0',
'4',
'X',
'-',
'%',
'0',
66 '2',
'X',
'%',
'0',
'2',
'X',
'-',
'%',
'0',
'2',
'X',
'%',
'0',
'2',
'X',
'%',
'0',
'2',
67 'X',
'%',
'0',
'2',
'X',
'%',
'0',
'2',
'X',
'%',
'0',
'2',
'X',0
72 '%',
's',
'\\',
'%',
's',
'\\',
'%',
's',0
77 '%',
's',
'\\',
'%',
's',0
151 HKEY skey1,skey2,skey3;
292 HKEY rootkey = 0, categorieskey = 0;
344 static const INT max_name_len = 80*
sizeof(
WCHAR);
446 TRACE(
"returning %p\n", lpedmo);
479 IEnumDMO_AddRef(iface);
515 DWORD * pcItemsFetched)
530 TRACE(
"(%p)->(%d %p %p %p)\n",
This, cItemsToFetch, pCLSID,
Names, pcItemsFetched);
535 if (!pcItemsFetched && cItemsToFetch > 1)
538 while (
count < cItemsToFetch)
590 for (
i = 0;
i < cInTypes;
i++) {
595 for (
i = 0;
i <
This->cInTypes;
i++)
597 for (
j = 0;
j < cInTypes;
j++)
607 if (i < This->cInTypes)
633 for (
i = 0;
i < cOutTypes;
i++) {
638 for (
i = 0;
i <
This->cOutTypes;
i++)
640 for (
j = 0;
j < cOutTypes;
j++)
650 if (i < This->cOutTypes)
678 if (pcItemsFetched) *pcItemsFetched =
count;
679 if (
count < cItemsToFetch)
694 TRACE(
"(%p)->(%d)\n",
This, cItemsToSkip);
695 This->index += cItemsToSkip;
723 This->cOutTypes,
This->pOutTypes, ppEnum);
742 cOutTypes, pOutTypes, ppEnum);
749 for (
i = 0;
i < cInTypes;
i++)
755 for (
i = 0;
i < cOutTypes;
i++)
762 pInTypes, cOutTypes, pOutTypes, ppEnum);
766 static const IEnumDMOVtbl
edmovt =
824 if (*supplied >= requested)
837 TRACE(
"Adding type %s subtype %s at index %i\n",
858 ULONG ulInputTypesRequested,
859 ULONG* pulInputTypesSupplied,
861 ULONG ulOutputTypesRequested,
862 ULONG* pulOutputTypesSupplied,
870 pulInputTypesSupplied, pInputTypes, ulOutputTypesRequested, pulOutputTypesSupplied,
884 if (ulInputTypesRequested > 0)
889 *pulInputTypesSupplied = 0;
891 if (ulOutputTypesRequested > 0)
900 *pulOutputTypesSupplied = 0;
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
static const WCHAR dmoW[]
static const WCHAR szName[]
static const WCHAR szDMORootKey[]
#define HRESULT_FROM_WIN32(x)
static const WCHAR szToGuidFmt[]
DMO_PARTIAL_MEDIATYPE * pOutTypes
static HRESULT WINAPI IEnumDMO_fnReset(IEnumDMO *iface)
static HRESULT WINAPI IEnumDMO_fnSkip(IEnumDMO *iface, DWORD cItemsToSkip)
static HRESULT WINAPI IEnumDMO_fnNext(IEnumDMO *iface, DWORD cItemsToFetch, CLSID *pCLSID, WCHAR **Names, DWORD *pcItemsFetched)
GLuint GLuint GLsizei count
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
static const WCHAR szGUIDFmt[]
static HRESULT write_types(HKEY hkey, LPCWSTR name, const DMO_PARTIAL_MEDIATYPE *types, DWORD count)
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)
static const WCHAR szDMOKeyed[]
DMO_PARTIAL_MEDIATYPE * pInTypes
static IEnumDMOImpl * impl_from_IEnumDMO(IEnumDMO *iface)
static HRESULT IEnumDMO_Constructor(REFGUID guidCategory, DWORD dwFlags, DWORD cInTypes, const DMO_PARTIAL_MEDIATYPE *pInTypes, DWORD cOutTypes, const DMO_PARTIAL_MEDIATYPE *pOutTypes, IEnumDMO **obj)
static const WCHAR szDMOOutputType[]
static HRESULT WINAPI IEnumDMO_fnQueryInterface(IEnumDMO *iface, REFIID riid, void **ppvObj)
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)
struct _DMO_PARTIAL_MEDIATYPE DMO_PARTIAL_MEDIATYPE
HRESULT WINAPI DMOGetName(REFCLSID clsidDMO, WCHAR name[])
static HRESULT unregister_dmo_from_category(const WCHAR *dmoW, const WCHAR *catW, HKEY categories)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
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 GLint GLint j
#define REG_OPTION_NON_VOLATILE
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static const IEnumDMOVtbl edmovt
HRESULT WINAPI DMOUnregister(REFCLSID dmo, REFGUID category)
static const WCHAR szDMOCategories[]
static const WCHAR szDMOInputType[]
static ULONG WINAPI IEnumDMO_fnRelease(IEnumDMO *iface)
static const WCHAR szCat3Fmt[]
#define InterlockedDecrement
static const WCHAR szCat2Fmt[]
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define MSDMO_MAJOR_VERSION
#define memcpy(s1, s2, n)
static HRESULT read_types(HKEY root, LPCWSTR key, ULONG *supplied, ULONG requested, DMO_PARTIAL_MEDIATYPE *types)
static HRESULT WINAPI IEnumDMO_fnClone(IEnumDMO *iface, IEnumDMO **ppEnum)
static LPWSTR GUIDToString(LPWSTR lpwstr, REFGUID lpcguid)
static BOOL IsMediaTypeEqual(const DMO_PARTIAL_MEDIATYPE *mt1, const DMO_PARTIAL_MEDIATYPE *mt2)
#define InterlockedIncrement
static HRESULT string_to_guid(const WCHAR *string, GUID *guid)
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
HRESULT WINAPI DMOEnum(REFGUID category, DWORD flags, DWORD cInTypes, const DMO_PARTIAL_MEDIATYPE *pInTypes, DWORD cOutTypes, const DMO_PARTIAL_MEDIATYPE *pOutTypes, IEnumDMO **ppEnum)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
WINE_DEFAULT_DEBUG_CHANNEL(msdmo)
static HRESULT dup_partial_mediatype(const DMO_PARTIAL_MEDIATYPE *types, DWORD count, DMO_PARTIAL_MEDIATYPE **ret)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define HKEY_CLASSES_ROOT
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)
GLuint GLuint GLsizei GLenum type
static ULONG WINAPI IEnumDMO_fnAddRef(IEnumDMO *iface)
#define IsEqualCLSID(rclsid1, rclsid2)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
HRESULT WINAPI DMOGetTypes(REFCLSID clsidDMO, ULONG ulInputTypesRequested, ULONG *pulInputTypesSupplied, DMO_PARTIAL_MEDIATYPE *pInputTypes, ULONG ulOutputTypesRequested, ULONG *pulOutputTypesSupplied, DMO_PARTIAL_MEDIATYPE *pOutputTypes)
GLsizei GLenum * categories
#define IsEqualIID(riid1, riid2)
#define KEY_ENUMERATE_SUB_KEYS