blob: 51d6be904df6b93317db1b329c90cf517c82e111 [file] [log] [blame]
/**
* Windows API header module
*
* Translated from MinGW Windows headers
*
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC src/core/sys/windows/_oaidl.d)
*/
module core.sys.windows.oaidl;
version (Windows):
@system:
import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes;
enum DISPID_UNKNOWN = -1;
enum DISPID_VALUE = 0;
enum DISPID_PROPERTYPUT = -3;
enum DISPID_NEWENUM = -4;
enum DISPID_EVALUATE = -5;
enum DISPID_CONSTRUCTOR = -6;
enum DISPID_DESTRUCTOR = -7;
enum DISPID_COLLECT = -8;
enum FADF_AUTO = 1;
enum FADF_STATIC = 2;
enum FADF_EMBEDDED = 4;
enum FADF_FIXEDSIZE = 16;
enum FADF_RECORD = 32;
enum FADF_HAVEIID = 64;
enum FADF_HAVEVARTYPE = 128;
enum FADF_BSTR = 256;
enum FADF_UNKNOWN = 512;
enum FADF_DISPATCH = 1024;
enum FADF_VARIANT = 2048;
enum FADF_RESERVED = 0xf0e8;
enum FADF_DATADELETED = 0x1000;
enum FADF_CREATEVECTOR = 0x2000;
enum PARAMFLAG_NONE = 0;
enum PARAMFLAG_FIN = 1;
enum PARAMFLAG_FOUT = 2;
enum PARAMFLAG_FLCID = 4;
enum PARAMFLAG_FRETVAL = 8;
enum PARAMFLAG_FOPT = 16;
enum PARAMFLAG_FHASDEFAULT = 32;
enum PARAMFLAG_FHASCUSTDATA = 64;
enum IDLFLAG_NONE = PARAMFLAG_NONE;
enum IDLFLAG_FIN = PARAMFLAG_FIN;
enum IDLFLAG_FOUT = PARAMFLAG_FOUT;
enum IDLFLAG_FLCID = PARAMFLAG_FLCID;
enum IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
enum IMPLTYPEFLAG_FDEFAULT = 1;
enum IMPLTYPEFLAG_FSOURCE = 2;
enum IMPLTYPEFLAG_FRESTRICTED = 4;
enum IMPLTYPEFLAG_FDEFAULTVTABLE = 8;
enum SYSKIND {
SYS_WIN16,
SYS_WIN32,
SYS_MAC
}
enum LIBFLAGS {
LIBFLAG_FRESTRICTED = 1,
LIBFLAG_FCONTROL = 2,
LIBFLAG_FHIDDEN = 4,
LIBFLAG_FHASDISKIMAGE = 8
}
struct TLIBATTR {
GUID guid;
LCID lcid;
SYSKIND syskind;
WORD wMajorVerNum;
WORD wMinorVerNum;
WORD wLibFlags;
}
alias TLIBATTR* LPTLIBATTR;
alias CY CURRENCY;
struct SAFEARRAYBOUND {
ULONG cElements;
LONG lLbound;
}
alias SAFEARRAYBOUND* LPSAFEARRAYBOUND;
struct SAFEARR_BSTR {
ULONG Size;
wireBSTR* aBstr;
}
struct SAFEARR_UNKNOWN {
ULONG Size;
IUnknown* apUnknown;
}
struct SAFEARR_DISPATCH {
ULONG Size;
LPDISPATCH* apDispatch;
}
struct SAFEARR_VARIANT {
ULONG Size;
_wireVARIANT* aVariant;
}
enum SF_TYPE {
SF_ERROR=VARENUM.VT_ERROR,
SF_I1=VARENUM.VT_I1,
SF_I2=VARENUM.VT_I2,
SF_I4=VARENUM.VT_I4,
SF_I8=VARENUM.VT_I8,
SF_BSTR=VARENUM.VT_BSTR,
SF_UNKNOWN=VARENUM.VT_UNKNOWN,
SF_DISPATCH=VARENUM.VT_DISPATCH,
SF_VARIANT=VARENUM.VT_VARIANT
}
struct _wireBRECORD {
ULONG fFlags;
ULONG clSize;
LPRECORDINFO* pRecInfo;
byte* pRecord;
}
alias _wireBRECORD* wireBRECORD;
struct SAFEARR_BRECORD {
ULONG Size;
wireBRECORD* aRecord;
}
struct SAFEARR_HAVEIID {
ULONG Size;
IUnknown* apUnknown;
IID iid;
}
struct SAFEARRAYUNION {
ULONG sfType;
union _u {
SAFEARR_BSTR BstrStr;
SAFEARR_UNKNOWN UnknownStr;
SAFEARR_DISPATCH DispatchStr;
SAFEARR_VARIANT VariantStr;
SAFEARR_BRECORD RecordStr;
SAFEARR_HAVEIID HaveIidStr;
BYTE_SIZEDARR ByteStr;
WORD_SIZEDARR WordStr;
DWORD_SIZEDARR LongStr;
HYPER_SIZEDARR HyperStr;
}
_u u;
}
struct _wireSAFEARRAY {
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
SAFEARRAYUNION uArrayStructs;
SAFEARRAYBOUND[1] rgsabound;
}
alias _wireSAFEARRAY* wireSAFEARRAY;
alias wireSAFEARRAY* wirePSAFEARRAY;
struct SAFEARRAY {
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND[1] rgsabound;
}
alias SAFEARRAY* LPSAFEARRAY;
struct VARIANT {
union {
struct {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union {
int lVal;
LONGLONG llVal;
ubyte bVal;
short iVal;
float fltVal;
double dblVal;
VARIANT_BOOL boolVal;
SCODE scode;
CY cyVal;
DATE date;
BSTR bstrVal;
IUnknown punkVal;
IDispatch pdispVal;
SAFEARRAY* parray;
ubyte* pbVal;
short* piVal;
int* plVal;
LONGLONG* pllVal;
float* pfltVal;
double* pdblVal;
VARIANT_BOOL* pboolVal;
_VARIANT_BOOL* pbool;
SCODE* pscode;
CY* pcyVal;
DATE* pdate;
BSTR* pbstrVal;
IUnknown* ppunkVal;
IDispatch* ppdispVal;
SAFEARRAY** pparray;
VARIANT* pvarVal;
void* byref;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
ULONGLONG ullVal;
INT intVal;
UINT uintVal;
DECIMAL* pdecVal;
CHAR* pcVal;
USHORT* puiVal;
ULONG* pulVal;
ULONGLONG* pullVal;
INT* pintVal;
UINT* puintVal;
struct {
PVOID pvRecord;
IRecordInfo pRecInfo;
}
}
}
DECIMAL decVal;
}
}
alias VARIANT* LPVARIANT;
alias VARIANT VARIANTARG;
alias VARIANT* LPVARIANTARG;
struct _wireVARIANT {
DWORD clSize;
DWORD rpcReserved;
USHORT vt;
USHORT wReserved1;
USHORT wReserved2;
USHORT wReserved3;
union {
LONG lVal;
LONGLONG llVal;
BYTE bVal;
SHORT iVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
SCODE scode;
CY cyVal;
DATE date;
wireBSTR bstrVal;
IUnknown punkVal;
LPDISPATCH pdispVal;
wirePSAFEARRAY parray;
wireBRECORD brecVal;
BYTE* pbVal;
SHORT* piVal;
LONG* plVal;
LONGLONG* pllVal;
FLOAT* pfltVal;
DOUBLE* pdblVal;
VARIANT_BOOL* pboolVal;
SCODE* pscode;
CY* pcyVal;
DATE* pdate;
wireBSTR* pbstrVal;
IUnknown* ppunkVal;
LPDISPATCH* ppdispVal;
wirePSAFEARRAY* pparray;
wireVARIANT* pvarVal;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
ULONGLONG ullVal;
INT intVal;
UINT uintVal;
DECIMAL decVal;
DECIMAL* pdecVal;
CHAR* pcVal;
USHORT* puiVal;
ULONG* pulVal;
ULONGLONG* pullVal;
INT* pintVal;
UINT* puintVal;
}
}
alias _wireVARIANT* wireVARIANT;
alias LONG DISPID;
alias DISPID MEMBERID;
alias DWORD HREFTYPE;
enum TYPEKIND {
TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH,
TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX
}
struct TYPEDESC {
union {
TYPEDESC* lptdesc;
ARRAYDESC* lpadesc;
HREFTYPE hreftype;
}
VARTYPE vt;
}
struct ARRAYDESC {
TYPEDESC tdescElem;
USHORT cDims;
SAFEARRAYBOUND[1] rgbounds;
}
struct PARAMDESCEX {
ULONG cBytes;
VARIANTARG varDefaultValue;
}
alias PARAMDESCEX* LPPARAMDESCEX;
struct PARAMDESC {
LPPARAMDESCEX pparamdescex;
USHORT wParamFlags;
}
alias PARAMDESC* LPPARAMDESC;
struct IDLDESC {
ULONG_PTR dwReserved;
USHORT wIDLFlags;
}
alias IDLDESC* LPIDLDESC;
struct ELEMDESC {
TYPEDESC tdesc;
union {
IDLDESC idldesc;
PARAMDESC paramdesc;
}
}
alias ELEMDESC* LPELEMDESC;
struct TYPEATTR {
GUID guid;
LCID lcid;
DWORD dwReserved;
MEMBERID memidConstructor;
MEMBERID memidDestructor;
LPOLESTR lpstrSchema;
ULONG cbSizeInstance;
TYPEKIND typekind;
WORD cFuncs;
WORD cVars;
WORD cImplTypes;
WORD cbSizeVft;
WORD cbAlignment;
WORD wTypeFlags;
WORD wMajorVerNum;
WORD wMinorVerNum;
TYPEDESC tdescAlias;
IDLDESC idldescType;
}
alias TYPEATTR* LPTYPEATTR;
struct DISPPARAMS {
VARIANTARG* rgvarg;
DISPID* rgdispidNamedArgs;
UINT cArgs;
UINT cNamedArgs;
}
struct EXCEPINFO {
WORD wCode;
WORD wReserved;
BSTR bstrSource;
BSTR bstrDescription;
BSTR bstrHelpFile;
DWORD dwHelpContext;
PVOID pvReserved;
extern (Windows) {
HRESULT function (EXCEPINFO* ) pfnDeferredFillIn;
}
SCODE scode;
}
alias EXCEPINFO* LPEXCEPINFO;
enum CALLCONV {
CC_FASTCALL,
CC_CDECL,
CC_MSCPASCAL,
CC_PASCAL=CC_MSCPASCAL,
CC_MACPASCAL,
CC_STDCALL,
CC_FPFASTCALL,
CC_SYSCALL,
CC_MPWCDECL,
CC_MPWPASCAL,
CC_MAX=CC_MPWPASCAL
}
enum FUNCKIND {
FUNC_VIRTUAL,
FUNC_PUREVIRTUAL,
FUNC_NONVIRTUAL,
FUNC_STATIC,
FUNC_DISPATCH
}
enum INVOKEKIND {
INVOKE_FUNC = 1,
INVOKE_PROPERTYGET = 2,
INVOKE_PROPERTYPUT = 4,
INVOKE_PROPERTYPUTREF = 8
}
struct FUNCDESC {
MEMBERID memid;
SCODE* lprgscode;
ELEMDESC* lprgelemdescParam;
FUNCKIND funckind;
INVOKEKIND invkind;
CALLCONV callconv;
SHORT cParams;
SHORT cParamsOpt;
SHORT oVft;
SHORT cScodes;
ELEMDESC elemdescFunc;
WORD wFuncFlags;
}
alias FUNCDESC* LPFUNCDESC;
enum VARKIND {
VAR_PERINSTANCE, VAR_STATIC, VAR_CONST, VAR_DISPATCH
}
struct VARDESC {
MEMBERID memid;
LPOLESTR lpstrSchema;
union {
ULONG oInst;
VARIANT* lpvarValue;
}
ELEMDESC elemdescVar;
WORD wVarFlags;
VARKIND varkind;
}
alias VARDESC* LPVARDESC;
enum TYPEFLAGS {
TYPEFLAG_FAPPOBJECT = 1,
TYPEFLAG_FCANCREATE = 2,
TYPEFLAG_FLICENSED = 4,
TYPEFLAG_FPREDECLID = 8,
TYPEFLAG_FHIDDEN = 16,
TYPEFLAG_FCONTROL = 32,
TYPEFLAG_FDUAL = 64,
TYPEFLAG_FNONEXTENSIBLE = 128,
TYPEFLAG_FOLEAUTOMATION = 256,
TYPEFLAG_FRESTRICTED = 512,
TYPEFLAG_FAGGREGATABLE = 1024,
TYPEFLAG_FREPLACEABLE = 2048,
TYPEFLAG_FDISPATCHABLE = 4096,
TYPEFLAG_FREVERSEBIND = 8192
}
enum FUNCFLAGS {
FUNCFLAG_FRESTRICTED = 1,
FUNCFLAG_FSOURCE = 2,
FUNCFLAG_FBINDABLE = 4,
FUNCFLAG_FREQUESTEDIT = 8,
FUNCFLAG_FDISPLAYBIND = 16,
FUNCFLAG_FDEFAULTBIND = 32,
FUNCFLAG_FHIDDEN = 64,
FUNCFLAG_FUSESGETLASTERROR = 128,
FUNCFLAG_FDEFAULTCOLLELEM = 256,
FUNCFLAG_FUIDEFAULT = 512,
FUNCFLAG_FNONBROWSABLE = 1024,
FUNCFLAG_FREPLACEABLE = 2048,
FUNCFLAG_FIMMEDIATEBIND = 4096
}
enum VARFLAGS {
VARFLAG_FREADONLY = 1,
VARFLAG_FSOURCE = 2,
VARFLAG_FBINDABLE = 4,
VARFLAG_FREQUESTEDIT = 8,
VARFLAG_FDISPLAYBIND = 16,
VARFLAG_FDEFAULTBIND = 32,
VARFLAG_FHIDDEN = 64,
VARFLAG_FRESTRICTED = 128,
VARFLAG_FDEFAULTCOLLELEM = 256,
VARFLAG_FUIDEFAULT = 512,
VARFLAG_FNONBROWSABLE = 1024,
VARFLAG_FREPLACEABLE = 2048,
VARFLAG_FIMMEDIATEBIND = 4096
}
struct CLEANLOCALSTORAGE {
IUnknown pInterface;
PVOID pStorage;
DWORD flags;
}
struct CUSTDATAITEM {
GUID guid;
VARIANTARG varValue;
}
alias CUSTDATAITEM* LPCUSTDATAITEM;
struct CUSTDATA {
DWORD cCustData;
LPCUSTDATAITEM prgCustData;
}
alias CUSTDATA* LPCUSTDATA;
enum DESCKIND {
DESCKIND_NONE = 0,
DESCKIND_FUNCDESC = DESCKIND_NONE+1,
DESCKIND_VARDESC = DESCKIND_FUNCDESC+1,
DESCKIND_TYPECOMP = DESCKIND_VARDESC+1,
DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1,
DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1
}
union BINDPTR {
LPFUNCDESC lpfuncdesc;
LPVARDESC lpvardesc;
LPTYPECOMP lptcomp;
}
alias BINDPTR* LPBINDPTR;
interface IDispatch : IUnknown {
HRESULT GetTypeInfoCount(UINT*);
HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*);
HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*);
HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*);
}
alias IDispatch LPDISPATCH;
interface IEnumVARIANT : IUnknown {
HRESULT Next(ULONG, VARIANT*, ULONG*);
HRESULT Skip(ULONG);
HRESULT Reset();
HRESULT Clone(IEnumVARIANT*);
}
alias IEnumVARIANT LPENUMVARIANT;
interface ITypeComp : IUnknown {
HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR);
HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*);
}
alias ITypeComp LPTYPECOMP;
interface ITypeInfo : IUnknown {
HRESULT GetTypeAttr(LPTYPEATTR*);
HRESULT GetTypeComp(LPTYPECOMP*);
HRESULT GetFuncDesc(UINT, LPFUNCDESC*);
HRESULT GetVarDesc(UINT, LPVARDESC*);
HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*);
HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*);
HRESULT GetImplTypeFlags(UINT, INT*);
HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*);
HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*,
UINT*);
HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*);
HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*);
HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*);
HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*);
HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*);
HRESULT GetMops(MEMBERID, BSTR*);
HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*);
void ReleaseTypeAttr(LPTYPEATTR);
void ReleaseFuncDesc(LPFUNCDESC);
void ReleaseVarDesc(LPVARDESC);
}
alias ITypeInfo LPTYPEINFO;
interface ITypeInfo2 : ITypeInfo {
HRESULT GetTypeKind(TYPEKIND*);
HRESULT GetTypeFlags(ULONG*);
HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*);
HRESULT GetVarIndexOfMemId(MEMBERID, UINT*);
HRESULT GetCustData(REFGUID, VARIANT*);
HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*);
HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*);
HRESULT GetVarCustData(UINT, REFGUID, VARIANT*);
HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*);
HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*);
HRESULT GetAllCustData(CUSTDATA*);
HRESULT GetAllFuncCustData(UINT, CUSTDATA*);
HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*);
HRESULT GetAllVarCustData(UINT, CUSTDATA*);
HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*);
}
alias ITypeInfo2 LPTYPEINFO2;
interface ITypeLib : IUnknown {
UINT GetTypeInfoCount();
HRESULT GetTypeInfo(UINT, ITypeInfo*);
HRESULT GetTypeInfoType(UINT, TYPEKIND*);
HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*);
HRESULT GetLibAttr(TLIBATTR**);
HRESULT GetTypeComp(ITypeComp);
HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*);
HRESULT IsName(LPOLESTR, ULONG, BOOL*);
HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*);
void ReleaseTLibAttr(TLIBATTR*);
}
alias ITypeLib LPTYPELIB;
interface ITypeLib2 : ITypeLib {
HRESULT GetCustData(REFGUID, VARIANT*);
HRESULT GetLibStatistics(ULONG*, ULONG*);
HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*);
HRESULT GetAllCustData(CUSTDATA*);
}
alias ITypeLib2 LPTYPELIB2;
interface IErrorInfo : IUnknown {
HRESULT GetGUID(GUID*);
HRESULT GetSource(BSTR*);
HRESULT GetDescription(BSTR*);
HRESULT GetHelpFile(BSTR*);
HRESULT GetHelpContext(DWORD*);
}
alias IErrorInfo LPERRORINFO;
interface ICreateErrorInfo : IUnknown {
HRESULT SetGUID(REFGUID);
HRESULT SetSource(LPOLESTR);
HRESULT SetDescription(LPOLESTR);
HRESULT SetHelpFile(LPOLESTR);
HRESULT SetHelpContext(DWORD);
}
alias ICreateErrorInfo LPCREATEERRORINFO;
interface ISupportErrorInfo : IUnknown {
HRESULT InterfaceSupportsErrorInfo(REFIID);
}
alias ISupportErrorInfo LPSUPPORTERRORINFO;
interface IRecordInfo : IUnknown {
HRESULT RecordInit(PVOID);
HRESULT RecordClear(PVOID);
HRESULT RecordCopy(PVOID, PVOID);
HRESULT GetGuid(GUID*);
HRESULT GetName(BSTR*);
HRESULT GetSize(ULONG*);
HRESULT GetTypeInfo(ITypeInfo*);
HRESULT GetField(PVOID, LPCOLESTR, VARIANT*);
HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*);
HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*);
HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*);
HRESULT GetFieldNames(ULONG*, BSTR*);
BOOL IsMatchingType();
PVOID RecordCreate();
HRESULT RecordCreateCopy(PVOID, PVOID*);
HRESULT RecordDestroy (PVOID);
}
alias IRecordInfo LPRECORDINFO;
interface ITypeMarshal : IUnknown {
HRESULT Size(PVOID, DWORD, PVOID, ULONG*);
HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*);
HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*);
HRESULT Free(PVOID);
}