22 #define NONAMELESSUNION 23 #define NONAMELESSSTRUCT 37 #include "wine/unicode.h" 47 #define ARRAYSIZE(array) (sizeof(array)/sizeof((array)[0])) 80 static const WCHAR wszSlashInstance[] = {
'\\',
'I',
'n',
's',
't',
'a',
'n',
'c',
'e',
'\\',0};
86 static const WCHAR wszFriendlyName[] = {
'F',
'r',
'i',
'e',
'n',
'd',
'l',
'y',
'N',
'a',
'm',
'e',0};
90 static const WCHAR wszFilterDataName[] = {
'F',
'i',
'l',
't',
'e',
'r',
'D',
'a',
't',
'a',0};
96 static const WCHAR wszAllowedMany[] = {
'A',
'l',
'l',
'o',
'w',
'e',
'd',
'M',
'a',
'n',
'y',0};
97 static const WCHAR wszAllowedZero[] = {
'A',
'l',
'l',
'o',
'w',
'e',
'd',
'Z',
'e',
'r',
'o',0};
99 static const WCHAR wszIsRendered[] = {
'I',
's',
'R',
'e',
'n',
'd',
'e',
'r',
'e',
'd',0};
149 if (
v->current +
size >
v->capacity)
152 v->capacity = (
v->capacity +
size) * 2;
154 memcpy(
v->pData, pOldData,
v->current);
191 *
ppv = &
This->IFilterMapper3_iface;
193 *
ppv = &
This->IFilterMapper_iface;
195 *
ppv = &
This->IAMFilterData_iface;
241 return IUnknown_QueryInterface(
This->outer_unk,
riid,
ppv);
248 return IUnknown_AddRef(
This->outer_unk);
255 return IUnknown_Release(
This->outer_unk);
261 IFilterMapper3 * iface,
263 DWORD dwCategoryMerit,
285 strcatW(wszKeyName, wClsidAMCat);
287 strcatW(wszKeyName, wClsidCategory);
319 IFilterMapper3 * iface,
320 const CLSID *pclsidCategory,
332 pclsidCategory = &CLSID_LegacyAmFilterCategory;
339 strcatW(wszKeyName, wClsidCategory);
342 strcatW(wszKeyName, szInstance);
436 rrfp.
bCategory = rgPin2.clsPinCategory ? 1 : 0;
449 for (
j = 0;
j < rgPin2.nMediaTypes;
j++)
471 for (
j = 0;
j < rgPin2.nMediums;
j++)
514 FIXME(
"Filter registry version %d not supported\n", prrf->
dwVersion);
521 TRACE(
"version = %d, merit = %x, #pins = %d, unused = %x\n",
529 pCurrent +=
sizeof(
struct REG_RF);
542 TRACE(
"\tpin[%d]: flags = %x, instances = %d, media types = %d, mediums = %d\n",
549 pCurrent +=
sizeof(
struct REG_RFP);
554 pCurrent +=
sizeof(
DWORD);
560 if (rgPins2[
i].nMediaTypes > 0)
561 lpMediaType =
CoTaskMemAlloc(rgPins2[
i].nMediaTypes *
sizeof(*lpMediaType));
579 lpMediaType[
j].clsMajorType = clsMajor;
580 lpMediaType[
j].clsMinorType = clsMinor;
582 pCurrent +=
sizeof(*prt);
585 if (rgPins2[
i].nMediums > 0)
627 IFilterMapper3 * iface,
631 const CLSID *pclsidCategory,
642 static const WCHAR wszDevice[] = {
'@',
'd',
'e',
'v',
'i',
'c',
'e',
':',
's',
'w',
':',0};
649 TRACE(
"(%s, %s, %p, %s, %s, %p)\n",
670 regfilter2.u.s2.
rgPins2 = pregfp2;
671 for (
i = 0;
i < prf2->u.s1.
cPins;
i++)
693 FIXME(
"dwVersion other that 1 or 2 not supported at the moment\n");
703 pclsidCategory = &CLSID_LegacyAmFilterCategory;
709 nameLen =
sizeof(wszDevice)/
sizeof(wszDevice[0]) +
CHARS_IN_GUID - 1 + 1;
712 nameLen +=
strlenW(szInstance);
720 strcpyW(pwszParseName, wszDevice);
721 pCurrent +=
strlenW(wszDevice);
732 strcpyW(pCurrent+1, szInstance);
740 strcpyW(pCurrent+1, szClsidTemp);
751 hr = IParseDisplayName_ParseDisplayName(pParser, pBindCtx, pwszParseName, &ulEaten, &pMoniker);
754 IBindCtx_Release(pBindCtx);
756 IParseDisplayName_Release(pParser);
784 ERR(
"Couldn't create SAFEARRAY\n");
812 IPropertyBag_Release(pPropBag);
817 *ppMoniker = pMoniker;
819 IMoniker_Release(pMoniker);
823 TRACE(
"-- returning %x\n",
hr);
834 const GUID * pMatchTypes)
839 if ((nMatchTypes == 0) && (nPinTypes > 0))
842 for (
j = 0;
j < nPinTypes;
j++)
845 for (
i = 0;
i < nMatchTypes*2;
i+=2)
879 IFilterMapper3 * iface,
886 const GUID *pInputTypes,
888 const CLSID *pPinCategoryIn,
892 const GUID *pOutputTypes,
894 const CLSID *pPinCategoryOut)
902 TRACE(
"(%p, %x, %s, %x, %s, %d, %p, %p, %p, %s, %s, %p, %p, %p)\n",
905 bExactMatch ?
"true" :
"false",
907 bInputNeeded ?
"true" :
"false",
912 bRender ?
"true" :
"false",
913 bOutputNeeded ?
"true" :
"false",
929 hr = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &CLSID_ActiveMovieCategories, &pEnumCat, 0);
931 ICreateDevEnum_Release(pCreateDevEnum);
935 while (IEnumMoniker_Next(pEnumCat, 1, &pMonikerCat,
NULL) ==
S_OK)
972 hrSub = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &clsidCat, &pEnum, 0);
976 while (IEnumMoniker_Next(pEnum, 1, &pMoniker,
NULL) ==
S_OK)
983 BOOL bInputMatch = !bInputNeeded;
984 BOOL bOutputMatch = !bOutputNeeded;
1027 for (
i = 0; (
i < rf2.u.s2.
cPins2) && (!bInputMatch || !bOutputMatch);
i++)
1038 if (bInputMatch && bOutputMatch)
1048 IPropertyBag_Release(pPropBag);
1051 IEnumMoniker_Release(pEnum);
1057 IPropertyBag_Release(pPropBagCat);
1058 IMoniker_Release(pMonikerCat);
1074 for (
i = 0;
i < nMonikerCount;
i++)
1084 IEnumMoniker_Release(pEnumCat);
1085 ICreateDevEnum_Release(pCreateDevEnum);
1092 TRACE(
"(%p, %p)\n", iface, ppEnum);
1095 return CoCreateInstance(&CLSID_SystemDeviceEnum,
NULL, CLSCTX_INPROC, &IID_ICreateDevEnum, (
void**)ppEnum);
1127 return IUnknown_AddRef(
This->outer_unk);
1134 return IUnknown_Release(
This->outer_unk);
1140 IFilterMapper * iface,
1161 TRACE(
"(%p/%p)->(%p, %x, %s, %s, %s, %s, %s, %s, %s)\n",
1166 bInputNeeded ?
"true" :
"false",
1169 bRender ?
"true" :
"false",
1170 bOutputNeeded ?
"true" :
"false",
1174 InputType[0] = clsInMaj;
1175 InputType[1] = clsInSub;
1176 OutputType[0] = clsOutMaj;
1177 OutputType[1] = clsOutSub;
1181 hr = IFilterMapper3_EnumMatchingFilters(&
This->IFilterMapper3_iface, &ppEnumMoniker, 0,
TRUE,
1188 while(IEnumMoniker_Next(ppEnumMoniker, 1, &IMon, &nb) ==
S_OK)
1190 IMoniker_Release(IMon);
1196 IEnumMoniker_Release(ppEnumMoniker);
1203 IEnumMoniker_Release(ppEnumMoniker);
1208 IEnumMoniker_Reset(ppEnumMoniker);
1209 while(IEnumMoniker_Next(ppEnumMoniker, 1, &IMon, &nb) ==
S_OK)
1247 IPropertyBag_Release(pPropBagCat);
1248 IMoniker_Release(IMon);
1260 IEnumMoniker_Release(ppEnumMoniker);
1281 strcatW(wszKeyName, wszClsid);
1297 strcatW(wszKeyName, wszClsid);
1325 IFilterMapper * iface,
1332 CLSID ConnectsToFilter,
1340 WCHAR * wszPinsKeyName;
1343 TRACE(
"(%p)->(%s, %s, %d, %d, %d, %d, %s, %s)\n", iface,
debugstr_guid(&
Filter),
debugstr_w(
szName), bRendered,
1351 strcatW(wszKeyName, wszClsid);
1360 if (!wszPinsKeyName)
1420 IFilterMapper * iface,
1432 WCHAR * wszTypesKey;
1461 strcatW(wszTypesKey, wszClsid);
1478 strcpyW(wszKeyName, wszClsidMajorType);
1480 strcatW(wszKeyName, wszClsidSubType);
1524 strcatW(wszKeyName, wszClsid);
1566 WCHAR * wszPinNameKey;
1579 strcatW(wszKeyName, wszClsid);
1633 return IUnknown_QueryInterface(
This->outer_unk,
riid,
ppv);
1640 return IUnknown_AddRef(
This->outer_unk);
1647 return IUnknown_Release(
This->outer_unk);
1653 BYTE **ppRegFilter2)
1664 *ppRegFilter2 = (
BYTE *)&prf2;
1670 *ppRegFilter2 =
NULL;
1678 BYTE **pRegFilterData,
1683 TRACE(
"(%p/%p)->(%p, %p, %p)\n",
This, iface, prf2, pRegFilterData, pcb);
1700 TRACE(
"(%p, %p)\n", pUnkOuter, ppObj);
1719 TRACE(
"-- created at %p\n", pFM2impl);
1729 TRACE(
"(%p, %p)\n", pUnkOuter, ppObj);
1735 *ppObj = &pFM2impl->IFilterMapper_iface;
static ULONG WINAPI FilterMapper_Release(IFilterMapper *iface)
#define HRESULT_FROM_WIN32(x)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
static HRESULT WINAPI FilterMapper_RegisterFilterInstance(IFilterMapper *iface, CLSID clsid, LPCWSTR szName, CLSID *MRId)
static HRESULT WINAPI FilterMapper3_CreateCategory(IFilterMapper3 *iface, REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR szDescription)
static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(IFilterMapper3 *iface, IEnumMoniker **ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit, BOOL bInputNeeded, DWORD cInputTypes, const GUID *pInputTypes, const REGPINMEDIUM *pMedIn, const CLSID *pPinCategoryIn, BOOL bRender, BOOL bOutputNeeded, DWORD cOutputTypes, const GUID *pOutputTypes, const REGPINMEDIUM *pMedOut, const CLSID *pPinCategoryOut)
static HRESULT FM2_WriteFilterData(const REGFILTER2 *prf2, BYTE **ppData, ULONG *pcbData)
static const WCHAR wszDirection[]
static const WCHAR wszSlashInstance[]
static const IFilterMapperVtbl fmvtbl
static FilterMapper3Impl * impl_from_IUnknown(IUnknown *iface)
static HRESULT WINAPI AMFilterData_QueryInterface(IAMFilterData *iface, REFIID riid, LPVOID *ppv)
const REGFILTERPINS2 * rgPins2
const REGPINTYPES * lpMediaType
static HRESULT WINAPI FilterMapper3_RegisterFilter(IFilterMapper3 *iface, REFCLSID clsidFilter, LPCWSTR szName, IMoniker **ppMoniker, const CLSID *pclsidCategory, const OLECHAR *szInstance, const REGFILTER2 *prf2)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
static int mm_compare(const void *left, const void *right)
static FilterMapper3Impl * impl_from_IFilterMapper3(IFilterMapper3 *iface)
HRESULT IEnumRegFiltersImpl_Construct(REGFILTER *pInRegFilters, const ULONG size, IEnumRegFilters **ppEnum)
static ULONG WINAPI Inner_AddRef(IUnknown *iface)
static const WCHAR wszAllowedZero[]
static HRESULT WINAPI FilterMapper3_QueryInterface(IFilterMapper3 *iface, REFIID riid, LPVOID *ppv)
void WINAPI VariantInit(VARIANTARG *pVarg)
static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper *iface, CLSID clsid, LPCWSTR szName, DWORD dwMerit)
static int find_data(const struct Vector *v, const BYTE *pData, int size)
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)
_In_ DWORD _In_ DWORD dwOffset
static const WCHAR wszPins[]
static const WCHAR wszSlash[]
static const IAMFilterDataVtbl AMFilterDataVtbl
IAMFilterData IAMFilterData_iface
LONG WINAPI RegCloseKey(HKEY hKey)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
const CLSID * clsMinorType
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
static ULONG WINAPI Inner_Release(IUnknown *iface)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
static HRESULT FM2_WriteFriendlyName(IPropertyBag *pPropBag, LPCWSTR szName)
static const IUnknownVtbl IInner_VTable
const GUID IID_IPropertyBag
static HRESULT WINAPI FilterMapper_UnregisterFilter(IFilterMapper *iface, CLSID Filter)
BSTR WINAPI SysAllocString(LPCOLESTR str)
IFilterMapper3 IFilterMapper3_iface
const CLSID * clsPinCategory
const REGFILTERPINS * rgPins
const GUID IID_IParseDisplayName
static HRESULT WINAPI FilterMapper_UnregisterFilterInstance(IFilterMapper *iface, CLSID MRId)
#define ERROR_FILE_NOT_FOUND
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
HRESULT FilterMapper_create(IUnknown *pUnkOuter, LPVOID *ppObj)
static HRESULT WINAPI FilterMapper3_GetICreateDevEnum(IFilterMapper3 *iface, ICreateDevEnum **ppEnum)
IFilterMapper IFilterMapper_iface
#define REG_OPTION_NON_VOLATILE
static HRESULT WINAPI FilterMapper_RegisterPin(IFilterMapper *iface, CLSID Filter, LPCWSTR szName, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, CLSID ConnectsToFilter, LPCWSTR ConnectsToPin)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
HRESULT FilterMapper2_create(IUnknown *pUnkOuter, LPVOID *ppObj)
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
static FilterMapper3Impl * impl_from_IAMFilterData(IAMFilterData *iface)
static const WCHAR wszClsidName[]
HRESULT EnumMonikerImpl_Create(IMoniker **ppMoniker, ULONG nMonikerCount, IEnumMoniker **ppEnum)
static HRESULT WINAPI FilterMapper_RegisterPinType(IFilterMapper *iface, CLSID clsFilter, LPCWSTR szName, CLSID clsMajorType, CLSID clsSubType)
struct FilterMapper3Impl FilterMapper3Impl
static HRESULT WINAPI Inner_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
#define MEDIASUBTYPE_NULL
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
PSDBQUERYRESULT_VISTA PVOID * ppData
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
static const WCHAR wszMeritName[]
static const WCHAR wszFriendlyName[]
static HRESULT WINAPI AMFilterData_ParseFilterData(IAMFilterData *iface, BYTE *pData, ULONG cb, BYTE **ppRegFilter2)
#define InterlockedDecrement
static __inline const char * debugstr_an(const char *s, int n)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
GLsizei const GLfloat * value
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
LSTATUS WINAPI RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey)
static void FM2_DeleteRegFilter(REGFILTER2 *prf2)
static const WCHAR wszTypes[]
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
static ULONG WINAPI AMFilterData_AddRef(IAMFilterData *iface)
static HRESULT WINAPI FilterMapper3_UnregisterFilter(IFilterMapper3 *iface, const CLSID *pclsidCategory, const OLECHAR *szInstance, REFCLSID Filter)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
static HRESULT WINAPI FilterMapper_UnregisterPin(IFilterMapper *iface, CLSID Filter, LPCWSTR Name)
static const IFilterMapper3Vtbl fm3vtbl
#define InterlockedIncrement
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
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
static const WCHAR wszIsRendered[]
static HRESULT WINAPI FilterMapper_QueryInterface(IFilterMapper *iface, REFIID riid, LPVOID *ppv)
static const WCHAR wszFilterDataName[]
static const WCHAR wszAllowedMany[]
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
static const WCHAR wszClsidSlash[]
const REGPINTYPES * lpMediaType
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
const REGPINMEDIUM * lpMedium
static SCRIPT_CACHE SCRIPT_ANALYSIS * psa
static HRESULT FM2_ReadFilterData(BYTE *pData, REGFILTER2 *prf2)
static const WCHAR wszFilter[]
static HMODULE MODULEINFO DWORD cb
static FilterMapper3Impl * impl_from_IFilterMapper(IFilterMapper *iface)
static HRESULT WINAPI FilterMapper_EnumMatchingFilters(IFilterMapper *iface, IEnumRegFilters **ppEnum, DWORD dwMerit, BOOL bInputNeeded, CLSID clsInMaj, CLSID clsInSub, BOOL bRender, BOOL bOutputNeeded, CLSID clsOutMaj, CLSID clsOutSub)
static const WCHAR szName[]
static ULONG WINAPI FilterMapper3_Release(IFilterMapper3 *iface)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
static const WCHAR wszFilterSlash[]
static ULONG WINAPI FilterMapper3_AddRef(IFilterMapper3 *iface)
static int add_data(struct Vector *v, const BYTE *pData, int size)
static BOOL MatchTypes(BOOL bExactMatch, DWORD nPinTypes, const REGPINTYPES *pPinTypes, DWORD nMatchTypes, const GUID *pMatchTypes)
#define HKEY_CLASSES_ROOT
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
static HRESULT WINAPI AMFilterData_CreateFilterData(IAMFilterData *iface, REGFILTER2 *prf2, BYTE **pRegFilterData, ULONG *pcb)
static ULONG WINAPI AMFilterData_Release(IAMFilterData *iface)
static ULONG WINAPI FilterMapper_AddRef(IFilterMapper *iface)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static HRESULT FM2_WriteClsid(IPropertyBag *pPropBag, REFCLSID clsid)
static void delete_vector(struct Vector *v)
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
static const WCHAR szDescription[]
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
WINE_DEFAULT_DEBUG_CHANNEL(quartz)
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)