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 core/sys/windows/_oaidl.d)
9 module core
.sys
.windows
.oaidl
;
13 import core
.sys
.windows
.basetyps
, core
.sys
.windows
.unknwn
, core
.sys
.windows
.windef
, core
.sys
.windows
.wtypes
;
15 enum DISPID_UNKNOWN
= -1;
16 enum DISPID_VALUE
= 0;
17 enum DISPID_PROPERTYPUT
= -3;
18 enum DISPID_NEWENUM
= -4;
19 enum DISPID_EVALUATE
= -5;
20 enum DISPID_CONSTRUCTOR
= -6;
21 enum DISPID_DESTRUCTOR
= -7;
22 enum DISPID_COLLECT
= -8;
26 enum FADF_EMBEDDED
= 4;
27 enum FADF_FIXEDSIZE
= 16;
28 enum FADF_RECORD
= 32;
29 enum FADF_HAVEIID
= 64;
30 enum FADF_HAVEVARTYPE
= 128;
32 enum FADF_UNKNOWN
= 512;
33 enum FADF_DISPATCH
= 1024;
34 enum FADF_VARIANT
= 2048;
35 enum FADF_RESERVED
= 0xf0e8;
36 enum FADF_DATADELETED
= 0x1000;
37 enum FADF_CREATEVECTOR
= 0x2000;
39 enum PARAMFLAG_NONE
= 0;
40 enum PARAMFLAG_FIN
= 1;
41 enum PARAMFLAG_FOUT
= 2;
42 enum PARAMFLAG_FLCID
= 4;
43 enum PARAMFLAG_FRETVAL
= 8;
44 enum PARAMFLAG_FOPT
= 16;
45 enum PARAMFLAG_FHASDEFAULT
= 32;
46 enum PARAMFLAG_FHASCUSTDATA
= 64;
48 enum IDLFLAG_NONE
= PARAMFLAG_NONE
;
49 enum IDLFLAG_FIN
= PARAMFLAG_FIN
;
50 enum IDLFLAG_FOUT
= PARAMFLAG_FOUT
;
51 enum IDLFLAG_FLCID
= PARAMFLAG_FLCID
;
52 enum IDLFLAG_FRETVAL
= PARAMFLAG_FRETVAL
;
54 enum IMPLTYPEFLAG_FDEFAULT
= 1;
55 enum IMPLTYPEFLAG_FSOURCE
= 2;
56 enum IMPLTYPEFLAG_FRESTRICTED
= 4;
57 enum IMPLTYPEFLAG_FDEFAULTVTABLE
= 8;
67 LIBFLAG_FRESTRICTED
= 1,
70 LIBFLAG_FHASDISKIMAGE
= 8
81 alias TLIBATTR
* LPTLIBATTR
;
85 struct SAFEARRAYBOUND
{
89 alias SAFEARRAYBOUND
* LPSAFEARRAYBOUND
;
96 struct SAFEARR_UNKNOWN
{
101 struct SAFEARR_DISPATCH
{
103 LPDISPATCH
* apDispatch
;
106 struct SAFEARR_VARIANT
{
108 _wireVARIANT
* aVariant
;
112 SF_ERROR
=VARENUM
.VT_ERROR
,
117 SF_BSTR
=VARENUM
.VT_BSTR
,
118 SF_UNKNOWN
=VARENUM
.VT_UNKNOWN
,
119 SF_DISPATCH
=VARENUM
.VT_DISPATCH
,
120 SF_VARIANT
=VARENUM
.VT_VARIANT
123 struct _wireBRECORD
{
126 LPRECORDINFO
* pRecInfo
;
129 alias _wireBRECORD
* wireBRECORD
;
131 struct SAFEARR_BRECORD
{
133 wireBRECORD
* aRecord
;
136 struct SAFEARR_HAVEIID
{
142 struct SAFEARRAYUNION
{
145 SAFEARR_BSTR BstrStr
;
146 SAFEARR_UNKNOWN UnknownStr
;
147 SAFEARR_DISPATCH DispatchStr
;
148 SAFEARR_VARIANT VariantStr
;
149 SAFEARR_BRECORD RecordStr
;
150 SAFEARR_HAVEIID HaveIidStr
;
151 BYTE_SIZEDARR ByteStr
;
152 WORD_SIZEDARR WordStr
;
153 DWORD_SIZEDARR LongStr
;
154 HYPER_SIZEDARR HyperStr
;
159 struct _wireSAFEARRAY
{
164 SAFEARRAYUNION uArrayStructs
;
165 SAFEARRAYBOUND
[1] rgsabound
;
167 alias _wireSAFEARRAY
* wireSAFEARRAY
;
169 alias wireSAFEARRAY
* wirePSAFEARRAY
;
177 SAFEARRAYBOUND
[1] rgsabound
;
179 alias SAFEARRAY
* LPSAFEARRAY
;
195 VARIANT_BOOL boolVal
;
209 VARIANT_BOOL
* pboolVal
;
210 _VARIANT_BOOL
* pbool
;
216 IDispatch
* ppdispVal
;
235 IRecordInfo pRecInfo
;
242 alias VARIANT
* LPVARIANT
;
244 alias VARIANT VARIANTARG
;
245 alias VARIANT
* LPVARIANTARG
;
247 struct _wireVARIANT
{
261 VARIANT_BOOL boolVal
;
268 wirePSAFEARRAY parray
;
276 VARIANT_BOOL
* pboolVal
;
282 LPDISPATCH
* ppdispVal
;
283 wirePSAFEARRAY
* pparray
;
284 wireVARIANT
* pvarVal
;
301 alias _wireVARIANT
* wireVARIANT
;
304 alias DISPID MEMBERID
;
305 alias DWORD HREFTYPE
;
308 TKIND_ENUM
, TKIND_RECORD
, TKIND_MODULE
, TKIND_INTERFACE
, TKIND_DISPATCH
,
309 TKIND_COCLASS
, TKIND_ALIAS
, TKIND_UNION
, TKIND_MAX
324 SAFEARRAYBOUND
[1] rgbounds
;
329 VARIANTARG varDefaultValue
;
331 alias PARAMDESCEX
* LPPARAMDESCEX
;
334 LPPARAMDESCEX pparamdescex
;
337 alias PARAMDESC
* LPPARAMDESC
;
340 ULONG_PTR dwReserved
;
343 alias IDLDESC
* LPIDLDESC
;
352 alias ELEMDESC
* LPELEMDESC
;
358 MEMBERID memidConstructor
;
359 MEMBERID memidDestructor
;
360 LPOLESTR lpstrSchema
;
361 ULONG cbSizeInstance
;
374 alias TYPEATTR
* LPTYPEATTR
;
378 DISPID
* rgdispidNamedArgs
;
387 BSTR bstrDescription
;
392 HRESULT
function (EXCEPINFO
* ) pfnDeferredFillIn
;
396 alias EXCEPINFO
* LPEXCEPINFO
;
402 CC_PASCAL
=CC_MSCPASCAL
,
422 INVOKE_PROPERTYGET
= 2,
423 INVOKE_PROPERTYPUT
= 4,
424 INVOKE_PROPERTYPUTREF
= 8
430 ELEMDESC
* lprgelemdescParam
;
438 ELEMDESC elemdescFunc
;
441 alias FUNCDESC
* LPFUNCDESC
;
444 VAR_PERINSTANCE
, VAR_STATIC
, VAR_CONST
, VAR_DISPATCH
449 LPOLESTR lpstrSchema
;
454 ELEMDESC elemdescVar
;
458 alias VARDESC
* LPVARDESC
;
461 TYPEFLAG_FAPPOBJECT
= 1,
462 TYPEFLAG_FCANCREATE
= 2,
463 TYPEFLAG_FLICENSED
= 4,
464 TYPEFLAG_FPREDECLID
= 8,
465 TYPEFLAG_FHIDDEN
= 16,
466 TYPEFLAG_FCONTROL
= 32,
468 TYPEFLAG_FNONEXTENSIBLE
= 128,
469 TYPEFLAG_FOLEAUTOMATION
= 256,
470 TYPEFLAG_FRESTRICTED
= 512,
471 TYPEFLAG_FAGGREGATABLE
= 1024,
472 TYPEFLAG_FREPLACEABLE
= 2048,
473 TYPEFLAG_FDISPATCHABLE
= 4096,
474 TYPEFLAG_FREVERSEBIND
= 8192
478 FUNCFLAG_FRESTRICTED
= 1,
479 FUNCFLAG_FSOURCE
= 2,
480 FUNCFLAG_FBINDABLE
= 4,
481 FUNCFLAG_FREQUESTEDIT
= 8,
482 FUNCFLAG_FDISPLAYBIND
= 16,
483 FUNCFLAG_FDEFAULTBIND
= 32,
484 FUNCFLAG_FHIDDEN
= 64,
485 FUNCFLAG_FUSESGETLASTERROR
= 128,
486 FUNCFLAG_FDEFAULTCOLLELEM
= 256,
487 FUNCFLAG_FUIDEFAULT
= 512,
488 FUNCFLAG_FNONBROWSABLE
= 1024,
489 FUNCFLAG_FREPLACEABLE
= 2048,
490 FUNCFLAG_FIMMEDIATEBIND
= 4096
494 VARFLAG_FREADONLY
= 1,
496 VARFLAG_FBINDABLE
= 4,
497 VARFLAG_FREQUESTEDIT
= 8,
498 VARFLAG_FDISPLAYBIND
= 16,
499 VARFLAG_FDEFAULTBIND
= 32,
500 VARFLAG_FHIDDEN
= 64,
501 VARFLAG_FRESTRICTED
= 128,
502 VARFLAG_FDEFAULTCOLLELEM
= 256,
503 VARFLAG_FUIDEFAULT
= 512,
504 VARFLAG_FNONBROWSABLE
= 1024,
505 VARFLAG_FREPLACEABLE
= 2048,
506 VARFLAG_FIMMEDIATEBIND
= 4096
509 struct CLEANLOCALSTORAGE
{
515 struct CUSTDATAITEM
{
519 alias CUSTDATAITEM
* LPCUSTDATAITEM
;
523 LPCUSTDATAITEM prgCustData
;
525 alias CUSTDATA
* LPCUSTDATA
;
529 DESCKIND_FUNCDESC
= DESCKIND_NONE
+1,
530 DESCKIND_VARDESC
= DESCKIND_FUNCDESC
+1,
531 DESCKIND_TYPECOMP
= DESCKIND_VARDESC
+1,
532 DESCKIND_IMPLICITAPPOBJ
= DESCKIND_TYPECOMP
+1,
533 DESCKIND_MAX
= DESCKIND_IMPLICITAPPOBJ
+1
537 LPFUNCDESC lpfuncdesc
;
541 alias BINDPTR
* LPBINDPTR
;
543 interface IDispatch
: IUnknown
{
544 HRESULT
GetTypeInfoCount(UINT
*);
545 HRESULT
GetTypeInfo(UINT
, LCID
, LPTYPEINFO
*);
546 HRESULT
GetIDsOfNames(REFIID
, LPOLESTR
*, UINT
, LCID
, DISPID
*);
547 HRESULT
Invoke(DISPID
, REFIID
, LCID
, WORD
, DISPPARAMS
*, VARIANT
*, EXCEPINFO
*, UINT
*);
549 alias IDispatch LPDISPATCH
;
551 interface IEnumVARIANT
: IUnknown
{
552 HRESULT
Next(ULONG
, VARIANT
*, ULONG
*);
555 HRESULT
Clone(IEnumVARIANT
*);
557 alias IEnumVARIANT LPENUMVARIANT
;
559 interface ITypeComp
: IUnknown
{
560 HRESULT
Bind(LPOLESTR
, ULONG
, WORD
, LPTYPEINFO
*, DESCKIND
*, LPBINDPTR
);
561 HRESULT
BindType(LPOLESTR
, ULONG
, LPTYPEINFO
*, LPTYPECOMP
*);
563 alias ITypeComp LPTYPECOMP
;
565 interface ITypeInfo
: IUnknown
{
566 HRESULT
GetTypeAttr(LPTYPEATTR
*);
567 HRESULT
GetTypeComp(LPTYPECOMP
*);
568 HRESULT
GetFuncDesc(UINT
, LPFUNCDESC
*);
569 HRESULT
GetVarDesc(UINT
, LPVARDESC
*);
570 HRESULT
GetNames(MEMBERID
, BSTR
*, UINT
, UINT
*);
571 HRESULT
GetRefTypeOfImplType(UINT
, HREFTYPE
*);
572 HRESULT
GetImplTypeFlags(UINT
, INT
*);
573 HRESULT
GetIDsOfNames(LPOLESTR
*, UINT
, MEMBERID
*);
574 HRESULT
Invoke(PVOID
, MEMBERID
, WORD
, DISPPARAMS
*, VARIANT
*, EXCEPINFO
*,
576 HRESULT
GetDocumentation(MEMBERID
, BSTR
*, BSTR
*, DWORD
*, BSTR
*);
577 HRESULT
GetDllEntry(MEMBERID
, INVOKEKIND
, BSTR
*, BSTR
*, WORD
*);
578 HRESULT
GetRefTypeInfo(HREFTYPE
, LPTYPEINFO
*);
579 HRESULT
AddressOfMember(MEMBERID
, INVOKEKIND
, PVOID
*);
580 HRESULT
CreateInstance(LPUNKNOWN
, REFIID
, PVOID
*);
581 HRESULT
GetMops(MEMBERID
, BSTR
*);
582 HRESULT
GetContainingTypeLib(LPTYPELIB
*, UINT
*);
583 void ReleaseTypeAttr(LPTYPEATTR
);
584 void ReleaseFuncDesc(LPFUNCDESC
);
585 void ReleaseVarDesc(LPVARDESC
);
587 alias ITypeInfo LPTYPEINFO
;
589 interface ITypeInfo2
: ITypeInfo
{
590 HRESULT
GetTypeKind(TYPEKIND
*);
591 HRESULT
GetTypeFlags(ULONG
*);
592 HRESULT
GetFuncIndexOfMemId(MEMBERID
, INVOKEKIND
, UINT
*);
593 HRESULT
GetVarIndexOfMemId(MEMBERID
, UINT
*);
594 HRESULT
GetCustData(REFGUID
, VARIANT
*);
595 HRESULT
GetFuncCustData(UINT
, REFGUID
, VARIANT
*);
596 HRESULT
GetParamCustData(UINT
, UINT
, REFGUID
, VARIANT
*);
597 HRESULT
GetVarCustData(UINT
, REFGUID
, VARIANT
*);
598 HRESULT
GetImplTypeCustData(UINT
, REFGUID
, VARIANT
*);
599 HRESULT
GetDocumentation2(MEMBERID
, LCID
, BSTR
*, DWORD
*, BSTR
*);
600 HRESULT
GetAllCustData(CUSTDATA
*);
601 HRESULT
GetAllFuncCustData(UINT
, CUSTDATA
*);
602 HRESULT
GetAllParamCustData(UINT
, UINT
, CUSTDATA
*);
603 HRESULT
GetAllVarCustData(UINT
, CUSTDATA
*);
604 HRESULT
GetAllImplTypeCustData(UINT
, CUSTDATA
*);
606 alias ITypeInfo2 LPTYPEINFO2
;
608 interface ITypeLib
: IUnknown
{
609 UINT
GetTypeInfoCount();
610 HRESULT
GetTypeInfo(UINT
, ITypeInfo
*);
611 HRESULT
GetTypeInfoType(UINT
, TYPEKIND
*);
612 HRESULT
GetTypeInfoOfGuid(REFGUID
, ITypeInfo
*);
613 HRESULT
GetLibAttr(TLIBATTR
**);
614 HRESULT
GetTypeComp(ITypeComp
);
615 HRESULT
GetDocumentation(INT
, BSTR
*, BSTR
*, DWORD
*, BSTR
*);
616 HRESULT
IsName(LPOLESTR
, ULONG
, BOOL
*);
617 HRESULT
FindName(LPOLESTR
, ULONG
, ITypeInfo
*, MEMBERID
*, USHORT
*);
618 void ReleaseTLibAttr(TLIBATTR
*);
620 alias ITypeLib LPTYPELIB
;
622 interface ITypeLib2
: ITypeLib
{
623 HRESULT
GetCustData(REFGUID
, VARIANT
*);
624 HRESULT
GetLibStatistics(ULONG
*, ULONG
*);
625 HRESULT
GetDocumentation2(INT
, LCID
, BSTR
*, DWORD
*, BSTR
*);
626 HRESULT
GetAllCustData(CUSTDATA
*);
628 alias ITypeLib2 LPTYPELIB2
;
630 interface IErrorInfo
: IUnknown
{
631 HRESULT
GetGUID(GUID
*);
632 HRESULT
GetSource(BSTR
*);
633 HRESULT
GetDescription(BSTR
*);
634 HRESULT
GetHelpFile(BSTR
*);
635 HRESULT
GetHelpContext(DWORD
*);
637 alias IErrorInfo LPERRORINFO
;
639 interface ICreateErrorInfo
: IUnknown
{
640 HRESULT
SetGUID(REFGUID
);
641 HRESULT
SetSource(LPOLESTR
);
642 HRESULT
SetDescription(LPOLESTR
);
643 HRESULT
SetHelpFile(LPOLESTR
);
644 HRESULT
SetHelpContext(DWORD
);
646 alias ICreateErrorInfo LPCREATEERRORINFO
;
648 interface ISupportErrorInfo
: IUnknown
{
649 HRESULT
InterfaceSupportsErrorInfo(REFIID
);
651 alias ISupportErrorInfo LPSUPPORTERRORINFO
;
653 interface IRecordInfo
: IUnknown
{
654 HRESULT
RecordInit(PVOID
);
655 HRESULT
RecordClear(PVOID
);
656 HRESULT
RecordCopy(PVOID
, PVOID
);
657 HRESULT
GetGuid(GUID
*);
658 HRESULT
GetName(BSTR
*);
659 HRESULT
GetSize(ULONG
*);
660 HRESULT
GetTypeInfo(ITypeInfo
*);
661 HRESULT
GetField(PVOID
, LPCOLESTR
, VARIANT
*);
662 HRESULT
GetFieldNoCopy(PVOID
, LPCOLESTR
, VARIANT
*, PVOID
*);
663 HRESULT
PutField (ULONG
, PVOID
, LPCOLESTR
, VARIANT
*);
664 HRESULT
PutFieldNoCopy(ULONG
, PVOID
, LPCOLESTR
, VARIANT
*);
665 HRESULT
GetFieldNames(ULONG
*, BSTR
*);
666 BOOL
IsMatchingType();
667 PVOID
RecordCreate();
668 HRESULT
RecordCreateCopy(PVOID
, PVOID
*);
669 HRESULT
RecordDestroy (PVOID
);
671 alias IRecordInfo LPRECORDINFO
;
673 interface ITypeMarshal
: IUnknown
{
674 HRESULT
Size(PVOID
, DWORD
, PVOID
, ULONG
*);
675 HRESULT
Marshal(PVOID
, DWORD
, PVOID
, ULONG
, BYTE
*, ULONG
*);
676 HRESULT
Unmarshal(PVOID
, DWORD
, ULONG
, BYTE
*, ULONG
*);