1/* 2 * Copyright 2002 John K. Hohm 3 * Copyright 2003 Alexandre Julliard 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 18 */ 19 20#ifndef DO_NO_IMPORTS 21import "unknwn.idl"; 22#endif 23 24/***************************************************************************** 25 * Types 26 */ 27typedef GUID CATID; 28typedef REFGUID REFCATID; 29cpp_quote("#define CATID_NULL GUID_NULL") 30cpp_quote("#define IsEqualCATID(rcatid1, rcatid2) IsEqualGUID(rcatid1, rcatid2)") 31 32/***************************************************************************** 33 * Aliases for EnumGUID 34 */ 35#define IEnumCATID IEnumGUID 36cpp_quote("#define IEnumCATID IEnumGUID") 37cpp_quote("#define IID_IEnumCATID IID_IEnumGUID") 38cpp_quote("#define LPENUMCATID LPENUMGUID") 39#define IEnumCLSID IEnumGUID 40cpp_quote("#define IEnumCLSID IEnumGUID") 41cpp_quote("#define IID_IEnumCLSID IID_IEnumGUID") 42cpp_quote("#define LPENUMCLSID LPENUMGUID") 43 44 45/***************************************************************************** 46 * IEnumGUID 47 */ 48[ 49 object, 50 uuid(0002e000-0000-0000-c000-000000000046), 51 pointer_default(unique) 52] 53interface IEnumGUID : IUnknown 54{ 55 typedef [unique] IEnumGUID *LPENUMGUID; 56 57 HRESULT Next( 58 [in] ULONG celt, 59 [out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt, 60 [out] ULONG *pceltFetched); 61 62 HRESULT Skip( 63 [in] ULONG celt); 64 65 HRESULT Reset(); 66 67 HRESULT Clone( 68 [out] IEnumGUID **ppenum); 69} 70 71 72/***************************************************************************** 73 * IEnumCATEGORYINFO 74 */ 75[ 76 object, 77 uuid(0002e011-0000-0000-c000-000000000046), 78 pointer_default(unique) 79] 80interface IEnumCATEGORYINFO : IUnknown 81{ 82 typedef [unique] IEnumCATEGORYINFO *LPENUMCATEGORYINFO; 83 84 typedef struct tagCATEGORYINFO 85 { 86 CATID catid; /* category identifier for component */ 87 LCID lcid; /* locale identifier */ 88 OLECHAR szDescription[128]; /* description of the category */ 89 } CATEGORYINFO, *LPCATEGORYINFO; 90 91 HRESULT Next( 92 [in] ULONG celt, 93 [out, size_is(celt), length_is(*pceltFetched)] CATEGORYINFO* rgelt, 94 [out] ULONG* pceltFetched); 95 96 HRESULT Skip( 97 [in] ULONG celt); 98 99 HRESULT Reset(); 100 101 HRESULT Clone( 102 [out] IEnumCATEGORYINFO** ppenum); 103} 104 105 106/***************************************************************************** 107 * ICatInformation 108 */ 109[ 110 object, 111 uuid(0002e013-0000-0000-c000-000000000046), 112 pointer_default(unique) 113] 114interface ICatInformation : IUnknown 115{ 116 typedef [unique] ICatInformation* LPCATINFORMATION; 117 118 HRESULT EnumCategories( 119 [in] LCID lcid, 120 [out] IEnumCATEGORYINFO** ppenumCategoryInfo); 121 122 HRESULT GetCategoryDesc( 123 [in] REFCATID rcatid, 124 [in] LCID lcid, 125 [out] LPWSTR* pszDesc); 126 127 [local] 128 HRESULT EnumClassesOfCategories( 129 [in] ULONG cImplemented, 130 [in,size_is(cImplemented)] CATID rgcatidImpl[], 131 [in] ULONG cRequired, 132 [in,size_is(cRequired)] CATID rgcatidReq[], 133 [out] IEnumCLSID** ppenumClsid); 134 135 [call_as(EnumClassesOfCategories)] 136 HRESULT RemoteEnumClassesOfCategories( 137 [in] ULONG cImplemented, 138 [in,unique,size_is(cImplemented)] CATID rgcatidImpl[], 139 [in] ULONG cRequired, 140 [in,unique,size_is(cRequired)] CATID rgcatidReq[], 141 [out] IEnumCLSID** ppenumClsid); 142 143 [local] 144 HRESULT IsClassOfCategories( 145 [in] REFCLSID rclsid, 146 [in] ULONG cImplemented, 147 [in,size_is(cImplemented)] CATID rgcatidImpl[], 148 [in] ULONG cRequired, 149 [in,size_is(cRequired)] CATID rgcatidReq[]); 150 151 [call_as(IsClassOfCategories)] 152 HRESULT RemoteIsClassOfCategories( 153 [in] REFCLSID rclsid, 154 [in] ULONG cImplemented, 155 [in,unique,size_is(cImplemented)] CATID rgcatidImpl[], 156 [in] ULONG cRequired, 157 [in,unique,size_is(cRequired)] CATID rgcatidReq[] ); 158 159 HRESULT EnumImplCategoriesOfClass( 160 [in] REFCLSID rclsid, 161 [out] IEnumCATID** ppenumCatid); 162 163 HRESULT EnumReqCategoriesOfClass( 164 [in] REFCLSID rclsid, 165 [out] IEnumCATID** ppenumCatid); 166} 167 168 169/***************************************************************************** 170 * ICatRegister 171 */ 172[ 173 object, 174 uuid(0002e012-0000-0000-c000-000000000046), 175 pointer_default(unique) 176] 177interface ICatRegister : IUnknown 178{ 179 typedef [unique] ICatRegister* LPCATREGISTER; 180 181 HRESULT RegisterCategories( 182 [in] ULONG cCategories, 183 [in, size_is(cCategories)] CATEGORYINFO rgCategoryInfo[]); 184 185 HRESULT UnRegisterCategories( 186 [in] ULONG cCategories, 187 [in, size_is(cCategories)] CATID rgcatid[]); 188 189 HRESULT RegisterClassImplCategories( 190 [in] REFCLSID rclsid, 191 [in] ULONG cCategories, 192 [in, size_is(cCategories)] CATID rgcatid[]); 193 194 HRESULT UnRegisterClassImplCategories( 195 [in] REFCLSID rclsid, 196 [in] ULONG cCategories, 197 [in, size_is(cCategories)] CATID rgcatid[]); 198 199 HRESULT RegisterClassReqCategories( 200 [in] REFCLSID rclsid, 201 [in] ULONG cCategories, 202 [in, size_is(cCategories)] CATID rgcatid[]); 203 204 HRESULT UnRegisterClassReqCategories( 205 [in] REFCLSID rclsid, 206 [in] ULONG cCategories, 207 [in, size_is(cCategories)] CATID rgcatid[]); 208} 209 210 211/***************************************************************************** 212 * Category IDs 213 */ 214cpp_quote("DEFINE_GUID( CATID_Insertable, 0x40fc6ed3, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 215cpp_quote("DEFINE_GUID( CATID_Control, 0x40fc6ed4, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 216cpp_quote("DEFINE_GUID( CATID_Programmable, 0x40fc6ed5, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 217cpp_quote("DEFINE_GUID( CATID_IsShortcut, 0x40fc6ed6, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 218cpp_quote("DEFINE_GUID( CATID_NeverShowExt, 0x40fc6ed7, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 219cpp_quote("DEFINE_GUID( CATID_DocObject, 0x40fc6ed8, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 220cpp_quote("DEFINE_GUID( CATID_Printable, 0x40fc6ed9, 0x2438, 0x11cf, 0xa3, 0xdb, 0x08, 0x00, 0x36, 0xf1, 0x25, 0x02);") 221cpp_quote("DEFINE_GUID( CATID_RequiresDataPathHost, 0x0de86a50, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 222cpp_quote("DEFINE_GUID( CATID_PersistsToMoniker, 0x0de86a51, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 223cpp_quote("DEFINE_GUID( CATID_PersistsToStorage, 0x0de86a52, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 224cpp_quote("DEFINE_GUID( CATID_PersistsToStreamInit, 0x0de86a53, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 225cpp_quote("DEFINE_GUID( CATID_PersistsToStream, 0x0de86a54, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 226cpp_quote("DEFINE_GUID( CATID_PersistsToMemory, 0x0de86a55, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 227cpp_quote("DEFINE_GUID( CATID_PersistsToFile, 0x0de86a56, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 228cpp_quote("DEFINE_GUID( CATID_PersistsToPropertyBag, 0x0de86a57, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 229cpp_quote("DEFINE_GUID( CATID_InternetAware, 0x0de86a58, 0x2baa, 0x11cf, 0xa2, 0x29, 0x00, 0xaa, 0x00, 0x3d, 0x73, 0x52);") 230cpp_quote("DEFINE_GUID( CATID_DesignTimeUIActivatableControl, 0xf2bb56d1, 0xdb07, 0x11d1, 0xaa, 0x6b, 0x00, 0x60, 0x97, 0xdb, 0x95, 0x39);") 231/* The Component Category Manager */ 232cpp_quote("DEFINE_GUID(CLSID_StdComponentCategoriesMgr, 0x0002e005, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);") 233