85 HKEY clsid_key, class_key, type_key;
103 for (; cCategories; --cCategories, ++rgcatid) {
130 const CATID *rgcatid)
132 WCHAR keyname[68] =
L"CLSID\\";
148 for (; cCategories; --cCategories, ++rgcatid) {
177 FIXME(
"Simplified lcid comparison\n");
204 while (impl_count--) {
210 while (req_count--) {
226 const WCHAR *impl_strings, *req_strings;
263 if (!
wcsicmp(
string, keyname))
break;
289 ICatRegister_AddRef(iface);
295 ICatRegister_AddRef(iface);
331 if (cCategories && rgci ==
NULL)
338 for (; cCategories; --cCategories, ++rgci)
374 if (cCategories && rgcatid ==
NULL)
381 for (; cCategories; --cCategories, ++rgcatid) {
457 LPCATINFORMATION iface,
484 LPCATINFORMATION iface,
499 LPCATINFORMATION iface,
504 WCHAR keyname[60] =
L"Component Categories\\";
519 if (*ppszDesc ==
NULL) {
539 LPCATINFORMATION iface,
544 LPENUMCLSID *ppenumCLSID)
551 if (cImplemented == (
ULONG)-1)
553 if (cRequired == (
ULONG)-1)
556 if (ppenumCLSID ==
NULL ||
557 (cImplemented && rgcatidImpl ==
NULL) ||
561 cRequired, rgcatidReq);
578 LPCATINFORMATION iface,
585 WCHAR keyname[45] =
L"CLSID\\";
595 TRACE(
"Required %lu\n",cRequired);
600 if ((cImplemented && rgcatidImpl ==
NULL) ||
607 cRequired, rgcatidReq);
625 LPCATINFORMATION iface,
627 LPENUMCATID *ppenumCATID)
631 if (rclsid ==
NULL || ppenumCATID ==
NULL)
641 LPCATINFORMATION iface,
643 LPENUMCATID *ppenumCATID)
647 if (rclsid ==
NULL || ppenumCATID ==
NULL)
782 if (
This->key)
while (fetched < celt) {
792 ++(
This->next_index);
801 rgelt->szDescription, 128);
805 rgelt->lcid =
This->lcid;
810 if (pceltFetched) *pceltFetched = fetched;
822 This->next_index += celt;
833 This->next_index = 0;
887 *
ret = &
This->IEnumCATEGORYINFO_iface;
924 IEnumGUID_AddRef(iface);
969 if (
This->key)
while (fetched < celt) {
979 ++(
This->next_index);
995 if (pceltFetched) *pceltFetched = fetched;
1007 This->next_index += celt;
1008 FIXME(
"Never returns S_FALSE\n");
1018 This->next_index = 0;
1081 *
ret = &
This->IEnumGUID_iface;
1119 IEnumGUID_AddRef(iface);
1154 ULONG *pceltFetched)
1163 if (
This->key)
while (fetched < celt) {
1172 ++(
This->next_index);
1181 if (pceltFetched) *pceltFetched = fetched;
1193 This->next_index += celt;
1194 FIXME(
"Never returns S_FALSE\n");
1204 This->next_index = 0;
1264 *
ret = &
This->IEnumGUID_iface;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
static const WCHAR clsidW[]
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
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)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static LSTATUS create_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
static LSTATUS open_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
#define HeapFree(x, y, z)
static HRESULT CATIDEnumGUID_Construct(REFCLSID rclsid, LPCWSTR impl_req, IEnumCATID **ret)
static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_QueryInterface(IEnumCATEGORYINFO *iface, REFIID riid, LPVOID *ppvObj)
static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Clone(IEnumCATEGORYINFO *iface, IEnumCATEGORYINFO **ppenum)
static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_AddRef(IEnumCATEGORYINFO *iface)
static HRESULT WINAPI CATIDEnumGUID_Skip(IEnumGUID *iface, ULONG celt)
static ULONG WINAPI CLSIDEnumGUID_AddRef(IEnumGUID *iface)
static HRESULT WINAPI COMCAT_ICatInformation_QueryInterface(LPCATINFORMATION iface, REFIID riid, LPVOID *ppvObj)
static ULONG WINAPI CATIDEnumGUID_Release(IEnumGUID *iface)
static HRESULT WINAPI CLSIDEnumGUID_QueryInterface(IEnumGUID *iface, REFIID riid, LPVOID *ppvObj)
static ULONG WINAPI CATIDEnumGUID_AddRef(IEnumGUID *iface)
static const WCHAR impl_keyname[]
static HRESULT WINAPI CATIDEnumGUID_Clone(IEnumGUID *iface, IEnumGUID **ppenum)
HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppvObj)
static ULONG WINAPI COMCAT_ICatRegister_AddRef(LPCATREGISTER iface)
static const ICatRegisterVtbl COMCAT_ICatRegister_Vtbl
static HRESULT WINAPI COMCAT_ICatRegister_UnRegisterClassImplCategories(LPCATREGISTER iface, REFCLSID rclsid, ULONG cCategories, CATID *rgcatid)
static const IEnumCATEGORYINFOVtbl COMCAT_IEnumCATEGORYINFO_Vtbl
static HRESULT CLSIDEnumGUID_Construct(struct class_categories *class_categories, IEnumCLSID **ret)
static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Skip(IEnumCATEGORYINFO *iface, ULONG celt)
static HRESULT WINAPI CLSIDEnumGUID_Skip(IEnumGUID *iface, ULONG celt)
static IEnumCATEGORYINFOImpl * impl_from_IEnumCATEGORYINFO(IEnumCATEGORYINFO *iface)
static ULONG WINAPI COMCAT_IEnumCATEGORYINFO_Release(IEnumCATEGORYINFO *iface)
static ComCatMgrImpl COMCAT_ComCatMgr
static HRESULT WINAPI COMCAT_ICatInformation_EnumCategories(LPCATINFORMATION iface, LCID lcid, IEnumCATEGORYINFO **ppenumCatInfo)
static HRESULT WINAPI COMCAT_ICatRegister_RegisterCategories(LPCATREGISTER iface, ULONG cCategories, CATEGORYINFO *rgci)
static CLSID_IEnumGUIDImpl * impl_from_IEnumCLSID(IEnumGUID *iface)
static HRESULT COMCAT_UnRegisterClassCategories(REFCLSID rclsid, LPCWSTR type, ULONG cCategories, const CATID *rgcatid)
static ULONG WINAPI CLSIDEnumGUID_Release(IEnumGUID *iface)
static const WCHAR req_keyname[]
static HRESULT WINAPI COMCAT_ICatInformation_GetCategoryDesc(LPCATINFORMATION iface, REFCATID rcatid, LCID lcid, PWCHAR *ppszDesc)
static CATID_IEnumGUIDImpl * impl_from_IEnumCATID(IEnumGUID *iface)
static HRESULT COMCAT_RegisterClassCategories(REFCLSID rclsid, LPCWSTR type, ULONG cCategories, const CATID *rgcatid)
static HRESULT WINAPI COMCAT_ICatInformation_EnumClassesOfCategories(LPCATINFORMATION iface, ULONG cImplemented, CATID *rgcatidImpl, ULONG cRequired, CATID *rgcatidReq, LPENUMCLSID *ppenumCLSID)
static HRESULT WINAPI COMCAT_ICatRegister_RegisterClassImplCategories(LPCATREGISTER iface, REFCLSID rclsid, ULONG cCategories, CATID *rgcatid)
static ULONG WINAPI COMCAT_ICatInformation_AddRef(LPCATINFORMATION iface)
static HRESULT WINAPI CATIDEnumGUID_Next(IEnumGUID *iface, ULONG celt, GUID *rgelt, ULONG *pceltFetched)
static HRESULT WINAPI COMCAT_ICatRegister_UnRegisterClassReqCategories(LPCATREGISTER iface, REFCLSID rclsid, ULONG cCategories, CATID *rgcatid)
static HRESULT WINAPI COMCAT_ICatRegister_UnRegisterCategories(LPCATREGISTER iface, ULONG cCategories, CATID *rgcatid)
static HRESULT WINAPI COMCAT_ICatInformation_IsClassOfCategories(LPCATINFORMATION iface, REFCLSID rclsid, ULONG cImplemented, CATID *rgcatidImpl, ULONG cRequired, CATID *rgcatidReq)
static const ICatInformationVtbl COMCAT_ICatInformation_Vtbl
static HRESULT COMCAT_GetCategoryDesc(HKEY key, LCID lcid, PWCHAR pszDesc, ULONG buf_wchars)
static const WCHAR comcat_keyname[]
static HRESULT WINAPI CATIDEnumGUID_Reset(IEnumGUID *iface)
static HRESULT EnumCATEGORYINFO_Construct(LCID lcid, IEnumCATEGORYINFO **ret)
static HRESULT WINAPI CLSIDEnumGUID_Next(IEnumGUID *iface, ULONG celt, GUID *rgelt, ULONG *pceltFetched)
static HRESULT COMCAT_IsClassOfCategories(HKEY key, struct class_categories const *categories)
static HRESULT WINAPI COMCAT_ICatInformation_EnumImplCategoriesOfClass(LPCATINFORMATION iface, REFCLSID rclsid, LPENUMCATID *ppenumCATID)
static HRESULT WINAPI COMCAT_ICatInformation_EnumReqCategoriesOfClass(LPCATINFORMATION iface, REFCLSID rclsid, LPENUMCATID *ppenumCATID)
static HRESULT WINAPI CLSIDEnumGUID_Reset(IEnumGUID *iface)
static HRESULT WINAPI CLSIDEnumGUID_Clone(IEnumGUID *iface, IEnumGUID **ppenum)
static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Next(IEnumCATEGORYINFO *iface, ULONG celt, CATEGORYINFO *rgelt, ULONG *pceltFetched)
static HRESULT WINAPI CATIDEnumGUID_QueryInterface(IEnumGUID *iface, REFIID riid, LPVOID *ppvObj)
static HRESULT WINAPI COMCAT_IEnumCATEGORYINFO_Reset(IEnumCATEGORYINFO *iface)
static const IEnumGUIDVtbl CATIDEnumGUIDVtbl
static struct class_categories * COMCAT_PrepareClassCategories(ULONG impl_count, const CATID *impl_catids, ULONG req_count, const CATID *req_catids)
static HRESULT WINAPI COMCAT_ICatRegister_RegisterClassReqCategories(LPCATREGISTER iface, REFCLSID rclsid, ULONG cCategories, CATID *rgcatid)
static ULONG WINAPI COMCAT_ICatInformation_Release(LPCATINFORMATION iface)
static ULONG WINAPI COMCAT_ICatRegister_Release(LPCATREGISTER iface)
static const IEnumGUIDVtbl CLSIDEnumGUIDVtbl
static HRESULT WINAPI COMCAT_ICatRegister_QueryInterface(LPCATREGISTER iface, REFIID riid, LPVOID *ppvObj)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLsizei GLenum * categories
GLsizei const GLchar *const * strings
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define memcpy(s1, s2, n)
#define IsEqualGUID(rguid1, rguid2)
IEnumGUID IEnumGUID_iface
IEnumGUID IEnumGUID_iface
struct class_categories * categories
ICatRegister ICatRegister_iface
ICatInformation ICatInformation_iface
IEnumCATEGORYINFO IEnumCATEGORYINFO_iface
#define CONTAINING_RECORD(address, type, field)
#define CAT_E_NODESCRIPTION
#define CLASS_E_NOAGGREGATION
#define CAT_E_CATIDNOEXIST
#define CLASS_E_CLASSNOTAVAILABLE
#define HKEY_CLASSES_ROOT
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)