71 'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
't',
' ',
'C',
'a',
't',
'e',
'g',
'o',
'r',
'i',
'e',
's',0 };
73 'I',
'm',
'p',
'l',
'e',
'm',
'e',
'n',
't',
'e',
'd',
' ',
'C',
'a',
't',
'e',
'g',
'o',
'r',
'i',
'e',
's',0 };
75 'R',
'e',
'q',
'u',
'i',
'r',
'e',
'd',
' ',
'C',
'a',
't',
'e',
'g',
'o',
'r',
'i',
'e',
's',0 };
90 HKEY clsid_key, class_key, type_key;
108 for (; cCategories; --cCategories, ++rgcatid) {
135 const CATID *rgcatid)
137 WCHAR keyname[68] = {
'C',
'L',
'S',
'I',
'D',
'\\' };
153 for (; cCategories; --cCategories, ++rgcatid) {
172 static const WCHAR fmt[] = {
'%',
'l',
'X', 0 };
183 FIXME(
"Simplified lcid comparison\n");
210 while (impl_count--) {
216 while (req_count--) {
232 const WCHAR *impl_strings, *req_strings;
269 if (!
wcsicmp(
string, keyname))
break;
295 ICatRegister_AddRef(iface);
301 ICatRegister_AddRef(iface);
337 if (cCategories && rgci ==
NULL)
344 for (; cCategories; --cCategories, ++rgci) {
345 static const WCHAR fmt[] = {
'%',
'l',
'X', 0 };
380 if (cCategories && rgcatid ==
NULL)
387 for (; cCategories; --cCategories, ++rgcatid) {
463 LPCATINFORMATION iface,
490 LPCATINFORMATION iface,
505 LPCATINFORMATION iface,
510 WCHAR keyname[60] = {
'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
511 't',
' ',
'C',
'a',
't',
'e',
'g',
'o',
512 'r',
'i',
'e',
's',
'\\', 0 };
527 if (*ppszDesc ==
NULL) {
547 LPCATINFORMATION iface,
552 LPENUMCLSID *ppenumCLSID)
559 if (cImplemented == (
ULONG)-1)
561 if (cRequired == (
ULONG)-1)
564 if (ppenumCLSID ==
NULL ||
565 (cImplemented && rgcatidImpl ==
NULL) ||
569 cRequired, rgcatidReq);
586 LPCATINFORMATION iface,
593 WCHAR keyname[45] = {
'C',
'L',
'S',
'I',
'D',
'\\', 0 };
603 TRACE(
"Required %u\n",cRequired);
608 if ((cImplemented && rgcatidImpl ==
NULL) ||
615 cRequired, rgcatidReq);
633 LPCATINFORMATION iface,
635 LPENUMCATID *ppenumCATID)
637 static const WCHAR postfix[] = {
'\\',
'I',
'm',
'p',
'l',
'e',
'm',
'e',
638 'n',
't',
'e',
'd',
' ',
'C',
'a',
't',
639 'e',
'g',
'o',
'r',
'i',
'e',
's', 0 };
643 if (rclsid ==
NULL || ppenumCATID ==
NULL)
653 LPCATINFORMATION iface,
655 LPENUMCATID *ppenumCATID)
657 static const WCHAR postfix[] = {
'\\',
'R',
'e',
'q',
'u',
'i',
'r',
'e',
658 'd',
' ',
'C',
'a',
't',
'e',
'g',
'o',
659 'r',
'i',
'e',
's', 0 };
663 if (rclsid ==
NULL || ppenumCATID ==
NULL)
798 if (
This->key)
while (fetched < celt) {
808 ++(
This->next_index);
817 rgelt->szDescription, 128);
821 rgelt->lcid =
This->lcid;
826 if (pceltFetched) *pceltFetched = fetched;
838 This->next_index += celt;
849 This->next_index = 0;
858 static const WCHAR keyname[] = {
'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
859 't',
' ',
'C',
'a',
't',
'e',
'g',
'o',
860 'r',
'i',
'e',
's', 0 };
894 static const WCHAR keyname[] = {
'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
't',
' ',
'C',
'a',
't',
'e',
'g',
'o',
'r',
'i',
'e',
's',0};
907 *
ret = &
This->IEnumCATEGORYINFO_iface;
944 IEnumGUID_AddRef(iface);
989 if (
This->key)
while (fetched < celt) {
999 ++(
This->next_index);
1009 if (
hr !=
S_OK)
continue;
1015 if (pceltFetched) *pceltFetched = fetched;
1027 This->next_index += celt;
1028 FIXME(
"Never returns S_FALSE\n");
1038 This->next_index = 0;
1046 static const WCHAR keynameW[] = {
'C',
'L',
'S',
'I',
'D',0};
1090 static const WCHAR keyname[] = {
'C',
'L',
'S',
'I',
'D',0};
1103 *
ret = &
This->IEnumGUID_iface;
1141 IEnumGUID_AddRef(iface);
1176 ULONG *pceltFetched)
1185 if (
This->key)
while (fetched < celt) {
1194 ++(
This->next_index);
1203 if (pceltFetched) *pceltFetched = fetched;
1215 This->next_index += celt;
1216 FIXME(
"Never returns S_FALSE\n");
1226 This->next_index = 0;
1268 static const WCHAR prefixW[] = {
'C',
'L',
'S',
'I',
'D',
'\\',0};
1287 *
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)
#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 const WCHAR clsid_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)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LSTATUS create_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
LSTATUS open_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLsizei GLenum * categories
GLsizei const GLchar *const * strings
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#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,...)