33 unsigned int max_capacity, new_capacity;
36 if (
count <= *capacity)
39 max_capacity = ~0
u /
size;
40 if (
count > max_capacity)
43 new_capacity =
max(8, *capacity);
44 while (new_capacity <
count && new_capacity <= max_capacity / 2)
46 if (new_capacity <
count)
49 if (!(new_elements =
realloc(*elements, new_capacity *
size)))
51 ERR(
"Failed to allocate memory.\n");
55 *elements = new_elements;
56 *capacity = new_capacity;
89 IPropertyBag_AddRef(iface);
164 }
while (input_count ==
count || output_count ==
count);
166 if (!(reg_types =
malloc(2 *
count *
sizeof(*reg_types))))
172 for (
i = 0;
i < input_count; ++
i)
174 reg_types[
i].clsMajorType = &
types[
i].type;
175 reg_types[
i].clsMinorType = &
types[
i].subtype;
177 for (
i = 0;
i < output_count; ++
i)
190 reg_filter.
dwMerit = MERIT_NORMAL + 0x800;
217 wcscpy(
path,
L"Software\\Microsoft\\ActiveMovie\\devenum\\");
258 WARN(
"Invalid type %s.\n", debugstr_vt(
V_VT(
var)));
269 WARN(
"Invalid type %s.\n", debugstr_vt(
V_VT(
var)));
284 WARN(
"Invalid type %s.\n", debugstr_vt(
V_VT(
var)));
337 wcscpy(
path,
L"Software\\Microsoft\\ActiveMovie\\devenum\\");
376 WARN(
"Unhandled type %s.\n", debugstr_vt(
V_VT(
var)));
411 IMoniker_AddRef(iface);
425 TRACE(
"%p increasing refcount to %lu.\n",
moniker, refcount);
435 TRACE(
"%p decreasing refcount to %lu.\n",
This, refcount);
451 if (pClassID ==
NULL)
454 *pClassID = CLSID_CDeviceMoniker;
461 FIXME(
"(%p)->(): stub\n", iface);
468 FIXME(
"(%p)->(%p): stub\n", iface, pStm);
475 FIXME(
"(%p)->(%p, %s): stub\n", iface, pStm, fClearDirty ?
"true" :
"false");
482 FIXME(
"(%p)->(%p): stub\n", iface, pcbSize);
499 TRACE(
"moniker %p, bind_ctx %p, left %p, iid %s, out %p.\n",
512 CLSCTX_INPROC_SERVER, &IID_IDMOWrapperFilter, (
void **)&wrapper)))
517 hr = IDMOWrapperFilter_QueryInterface(wrapper, iid,
out);
519 IDMOWrapperFilter_Release(wrapper);
539 IPersistPropertyBag_Release(persist_bag);
543 hr = IUnknown_QueryInterface(unk, iid,
out);
545 IUnknown_Release(unk);
564 static DWORD reported;
567 FIXME(
"ignoring IBindCtx %p\n", pbc);
587 TRACE(
"moniker %p, bind_ctx %p, how_far %#lx, left %p, reduced %p.\n",
588 moniker, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced);
592 *ppmkReduced = iface;
600 FIXME(
"(%p)->(%p, %s, %p): stub\n", iface, pmkRight, fOnlyIfNotGeneric ?
"true" :
"false", ppmkComposite);
603 *ppmkComposite =
NULL;
611 FIXME(
"(%p)->(%s, %p): stub\n", iface, fForward ?
"true" :
"false", ppenumMoniker);
613 *ppenumMoniker =
NULL;
621 LPOLESTR this_name, other_name;
625 TRACE(
"(%p)->(%p)\n", iface, pmkOtherMoniker);
627 if (!pmkOtherMoniker)
630 IMoniker_GetClassID(pmkOtherMoniker, &
clsid);
648 IBindCtx_Release(
bind);
654 TRACE(
"(%p)->(%p)\n", iface, pdwHash);
664 FIXME(
"(%p)->(%p, %p, %p): stub\n", iface, pbc, pmkToLeft, pmkNewlyRunning);
672 TRACE(
"(%p)->(%p, %p, %p)\n", iface, pbc, pmkToLeft, pFileTime);
682 TRACE(
"(%p)->(%p)\n", iface, ppmk);
692 TRACE(
"(%p)->(%p, %p)\n", iface, pmkOtherMoniker, ppmkPrefix);
702 TRACE(
"(%p)->(%p, %p)\n", iface, pmkOther, ppmkRelPath);
704 *ppmkRelPath = pmkOther;
710 IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
715 TRACE(
"(%p)->(%p, %p, %p)\n", iface, pbc, pmkToLeft, ppszDisplayName);
717 *ppszDisplayName =
NULL;
747 *ppszDisplayName =
buffer;
754 FIXME(
"(%p)->(%p, %p, %s, %p, %p)\n", iface, pbc, pmkToLeft,
debugstr_w(pszDisplayName), pchEaten, ppmkOut);
764 TRACE(
"(%p)->(%p)\n", iface, pdwMksys);
800 if (!(
object =
calloc(1,
sizeof(*
object))))
808 object->class = *
class;
809 object->has_class = !!
class;
819 if (!(
object =
calloc(1,
sizeof(*
object))))
827 object->class = *
class;
828 object->has_class = !!
class;
838 if (!(
object =
calloc(1,
sizeof(*
object))))
845 object->class =
class;
846 object->clsid =
clsid;
867 IEnumMoniker_AddRef(iface);
881 TRACE(
"%p increasing refcount to %lu.\n", enumerator, refcount);
891 TRACE(
"%p decreasing refcount to %lu.\n",
This, refcount);
896 IEnumDMO_Release(
This->dmo_enum);
898 IEnumDMO_Release(
This->dmo_enum2);
937 TRACE(
"enumerator %p, count %lu, monikers %p, ret_count %p.\n",
This, celt, rgelt, pceltFetched);
939 while (fetched < celt)
974 TRACE(
"Returning %lu monikers.\n", fetched);
977 *pceltFetched = fetched;
989 TRACE(
"enumerator %p, count %lu.\n",
This, celt);
996 if (
This->dmo_enum && IEnumDMO_Skip(
This->dmo_enum, 1) ==
S_OK)
998 else if (
This->dmo_enum2 && IEnumDMO_Skip(
This->dmo_enum2, 1) ==
S_OK)
1021 TRACE(
"(%p)->()\n", iface);
1024 IEnumDMO_Reset(
This->dmo_enum);
1025 if (
This->dmo_enum2)
1026 IEnumDMO_Reset(
This->dmo_enum2);
1035 FIXME(
"(%p)->(%p): stub\n", iface, ppenum);
1059 if (!(
object =
calloc(1,
sizeof(*
object))))
1064 object->class = *
class;
1070 object->sw_key =
NULL;
1072 wcscpy(
buffer,
L"Software\\Microsoft\\ActiveMovie\\devenum\\");
1075 object->cm_key =
NULL;
1077 if (
IsEqualGUID(
class, &CLSID_LegacyAmFilterCategory))
1080 object->dmo_enum =
NULL;
1082 object->dmo_enum2 =
NULL;
1087 object->dmo_enum =
NULL;
1090 *
out = &
object->IEnumMoniker_iface;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
HRESULT create_filter_data(VARIANT *var, REGFILTER2 *rgf)
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)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define ERROR_NO_MORE_ITEMS
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
static wchar_t * wcsdup(const wchar_t *str)
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
HRESULT WINAPI DMOEnum(REFGUID category, DWORD flags, DWORD cInTypes, const DMO_PARTIAL_MEDIATYPE *pInTypes, DWORD cOutTypes, const DMO_PARTIAL_MEDIATYPE *pOutTypes, IEnumDMO **ppEnum)
HRESULT WINAPI DMOGetName(REFCLSID clsidDMO, WCHAR name[80])
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)
static const char * debugstr_variant(const VARIANT *var)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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
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 * u
#define memcpy(s1, s2, n)
#define KEY_CREATE_SUB_KEY
#define KEY_ENUMERATE_SUB_KEYS
#define DEFAULT_UNREACHABLE
HRESULT WINAPI CreateBindCtx(DWORD reserved, IBindCtx **bind_context)
BSTR WINAPI SysAllocString(LPCOLESTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
const GUID IID_IPropertyBag
const GUID IID_IEnumMoniker
const GUID IID_IPersistStream
const GUID IID_IPersistPropertyBag
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualCLSID(rclsid1, rclsid2)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
IEnumMoniker IEnumMoniker_iface
const REGFILTERPINS2 * rgPins2
const REGPINTYPES * lpMediaType
IPropertyBag IPropertyBag_iface
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define MK_S_REDUCED_TO_SELF
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT