1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_comcat.d)
9  */
10 module nulib.system.win32.comcat;
11 import nulib.system.win32.ole2;
12 import nulib.system.win32.basetyps;
13 import nulib.system.win32.windef;
14 import nulib.system.win32.wtypes;
15 import nulib.system.com;
16 
17 alias LPENUMGUID = IEnumGUID;
18 
19 @Guid!("0002E000-0000-0000-C000-000000000046")
20 interface IEnumGUID : IUnknown {
21     HRESULT Next(ULONG, GUID*, ULONG*);
22     HRESULT Skip(ULONG);
23     HRESULT Reset();
24     HRESULT Clone(LPENUMGUID*);
25 }
26 
27 alias CATID = GUID;
28 alias REFCATID = REFGUID;
29 alias CATID_NULL = GUID_NULL;
30 
31 struct CATEGORYINFO {
32     CATID        catid;
33     LCID         lcid;
34     OLECHAR[128] szDescription = 0;
35 }
36 alias LPCATEGORYINFO = CATEGORYINFO*;
37 
38 alias IEnumCATID = IEnumGUID;
39 alias LPENUMCATID = LPENUMGUID;
40 alias IID_IEnumCATID = __uuidof!IEnumGUID;
41 
42 alias IEnumCLSID = IEnumGUID;
43 alias LPENUMCLSID = LPENUMGUID;
44 alias IID_IEnumCLSID = __uuidof!IEnumGUID;
45 
46 interface ICatInformation : IUnknown {
47     HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*);
48     HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*);
49     HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*,
50       LPENUMCLSID*);
51     HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*);
52     HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*);
53     HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*);
54 }
55 alias LPCATINFORMATION = ICatInformation;
56 
57 interface ICatRegister : IUnknown {
58     HRESULT RegisterCategories(ULONG, CATEGORYINFO*);
59     HRESULT UnRegisterCategories(ULONG, CATID*);
60     HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*);
61     HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*);
62     HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*);
63     HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*);
64 }
65 alias LPCATREGISTER = ICatRegister;
66 
67 interface IEnumCATEGORYINFO : IUnknown {
68     HRESULT Next(ULONG, CATEGORYINFO*, ULONG*);
69     HRESULT Skip(ULONG);
70     HRESULT Reset();
71     HRESULT Clone(LPENUMCATEGORYINFO*);
72 }
73 alias LPENUMCATEGORYINFO = IEnumCATEGORYINFO;