/********************************************************************** * DEVENUM_IClassFactory_AddRef (also IUnknown) */ static ULONG WINAPI DEVENUM_IClassFactory_AddRef(LPCLASSFACTORY iface) { TRACE("\n"); DEVENUM_LockModule(); return 2; /* non-heap based object */ }
/********************************************************************** * DEVENUM_ICreateDevEnum_AddRef (also IUnknown) */ static ULONG WINAPI DEVENUM_ICreateDevEnum_AddRef(ICreateDevEnum * iface) { TRACE("\n"); DEVENUM_LockModule(); return 2; /* non-heap based object */ }
static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag) { RegPropBagImpl * rpb = CoTaskMemAlloc(sizeof(RegPropBagImpl)); if (!rpb) return E_OUTOFMEMORY; rpb->IPropertyBag_iface.lpVtbl = &IPropertyBag_Vtbl; rpb->ref = 1; rpb->hkey = hkey; *ppBag = &rpb->IPropertyBag_iface; DEVENUM_LockModule(); return S_OK; }
/********************************************************************** * DEVENUM_IClassFactory_LockServer */ static HRESULT WINAPI DEVENUM_IClassFactory_LockServer( LPCLASSFACTORY iface, BOOL fLock) { TRACE("\n"); if (fLock) DEVENUM_LockModule(); else DEVENUM_UnlockModule(); return S_OK; }
HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker) { EnumMonikerImpl * pEnumMoniker = CoTaskMemAlloc(sizeof(EnumMonikerImpl)); if (!pEnumMoniker) return E_OUTOFMEMORY; pEnumMoniker->IEnumMoniker_iface.lpVtbl = &IEnumMoniker_Vtbl; pEnumMoniker->ref = 1; pEnumMoniker->index = 0; pEnumMoniker->hkey = hkey; *ppEnumMoniker = &pEnumMoniker->IEnumMoniker_iface; DEVENUM_LockModule(); return S_OK; }
MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void) { MediaCatMoniker * pMoniker = NULL; pMoniker = CoTaskMemAlloc(sizeof(MediaCatMoniker)); if (!pMoniker) return NULL; pMoniker->IMoniker_iface.lpVtbl = &IMoniker_Vtbl; pMoniker->ref = 0; pMoniker->hkey = NULL; DEVENUM_IMediaCatMoniker_AddRef(&pMoniker->IMoniker_iface); DEVENUM_LockModule(); return pMoniker; }
HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, HKEY special_hkey, IEnumMoniker ** ppEnumMoniker) { EnumMonikerImpl * pEnumMoniker = CoTaskMemAlloc(sizeof(EnumMonikerImpl)); if (!pEnumMoniker) return E_OUTOFMEMORY; pEnumMoniker->IEnumMoniker_iface.lpVtbl = &IEnumMoniker_Vtbl; pEnumMoniker->ref = 1; pEnumMoniker->index = 0; pEnumMoniker->hkey = hkey; pEnumMoniker->special_hkey = special_hkey; *ppEnumMoniker = &pEnumMoniker->IEnumMoniker_iface; if(RegQueryInfoKeyW(pEnumMoniker->hkey, NULL, NULL, NULL, &pEnumMoniker->subkey_cnt, NULL, NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) pEnumMoniker->subkey_cnt = 0; DEVENUM_LockModule(); return S_OK; }