2 * Windows API header module
4 * Translated from MinGW Windows headers
6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 * Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d)
9 module core.sys.windows.oaidl;
12 private import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes;
14 enum DISPID_UNKNOWN = -1;
15 enum DISPID_VALUE = 0;
16 enum DISPID_PROPERTYPUT = -3;
17 enum DISPID_NEWENUM = -4;
18 enum DISPID_EVALUATE = -5;
19 enum DISPID_CONSTRUCTOR = -6;
20 enum DISPID_DESTRUCTOR = -7;
21 enum DISPID_COLLECT = -8;
25 enum FADF_EMBEDDED = 4;
26 enum FADF_FIXEDSIZE = 16;
27 enum FADF_RECORD = 32;
28 enum FADF_HAVEIID = 64;
29 enum FADF_HAVEVARTYPE = 128;
31 enum FADF_UNKNOWN = 512;
32 enum FADF_DISPATCH = 1024;
33 enum FADF_VARIANT = 2048;
34 enum FADF_RESERVED = 0xf0e8;
35 enum FADF_DATADELETED = 0x1000;
36 enum FADF_CREATEVECTOR = 0x2000;
38 enum PARAMFLAG_NONE = 0;
39 enum PARAMFLAG_FIN = 1;
40 enum PARAMFLAG_FOUT = 2;
41 enum PARAMFLAG_FLCID = 4;
42 enum PARAMFLAG_FRETVAL = 8;
43 enum PARAMFLAG_FOPT = 16;
44 enum PARAMFLAG_FHASDEFAULT = 32;
45 enum PARAMFLAG_FHASCUSTDATA = 64;
47 enum IDLFLAG_NONE = PARAMFLAG_NONE;
48 enum IDLFLAG_FIN = PARAMFLAG_FIN;
49 enum IDLFLAG_FOUT = PARAMFLAG_FOUT;
50 enum IDLFLAG_FLCID = PARAMFLAG_FLCID;
51 enum IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
53 enum IMPLTYPEFLAG_FDEFAULT = 1;
54 enum IMPLTYPEFLAG_FSOURCE = 2;
55 enum IMPLTYPEFLAG_FRESTRICTED = 4;
56 enum IMPLTYPEFLAG_FDEFAULTVTABLE = 8;
66 LIBFLAG_FRESTRICTED = 1,
69 LIBFLAG_FHASDISKIMAGE = 8
80 alias TLIBATTR* LPTLIBATTR;
84 struct SAFEARRAYBOUND {
88 alias SAFEARRAYBOUND* LPSAFEARRAYBOUND;
95 struct SAFEARR_UNKNOWN {
100 struct SAFEARR_DISPATCH {
102 LPDISPATCH* apDispatch;
105 struct SAFEARR_VARIANT {
107 _wireVARIANT* aVariant;
111 SF_ERROR=VARENUM.VT_ERROR,
116 SF_BSTR=VARENUM.VT_BSTR,
117 SF_UNKNOWN=VARENUM.VT_UNKNOWN,
118 SF_DISPATCH=VARENUM.VT_DISPATCH,
119 SF_VARIANT=VARENUM.VT_VARIANT
122 struct _wireBRECORD {
125 LPRECORDINFO* pRecInfo;
128 alias _wireBRECORD* wireBRECORD;
130 struct SAFEARR_BRECORD {
132 wireBRECORD* aRecord;
135 struct SAFEARR_HAVEIID {
141 struct SAFEARRAYUNION {
144 SAFEARR_BSTR BstrStr;
145 SAFEARR_UNKNOWN UnknownStr;
146 SAFEARR_DISPATCH DispatchStr;
147 SAFEARR_VARIANT VariantStr;
148 SAFEARR_BRECORD RecordStr;
149 SAFEARR_HAVEIID HaveIidStr;
150 BYTE_SIZEDARR ByteStr;
151 WORD_SIZEDARR WordStr;
152 DWORD_SIZEDARR LongStr;
153 HYPER_SIZEDARR HyperStr;
158 struct _wireSAFEARRAY {
163 SAFEARRAYUNION uArrayStructs;
164 SAFEARRAYBOUND[1] rgsabound;
166 alias _wireSAFEARRAY* wireSAFEARRAY;
168 alias wireSAFEARRAY* wirePSAFEARRAY;
176 SAFEARRAYBOUND[1] rgsabound;
178 alias SAFEARRAY* LPSAFEARRAY;
194 VARIANT_BOOL boolVal;
208 VARIANT_BOOL* pboolVal;
209 _VARIANT_BOOL* pbool;
215 IDispatch* ppdispVal;
234 IRecordInfo pRecInfo;
241 alias VARIANT* LPVARIANT;
243 alias VARIANT VARIANTARG;
244 alias VARIANT* LPVARIANTARG;
246 struct _wireVARIANT {
260 VARIANT_BOOL boolVal;
267 wirePSAFEARRAY parray;
275 VARIANT_BOOL* pboolVal;
281 LPDISPATCH* ppdispVal;
282 wirePSAFEARRAY* pparray;
283 wireVARIANT* pvarVal;
300 alias _wireVARIANT* wireVARIANT;
303 alias DISPID MEMBERID;
304 alias DWORD HREFTYPE;
307 TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH,
308 TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX
323 SAFEARRAYBOUND[1] rgbounds;
328 VARIANTARG varDefaultValue;
330 alias PARAMDESCEX* LPPARAMDESCEX;
333 LPPARAMDESCEX pparamdescex;
336 alias PARAMDESC* LPPARAMDESC;
339 ULONG_PTR dwReserved;
342 alias IDLDESC* LPIDLDESC;
351 alias ELEMDESC* LPELEMDESC;
357 MEMBERID memidConstructor;
358 MEMBERID memidDestructor;
359 LPOLESTR lpstrSchema;
360 ULONG cbSizeInstance;
373 alias TYPEATTR* LPTYPEATTR;
377 DISPID* rgdispidNamedArgs;
386 BSTR bstrDescription;
391 HRESULT function (EXCEPINFO* ) pfnDeferredFillIn;
395 alias EXCEPINFO* LPEXCEPINFO;
401 CC_PASCAL=CC_MSCPASCAL,
421 INVOKE_PROPERTYGET = 2,
422 INVOKE_PROPERTYPUT = 4,
423 INVOKE_PROPERTYPUTREF = 8
429 ELEMDESC* lprgelemdescParam;
437 ELEMDESC elemdescFunc;
440 alias FUNCDESC* LPFUNCDESC;
443 VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH
448 LPOLESTR lpstrSchema;
453 ELEMDESC elemdescVar;
457 alias VARDESC* LPVARDESC;
460 TYPEFLAG_FAPPOBJECT = 1,
461 TYPEFLAG_FCANCREATE = 2,
462 TYPEFLAG_FLICENSED = 4,
463 TYPEFLAG_FPREDECLID = 8,
464 TYPEFLAG_FHIDDEN = 16,
465 TYPEFLAG_FCONTROL = 32,
467 TYPEFLAG_FNONEXTENSIBLE = 128,
468 TYPEFLAG_FOLEAUTOMATION = 256,
469 TYPEFLAG_FRESTRICTED = 512,
470 TYPEFLAG_FAGGREGATABLE = 1024,
471 TYPEFLAG_FREPLACEABLE = 2048,
472 TYPEFLAG_FDISPATCHABLE = 4096,
473 TYPEFLAG_FREVERSEBIND = 8192
477 FUNCFLAG_FRESTRICTED = 1,
478 FUNCFLAG_FSOURCE = 2,
479 FUNCFLAG_FBINDABLE = 4,
480 FUNCFLAG_FREQUESTEDIT = 8,
481 FUNCFLAG_FDISPLAYBIND = 16,
482 FUNCFLAG_FDEFAULTBIND = 32,
483 FUNCFLAG_FHIDDEN = 64,
484 FUNCFLAG_FUSESGETLASTERROR = 128,
485 FUNCFLAG_FDEFAULTCOLLELEM = 256,
486 FUNCFLAG_FUIDEFAULT = 512,
487 FUNCFLAG_FNONBROWSABLE = 1024,
488 FUNCFLAG_FREPLACEABLE = 2048,
489 FUNCFLAG_FIMMEDIATEBIND = 4096
493 VARFLAG_FREADONLY = 1,
495 VARFLAG_FBINDABLE = 4,
496 VARFLAG_FREQUESTEDIT = 8,
497 VARFLAG_FDISPLAYBIND = 16,
498 VARFLAG_FDEFAULTBIND = 32,
499 VARFLAG_FHIDDEN = 64,
500 VARFLAG_FRESTRICTED = 128,
501 VARFLAG_FDEFAULTCOLLELEM = 256,
502 VARFLAG_FUIDEFAULT = 512,
503 VARFLAG_FNONBROWSABLE = 1024,
504 VARFLAG_FREPLACEABLE = 2048,
505 VARFLAG_FIMMEDIATEBIND = 4096
508 struct CLEANLOCALSTORAGE {
514 struct CUSTDATAITEM {
518 alias CUSTDATAITEM* LPCUSTDATAITEM;
522 LPCUSTDATAITEM prgCustData;
524 alias CUSTDATA* LPCUSTDATA;
528 DESCKIND_FUNCDESC = DESCKIND_NONE+1,
529 DESCKIND_VARDESC = DESCKIND_FUNCDESC+1,
530 DESCKIND_TYPECOMP = DESCKIND_VARDESC+1,
531 DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1,
532 DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1
536 LPFUNCDESC lpfuncdesc;
540 alias BINDPTR* LPBINDPTR;
542 interface IDispatch : IUnknown {
543 HRESULT GetTypeInfoCount(UINT*);
544 HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*);
545 HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*);
546 HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*);
548 alias IDispatch LPDISPATCH;
550 interface IEnumVARIANT : IUnknown {
551 HRESULT Next(ULONG, VARIANT*, ULONG*);
554 HRESULT Clone(IEnumVARIANT*);
556 alias IEnumVARIANT LPENUMVARIANT;
558 interface ITypeComp : IUnknown {
559 HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR);
560 HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*);
562 alias ITypeComp LPTYPECOMP;
564 interface ITypeInfo : IUnknown {
565 HRESULT GetTypeAttr(LPTYPEATTR*);
566 HRESULT GetTypeComp(LPTYPECOMP*);
567 HRESULT GetFuncDesc(UINT, LPFUNCDESC*);
568 HRESULT GetVarDesc(UINT, LPVARDESC*);
569 HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*);
570 HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*);
571 HRESULT GetImplTypeFlags(UINT, INT*);
572 HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*);
573 HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*,
575 HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*);
576 HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*);
577 HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*);
578 HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*);
579 HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*);
580 HRESULT GetMops(MEMBERID, BSTR*);
581 HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*);
582 void ReleaseTypeAttr(LPTYPEATTR);
583 void ReleaseFuncDesc(LPFUNCDESC);
584 void ReleaseVarDesc(LPVARDESC);
586 alias ITypeInfo LPTYPEINFO;
588 interface ITypeInfo2 : ITypeInfo {
589 HRESULT GetTypeKind(TYPEKIND*);
590 HRESULT GetTypeFlags(ULONG*);
591 HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*);
592 HRESULT GetVarIndexOfMemId(MEMBERID, UINT*);
593 HRESULT GetCustData(REFGUID, VARIANT*);
594 HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*);
595 HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*);
596 HRESULT GetVarCustData(UINT, REFGUID, VARIANT*);
597 HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*);
598 HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*);
599 HRESULT GetAllCustData(CUSTDATA*);
600 HRESULT GetAllFuncCustData(UINT, CUSTDATA*);
601 HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*);
602 HRESULT GetAllVarCustData(UINT, CUSTDATA*);
603 HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*);
605 alias ITypeInfo2 LPTYPEINFO2;
607 interface ITypeLib : IUnknown {
608 UINT GetTypeInfoCount();
609 HRESULT GetTypeInfo(UINT, ITypeInfo*);
610 HRESULT GetTypeInfoType(UINT, TYPEKIND*);
611 HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*);
612 HRESULT GetLibAttr(TLIBATTR**);
613 HRESULT GetTypeComp(ITypeComp);
614 HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*);
615 HRESULT IsName(LPOLESTR, ULONG, BOOL*);
616 HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*);
617 void ReleaseTLibAttr(TLIBATTR*);
619 alias ITypeLib LPTYPELIB;
621 interface ITypeLib2 : ITypeLib {
622 HRESULT GetCustData(REFGUID, VARIANT*);
623 HRESULT GetLibStatistics(ULONG*, ULONG*);
624 HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*);
625 HRESULT GetAllCustData(CUSTDATA*);
627 alias ITypeLib2 LPTYPELIB2;
629 interface IErrorInfo : IUnknown {
630 HRESULT GetGUID(GUID*);
631 HRESULT GetSource(BSTR*);
632 HRESULT GetDescription(BSTR*);
633 HRESULT GetHelpFile(BSTR*);
634 HRESULT GetHelpContext(DWORD*);
636 alias IErrorInfo LPERRORINFO;
638 interface ICreateErrorInfo : IUnknown {
639 HRESULT SetGUID(REFGUID);
640 HRESULT SetSource(LPOLESTR);
641 HRESULT SetDescription(LPOLESTR);
642 HRESULT SetHelpFile(LPOLESTR);
643 HRESULT SetHelpContext(DWORD);
645 alias ICreateErrorInfo LPCREATEERRORINFO;
647 interface ISupportErrorInfo : IUnknown {
648 HRESULT InterfaceSupportsErrorInfo(REFIID);
650 alias ISupportErrorInfo LPSUPPORTERRORINFO;
652 interface IRecordInfo : IUnknown {
653 HRESULT RecordInit(PVOID);
654 HRESULT RecordClear(PVOID);
655 HRESULT RecordCopy(PVOID, PVOID);
656 HRESULT GetGuid(GUID*);
657 HRESULT GetName(BSTR*);
658 HRESULT GetSize(ULONG*);
659 HRESULT GetTypeInfo(ITypeInfo*);
660 HRESULT GetField(PVOID, LPCOLESTR, VARIANT*);
661 HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*);
662 HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*);
663 HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*);
664 HRESULT GetFieldNames(ULONG*, BSTR*);
665 BOOL IsMatchingType();
666 PVOID RecordCreate();
667 HRESULT RecordCreateCopy(PVOID, PVOID*);
668 HRESULT RecordDestroy (PVOID);
670 alias IRecordInfo LPRECORDINFO;
672 interface ITypeMarshal : IUnknown {
673 HRESULT Size(PVOID, DWORD, PVOID, ULONG*);
674 HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*);
675 HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*);