' OAIdl.sbp
' 本来はOAIdl.idlから生成するのが正当ですが、
' これは手動で移植したものです。

#require <objidl.sbp>

/* interface IOleAutomationTypes */
/* [auto_handle][unique][version] */

TypeDef CURRENCY = CY

Type SAFEARRAYBOUND
	cElements As DWord
	lLbound As Long
End Type

Typedef LPSAFEARRAYBOUND = *SAFEARRAYBOUND

Typedef wireVARIANT = VoidPtr '/* [unique] */ *_wireVARIANT

Typedef wireBRECORD = VoidPtr '/* [unique] */ *_wireBRECORD

' Type SAFEARR_BSTR;
' Type SAFEARR_UNKNOWN;
' Type SAFEARR_DISPATCH;
' Type SAFEARR_VARIANT;
' Type SAFEARR_BRECORD;
' Type SAFEARR_HAVEIID;

/* [v1_enum] */
/*
Const Enum SF_TYPE
	SF_ERROR = VT_ERROR
	SF_I1 = VT_I1
	SF_I2 = VT_I2
	SF_I4 = VT_I4
	SF_I8 = VT_I8
	SF_BSTR = VT_BSTR
	SF_UNKNOWN = VT_UNKNOWN
	SF_DISPATCH = VT_DISPATCH
	SF_VARIANT = VT_VARIANT
	SF_RECORD = VT_RECORD
	SF_HAVEIID = VT_UNKNOWN Or VT_RESERVED
End Enum
*/
' Type SAFEARRAYUNION

' Type /* [unique] */ wireSAFEARRAY

TypeDef wirePSAFEARRAY = VoidPtr '/* [unique] */ *wireSAFEARRAY

Type SAFEARRAY
	cDims As Word
	fFeatures As Word
	cbElements As DWord
	cLocks As DWord
	pvData As VoidPtr
	rgsabound[ELM(1)] As SAFEARRAYBOUND
End Type

TypeDef LPSAFEARRAY = /* [wire_marshal] */ *SAFEARRAY

Const FADF_AUTO = &h1
Const FADF_STATIC = &h2
Const FADF_EMBEDDED = &h4
Const FADF_FIXEDSIZE = &h10
Const FADF_RECORD = &h20
Const FADF_HAVEIID = &h40
Const FADF_HAVEVARTYPE = &h80
Const FADF_BSTR = &h100
Const FADF_UNKNOWN = &h200
Const FADF_DISPATCH = &h400
Const FADF_VARIANT = &h800
Const FADF_RESERVED = &hf008

Type /*Class*/ VARIANT
Public
	vt As VARTYPE
	wReserved1 As Word
	wReserved2 As Word
	wReserved3 As Word
	val As QWord
/*
	Function llVal() As Int64
		Return val As Int64
	End Function

	Sub llVal(v As Int64)
		val = v As QWord
	End Sub

	Function lVal() As Long
		Return val As DWord As Long
	End Function

	Sub lVal(v As Long)
		val = v As DWord
	End Sub

	Function bVal() As Byte
		Return val As Byte
	End Function

	Sub bVal(v As Byte)
		val = v
	End Sub

	Function iVal() As Integer
		Return val As Word As Integer
	End Function

	Sub iVal(v As Integer)
		val = v As Word
	End Sub

	Function fltVal() As Single
		Return GetSingle(VarPtr(val) As *Single)
	End Function

	Sub fltVal(v As Single)
		SetSingle(VarPtr(val) As *Single, v)
	End Sub

	Function dblVal() As Double
		Return GetDouble(VarPtr(val) As *Double)
	End Function

	Sub dblVal(v As Double)
		SetDouble(VarPtr(val) As *Double, v)
	End Sub

	' SizeOf (VARIANT_BOOL) = 2
	Function boolVal() As VARIANT_BOOL
		Return val As Word As VARIANT_BOOL
	End Function

	Sub boolVal(v As VARIANT_BOOL)
		val = v As Word
	End Sub

	' SizeOf (SCODE) = 4
	Function scode() As SCODE
		Return val As DWord As SCODE
	End Function

	Sub scode(v As SCODE)
		val = v As DWord
	End Sub

	' SizeOf (CY) = 8
	Function cyVal() As CY
		SetQWord(VarPtr(cyVal), val)
	End Function

	Sub cyVal(v As CY)
		SetQWord(VarPtr(val), GetQWord(VarPtr(v)))
	End Sub

	' SizeOf (DATE) = 8
	Function date() As DATE
		SetQWord(VarPtr(date), val)
	End Function

	Sub date(v As DATE)
		SetQWord(VarPtr(val), GetQWord(VarPtr(v)))
	End Sub

	Function bstrVal() As BSTR
		Return val As ULONG_PTR As BSTR
	End Function

	Sub bstrVal(v As BSTR)
		val = v As ULONG_PTR
	End Sub

	Function punkVal() As *IUnknown
		Return val As ULONG_PTR As *IUnknown
	End Function

	Sub punkVal(v As *IUnknown)
		val = v As ULONG_PTR
	End Sub

	Function pdispVal() As *IDispatch
		Return val As ULONG_PTR As *IDispatch
	End Function

	Sub pdispVal(v As *IDispatch)
		val = v As ULONG_PTR
	End Sub

	Function parray() As *SAFEARRAY
		Return val As ULONG_PTR As *SAFEARRAY
	End Function

	Sub parray(v As *SAFEARRAY)
		val = v As ULONG_PTR
	End Sub

	Function pbVal() As *Byte
		Return val As ULONG_PTR As *Byte
	End Function

	Sub pbVal(v As *Byte)
		val = v As ULONG_PTR
	End Sub

	Function piVal() As *Integer
		Return val As ULONG_PTR As *Integer
	End Function

	Sub piVal(v As *Integer)
		val = v As ULONG_PTR
	End Sub

	Function plVal() As *Long
		Return val As ULONG_PTR As *Long
	End Function

	Sub plVal(v As *Long)
		val = v As ULONG_PTR
	End Sub

	Function pllVal() As *Int64
		Return val As ULONG_PTR As *Int64
	End Function

	Sub pllVal(v As *Int64)
		val = v As ULONG_PTR
	End Sub

	Function pfltVal() As *Single
		Return val As ULONG_PTR As *Single
	End Function

	Sub pfltVal(v As *Single)
		val = v As ULONG_PTR
	End Sub

	Function pdblVal() As *Double
		Return val As ULONG_PTR As *Double
	End Function

	Sub pdblVal(v As *Double)
		val = v As ULONG_PTR
	End Sub

	Function pboolVal() As *VARIANT_BOOL
		Return val As ULONG_PTR As *VARIANT_BOOL
	End Function

	Sub pboolVal(v As *VARIANT_BOOL)
		val = v As ULONG_PTR
	End Sub

	Function pscode() As *SCODE
		Return val As ULONG_PTR As *SCODE
	End Function

	Sub pscode(v As *SCODE)
		val = v As ULONG_PTR
	End Sub

	Function pcyVal() As *CY
		Return val As ULONG_PTR As *CY
	End Function

	Sub pcyVal(v As *CY)
		val = v As ULONG_PTR
	End Sub

	Function pdate() As *DATE
		Return val As ULONG_PTR As *DATE
	End Function

	Sub pdate(v As *DATE)
		val = v As ULONG_PTR
	End Sub

	Function pbstrVal() As *BSTR
		Return val As ULONG_PTR As *BSTR
	End Function

	Sub pbstrVal(v As *BSTR)
		val = v As ULONG_PTR
	End Sub

	Function ppunkVal() As **IUnknown
		Return val As ULONG_PTR As **IUnknown
	End Function

	Sub ppunkVal(v As **IUnknown)
		val = v As ULONG_PTR
	End Sub

	Function ppdispVal() As **IDispatch
		Return val As ULONG_PTR As **IDispatch
	End Function

	Sub ppdispVal(v As **IDispatch)
		val = v As ULONG_PTR
	End Sub

	Function pparray() As **SAFEARRAY
		Return val As ULONG_PTR As **SAFEARRAY
	End Function

	Sub pparray(v As **SAFEARRAY)
		val = v As ULONG_PTR
	End Sub

	Function pvarVal() As *VARIANT
		Return val As ULONG_PTR As *VARIANT
	End Function

	Sub pvarVal(v As *VARIANT)
		val = v As ULONG_PTR
	End Sub

'	Function byref() As VoidPtr
'		Return val As ULONG_PTR As VoidPtr
'	End Function

'	Sub byref(v As VoidPtr)
'		val = v As ULONG_PTR
'	End Sub

	Function cVal() As Char
		Return val As Byte As Char
	End Function

	Sub cVal(v As Char)
		val = v As Byte
	End Sub

	Function uiVal() As Word
		Return val As Word
	End Function

	Sub uiVal(v As Word)
		val = v
	End Sub

	Function ulVal() As DWord
		Return val As DWord
	End Function

	Sub ulVal(v As DWord)
		val = v
	End Sub

	Function ullVal() As QWord
		Return val
	End Function

	Sub ullVal(v As QWord)
		val = v
	End Sub

	Function intVal() As Long
		Return val As DWord As Long
	End Function

	Sub intVal(v As Long)
		val = v As DWord
	End Sub

	Function uintVal() As DWord
		Return val As DWord
	End Function

	Sub uintVal(v As DWord)
		val = v
	End Sub

	Function pdecVal() As *DECIMAL
		Return val As ULONG_PTR As *DECIMAL
	End Function

	Sub pdecVal(v As *DECIMAL)
		val = v As ULONG_PTR
	End Sub

	Function pcVal() As *Char
		Return val As ULONG_PTR As *Char
	End Function

	Sub pcVal(v As *Char)
		val = v As ULONG_PTR
	End Sub

	Function puiVal() As *Word
		Return val As ULONG_PTR As *Word
	End Function

	Sub puiVal(v As *Word)
		val = v As ULONG_PTR
	End Sub

	Function pulVal() As *DWord
		Return val As ULONG_PTR As *DWord
	End Function

	Sub pulVal(v As *DWord)
		val = v As ULONG_PTR
	End Sub

	Function pullVal() As *QWord
		Return val As ULONG_PTR As *QWord
	End Function

	Sub pullVal(v As *QWord)
		val = v As ULONG_PTR
	End Sub

	Function pintVal() As *Long
		Return val As ULONG_PTR As *Long
	End Function

	Sub pintVal(v As *Long)
		val = v As ULONG_PTR
	End Sub

	Function puintVal() As *DWord
		Return val As ULONG_PTR As *DWord
	End Function

	Sub puintVal(v As *DWord)
		val = v As ULONG_PTR
	End Sub

	Function pvRecord() As VoidPtr
		Return val As ULONG_PTR As VoidPtr
	End Function

	Sub pvRecord(v As VoidPtr)
		val = v As ULONG_PTR
	End Sub

	Function pRecInfo() As *IRecordInfo
		Return (val As ULONG_PTR + SizeOf (VoidPtr)) As *IRecordInfo
	End Function

	Sub pRecInfo(v As *IRecordInfo)
		Set_LONG_PTR((VarPtr(val) As ULONG_PTR + SizeOf (VoidPtr)) As VoidPtr, v As LONG_PTR)
	End Sub

	Function decVal() As DECIMAL
		Dim p As *DECIMAL
		p = VarPtr(This) As *DECIMAL
		Return p[0]
	End Function

	Sub decVal(v As DECIMAL)
		Dim p As *DECIMAL
		p = VarPtr(This) As *DECIMAL
		p[0] = v
	End Sub
*/
End Type 'Class

TypeDef LPVARIANT = *VARIANT
TypeDef VARIANTARG = VARIANT
TypeDef LPVARIANTARG =* VARIANT

' Type _wireBRECORD
' Type _wireVARIANT

TypeDef DISPID = Long

TypeDef MEMBERID = DISPID

TypeDef HREFTYPE = DWord

/* [v1_enum] */
Const Enum TYPEKIND
	TKIND_ENUM ' = 0
	TKIND_RECORD ' = TKIND_ENUM + 1
	TKIND_MODULE ' = TKIND_RECORD + 1
	TKIND_INTERFACE ' = TKIND_MODULE + 1
	TKIND_DISPATCH ' = TKIND_INTERFACE + 1
	TKIND_COCLASS ' = TKIND_DISPATCH + 1
	TKIND_ALIAS ' = TKIND_COCLASS + 1
	TKIND_UNION ' = TKIND_ALIAS + 1
	TKIND_MAX ' = TKIND_UNION + 1
End Enum

Type /*Class*/ TYPEDESC
' Private
	p As VoidPtr
'	/* [switch_is][switch_type] */ Union
'		/* [case()] */ lptdesc As *TYPEDESC
'		/* [case()] */ lpadesc As *ARRAYDESC
'		/* [case()] */ hreftype As HREFTYPE
'		/* [default] */  /* Empty union arm */
'	End Union
'Public
	vt As VARTYPE
/*
	Function lptdesc() As *TYPEDESC
		Return p
	End Function

	Sub lptdesc(ptd As *TYPEDESC)
		p = ptd
	End Sub

	Function lpadesc() As *ARRAYDESC
		Return p
	End Function

	Sub lpadesc(pad As *ARRAYDESC)
		p = pad
	End Sub

	Function hreftype() As *HREFTYPE
		Return p
	End Function

	Sub hreftype(prd As *HREFTYPE)
		p = prd
	End Sub
*/
End Type 'Class

Type ARRAYDESC
	tdescElem As TYPEDESC
	cDims As Word
	/* [size_is] */ rgbounds[ELM(1)] As SAFEARRAYBOUND
End Type

Type PARAMDESCEX
	cBytes As DWord
	varDefaultValue As VARIANTARG
End Type

Typedef LPPARAMDESCEX = *PARAMDESCEX

Type PARAMDESC
	pparamdescex As LPPARAMDESCEX
	USHORT wParamFlags As Word
End Type

TypeDef LPPARAMDESC = *PARAMDESC

Const PARAMFLAG_NONE = 0
Const PARAMFLAG_FIN = &h1
Const PARAMFLAG_FOUT = &h2
Const PARAMFLAG_FLCID = &h4
Const PARAMFLAG_FRETVAL = &h8
Const PARAMFLAG_FOPT = &h10
Const PARAMFLAG_FHASDEFAULT = &h20
Const PARAMFLAG_FHASCUSTDATA = &h40

Type IDLDESC
	dwReserved As ULONG_PTR
	wIDLFlags As Word
End Type

TypeDef LPIDLDESC = *IDLDESC

Const IDLFLAG_NONE = PARAMFLAG_NONE
Const IDLFLAG_FIN = PARAMFLAG_FIN
Const IDLFLAG_FOUT = PARAMFLAG_FOUT
Const IDLFLAG_FLCID = PARAMFLAG_FLCID
Const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL

Type /*Class*/ ELEMDESC
'Public
	tdesc As TYPEDESC
	idldesc As IDLDESC
/*
	Function paramdesc() As PARAMDESC
		Dim p As *PARAMDESC
		p = VarPtr(idldesc) As *PARAMDESC
		Return p[0]
	End Function

	Sub paramdesc(pd As PARAMDESC)
		Dim p As *PARAMDESC
		p = VarPtr(idldesc) As *PARAMDESC
		p[0] = pd
	End Sub
*/
End Type 'Class

Type TYPEATTR
	guid As GUID
	lcid As LCID
	dwReserved As DWord
	memidConstructor As MEMBERID
	memidDestructor As MEMBERID
	lpstrSchema As LPOLESTR
	cbSizeInstance As DWord
	typekind As TYPEKIND
	cFuncs As Word
	cVars As Word
	cImplTypes As Word
	cbSizeVft As Word
	cbAlignment As Word
	wTypeFlags As Word
	wMajorVerNum As Word
	wMinorVerNum As Word
	tdescAlias As TYPEDESC
	idldescType As IDLDESC
End Type

TypeDef LPTYPEATTR = *TYPEATTR

Type DISPPARAMS
	/* [size_is] */ rgvarg As *VARIANTARG
	/* [size_is] */ rgdispidNamedArgs As *DISPID
	cArgs As DWord
	cNamedArgs As DWord
End Type

Type EXCEPINFO
	wCode As Word
	wReserved As Word
	bstrSource As BSTR
	bstrDescription As BSTR
	bstrHelpFile As BSTR
	dwHelpContext As DWord
	pvReserved As VoidPtr
	pfnDeferredFillIn As *Function(p As *EXCEPINFO) As HRESULT
	scode As SCODE
End Type

TypeDef LPEXCEPINFO = *EXCEPINFO

/* [v1_enum] */
Const Enum CALLCONV
	CC_FASTCALL	= 0
	CC_CDECL	= 1
	CC_MSCPASCAL	= CC_CDECL + 1
	CC_PASCAL	= CC_MSCPASCAL
	CC_MACPASCAL	= CC_PASCAL + 1
	CC_STDCALL	= CC_MACPASCAL + 1
	CC_FPFASTCALL	= CC_STDCALL + 1
	CC_SYSCALL	= CC_FPFASTCALL + 1
	CC_MPWCDECL	= CC_SYSCALL + 1
	CC_MPWPASCAL	= CC_MPWCDECL + 1
	CC_MAX	= CC_MPWPASCAL + 1
End Enum

/* [v1_enum] */
Const Enum FUNCKIND
	FUNC_VIRTUAL = 0
	FUNC_PUREVIRTUAL = FUNC_VIRTUAL + 1
	FUNC_NONVIRTUAL = FUNC_PUREVIRTUAL + 1
	FUNC_STATIC = FUNC_NONVIRTUAL + 1
	FUNC_DISPATCH = FUNC_STATIC + 1
End Enum

/* [v1_enum] */
Const Enum INVOKEKIND
	INVOKE_FUNC = 1
	INVOKE_PROPERTYGET = 2
	INVOKE_PROPERTYPUT = 4
	INVOKE_PROPERTYPUTREF = 8
End Enum

Type FUNCDESC
	memid As MEMBERID
	/* [size_is] */ lprgscode As *SCODE
	/* [size_is] */ lprgelemdescParam As *ELEMDESC
	funckind As FUNCKIND
	invkind As INVOKEKIND
	callconv As CALLCONV
	cParams As Integer
	cParamsOpt As Integer
	oVft As Integer
	cScodes As Integer
	elemdescFunc As ELEMDESC
	wFuncFlags As Word
End Type

TypeDef LPFUNCDESC = *FUNCDESC

/* [v1_enum] */
Const Enum VARKIND
	VAR_PERINSTANCE = 0
	VAR_STATIC = 1
	VAR_CONST = 2
	VAR_DISPATCH = 3
End Enum

Const IMPLTYPEFLAG_FDEFAULT = &h1
Const IMPLTYPEFLAG_FSOURCE = &h2
Const IMPLTYPEFLAG_FRESTRICTED = &h4
Const IMPLTYPEFLAG_FDEFAULTVTABLE = &h8

Type /*Class*/ VARDESC
'Public
	memid As MEMBERID
	lpstrSchema As LPOLESTR
'	/* [switch_is][switch_type] */ Union
'		/* [case()] */ oInst As DWord
		/* [case()] */ lpvarValue As *VARIANT
'	End Union
	elemdescVar As ELEMDESC
	wVarFlags As Word
	varkind As VARKIND
/*
	Function oInst() As DWord
		Return lpvarValue As ULONG_PTR As DWord
	End Function

	Sub oInst(o As DWord)
		lpvarValue = o As ULONG_PTR As *VARIANT
	End Sub
*/
End Type 'Class

TypeDef LPVARDESC = VARDESC

Const Enum TYPEFLAGS
	TYPEFLAG_FAPPOBJECT = &h1
	TYPEFLAG_FCANCREATE = &h2
	TYPEFLAG_FLICENSED = &h4
	TYPEFLAG_FPREDECLID = &h8
	TYPEFLAG_FHIDDEN = &h10
	TYPEFLAG_FCONTROL = &h20
	TYPEFLAG_FDUAL = &h40
	TYPEFLAG_FNONEXTENSIBLE = &h80
	TYPEFLAG_FOLEAUTOMATION = &h100
	TYPEFLAG_FRESTRICTED = &h200
	TYPEFLAG_FAGGREGATABLE = &h400
	TYPEFLAG_FREPLACEABLE = &h800
	TYPEFLAG_FDISPATCHABLE = &h1000
	TYPEFLAG_FREVERSEBIND = &h2000
	TYPEFLAG_FPROXY = &h4000
End Enum

Enum FUNCFLAGS
	FUNCFLAG_FRESTRICTED = &h1
	FUNCFLAG_FSOURCE = &h2
	FUNCFLAG_FBINDABLE = &h4
	FUNCFLAG_FREQUESTEDIT = &h8
	FUNCFLAG_FDISPLAYBIND = &h10
	FUNCFLAG_FDEFAULTBIND = &h20
	FUNCFLAG_FHIDDEN = &h40
	FUNCFLAG_FUSESGETLASTERROR = &h80
	FUNCFLAG_FDEFAULTCOLLELEM = &h100
	FUNCFLAG_FUIDEFAULT = &h200
	FUNCFLAG_FNONBROWSABLE = &h400
	FUNCFLAG_FREPLACEABLE = &h800
	FUNCFLAG_FIMMEDIATEBIND = &h1000
End Enum

Const Enum VARFLAGS
	VARFLAG_FREADONLY = &h1
	VARFLAG_FSOURCE = &h2
	VARFLAG_FBINDABLE = &h4
	VARFLAG_FREQUESTEDIT = &h8
	VARFLAG_FDISPLAYBIND = &h10
	VARFLAG_FDEFAULTBIND = &h20
	VARFLAG_FHIDDEN = &h40
	VARFLAG_FRESTRICTED = &h80
	VARFLAG_FDEFAULTCOLLELEM = &h100
	VARFLAG_FUIDEFAULT = &h200
	VARFLAG_FNONBROWSABLE = &h400
	VARFLAG_FREPLACEABLE = &h800
	VARFLAG_FIMMEDIATEBIND = &h1000
End Enum

Type /* [wire_marshal] */ CLEANLOCALSTORAGE
	pInterface As IUnknown
	pStorage As VoidPtr
	flags As DWord
End Type

Type CUSTDATAITEM
	guid As GUID
	varValue As VARIANTARG
End Type

TypeDef LPCUSTDATAITEM = *CUSTDATAITEM

Type CUSTDATA
	cCustData As DWord
	/* [size_is] */ prgCustData As *CUSTDATAITEM
End Type

TypeDef LPCUSTDATA = *CUSTDATA

/* interface ICreateTypeInfo */
/* [local][unique][uuid][object] */

Dim IID_ICreateTypeInfo = [&h00020405, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ICreateTypeInfo
	Inherits IUnknown

	Function SetGuid(
		/* [in] */ ByRef guid As GUID) As HRESULT
	Function SetTypeFlags(
		/* [in] */ uTypeFlags As DWord) As HRESULT
	Function SetDocString(
		/* [in] */ pStrDoc As LPOLESTR) As HRESULT
	Function SetHelpContext(
		/* [in] */ dwHelpContext As DWord) As HRESULT
	Function SetVersion(
		/* [in] */ wMajorVerNum As Word,
		/* [in] */ wMinorVerNum As Word) As HRESULT
	Function AddRefTypeInfo(
		/* [in] */ TInfo As ITypeInfo,
		/* [in] */ByRef hRefType As HREFTYPE) As HRESULT
	Function AddFuncDesc(
		/* [in] */ index As DWord,
		/* [in] */ ByRef FuncDesc As FUNCDESC) As HRESULT
	Function AddImplType(
		/* [in] */ index As DWord,
		/* [in] */ hRefType As HREFTYPE) As HRESULT
	Function SetImplTypeFlags(
		/* [in] */ index As DWord,
		/* [in] */ implTypeFlags As Long) As HRESULT
	Function SetAlignment(
		/* [in] */ cbAlignment As Long) As HRESULT
	Function SetSchema(
		/* [in] */ pStrSchema As LPOLESTR) As HRESULT
	Function AddVarDesc(
		/* [in] */ index As DWord,
		/* [in] */ ByRef VarDesc As VARDESC) As HRESULT
	Function SetFuncAndParamNames(
		/* [in] */ index As DWord,
		/* [in][size_is][in] */ rgszNames As *LPOLESTR,
		/* [in] */ cNames As DWord) As HRESULT
	Function SetVarName(
		/* [in] */ index As DWord,
		/* [in] */ szName As LPOLESTR) As HRESULT
	Function SetTypeDescAlias(
		/* [in] */ ByRef TDescAlias As TYPEDESC) As HRESULT
	Function DefineFuncAsDllEntry(
		/* [in] */ index As DWord,
		/* [in] */ szDllName As LPOLESTR,
		/* [in] */ zProcName As LPOLESTR) As HRESULT
	Function SetFuncDocString(
		/* [in] */ index As DWord,
		/* [in] */ szDocString As LPOLESTR) As HRESULT
	Function SetVarDocString(
		/* [in] */ index As DWord,
		/* [in] */ szDocString As LPOLESTR) As HRESULT
	Function SetFuncHelpContext(
		/* [in] */ index As DWord,
		/* [in] */ dwHelpContext As DWord) As HRESULT
	Function SetVarHelpContext(
		/* [in] */ index As DWord,
		/* [in] */ dwHelpContext As DWord) As HRESULT
	Function SetMops(
		/* [in] */ index As DWord,
		/* [in] */ bstrMops As BSTR) As HRESULT
	Function SetTypeIdldesc(
		/* [in] */ ByRef IdlDesc As IDLDESC) As HRESULT
	Function LayOut() As HRESULT
End Interface

/* interface ICreateTypeInfo2 */
/* [local][unique][uuid][object] */

Dim IID_ICreateTypeInfo2 = [&h0002040E, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ICreateTypeInfo2
	Inherits ICreateTypeInfo

	Function DeleteFuncDesc(
		/* [in] */ index As DWord) As HRESULT
	Function DeleteFuncDescByMemId(
		/* [in] */ memid As *MEMBERID,
		/* [in] */ invKind As *INVOKEKIND) As HRESULT
	Function DeleteVarDesc(
		/* [in] */ index As DWord) As HRESULT
	Function DeleteVarDescByMemId(
		/* [in] */ memid As *MEMBERID) As HRESULT
	Function DeleteImplType(
		/* [in] */ index As DWord) As HRESULT
	Function SetCustData(
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetFuncCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetParamCustData(
		/* [in] */ indexFunc As DWord,
		/* [in] */ indexParam As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetVarCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetImplTypeCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetHelpStringContext(
		/* [in] */ dwHelpStringContext As DWord) As HRESULT
	Function SetFuncHelpStringContext(
		/* [in] */ index As DWord,
		/* [in] */ dwHelpStringContext As DWord) As HRESULT
	Function SetVarHelpStringContext(
		/* [in] */ index As DWord,
		/* [in] */ dwHelpStringContext As DWord) As HRESULT
	Function Invalidate() As HRESULT
	Function SetName(
		/* [in] */ szName As LPOLESTR) As HRESULT
End Interface

/* interface ICreateTypeLib */
/* [local][unique][uuid][object] */

Dim IID_ICreateTypeLib = [&h00020406, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface ICreateTypeLib
	Inherits IUnknown

	Function CreateTypeInfo(
		/* [in] */ szName As LPOLESTR,
		/* [in] */ tkind As *TYPEKIND,
		/* [out] */ ByRef CTInfo As ICreateTypeInfo) As HRESULT
	Function SetName(
		/* [in] */ szName As LPOLESTR) As HRESULT
	Function SetVersion(
		/* [in] */ wMajorVerNum As Word,
		/* [in] */ wMinorVerNum As Word) As HRESULT
	Function SetGuid(
		/* [in] */ ByRef guid As GUID) As HRESULT
	Function SetDocString(
		/* [in] */ szDoc As LPOLESTR) As HRESULT
	Function SetHelpFileName(
		/* [in] */ szHelpFileName As LPOLESTR) As HRESULT
	Function SetHelpContext(
		/* [in] */ dwHelpContext As DWord) As HRESULT
	Function SetLcid(
		/* [in] */ lcid As LCID) As HRESULT
	Function SetLibFlags(
		/* [in] */ uLibFlags As DWord) As HRESULT
	Function SaveAllChanges() As HRESULT
End Interface

/* interface ICreateTypeLib2 */
/* [local][unique][uuid][object] */

Dim IID_ICreateTypeLib2 = [&h0002040F, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ICreateTypeLib2
	Inherits ICreateTypeLib

	Function DeleteTypeInfo(
		/* [in] */ szName As LPOLESTR) As HRESULT
	Function SetCustData(
		/* [in] */ ByRef guid As GUID,
		/* [in] */ ByRef VarVal As VARIANT) As HRESULT
	Function SetHelpStringContext(
		/* [in] */ dwHelpStringContext As DWord) As HRESULT
	Function SetHelpStringDll(
		/* [in] */ szFileName As LPOLESTR) As HRESULT
End Interface

/* interface IDispatch */
/* [unique][uuid][object] */

Const DISPID_UNKNOWN = -1
Const DISPID_VALUE = 0
Const DISPID_PROPERTYPUT = -3
Const DISPID_NEWENUM = -4
Const DISPID_EVALUATE = -5
Const DISPID_CONSTRUCTOR = -6
Const DISPID_DESTRUCTOR = -7
Const DISPID_COLLECT = -8

/* The range -500 through -999 is reserved for Controls */
/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */
/* The range -5000 through -5499 is reserved for ActiveX Accessability */
/* The range -2000 through -2499 is reserved for VB5 */
/* The range -3900 through -3999 is reserved for Forms */
/* The range -5500 through -5550 is reserved for Forms */
/* The remainder of the negative DISPIDs are reserved for future use */

Dim IID_IDispatch = [&h00020400, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface IDispatch
	Inherits IUnknown

	Function GetTypeInfoCount(
		/* [out] */ ByRef pctinfo As DWord) As HRESULT
	Function GetTypeInfo(
		/* [in] */ iTInfo As DWord,
		/* [in] */ lcid As LCID,
		/* [out] */ ByRef TInfo As ITypeInfo) As HRESULT
	Function GetIDsOfNames(
		/* [in] */ ByRef riid As IID,
		/* [size_is][in] */ rgszNames As *LPOLESTR,
		/* [in] */ cNames As DWord,
		/* [in] */ lcid As LCID,
		/* [size_is][out] */ rgDispId As *DISPID) As HRESULT
	Function /* [local] */ Invoke(
		/* [in] */ dispIdMember As DISPID,
		/* [in] */ ByRef riid As IID,
		/* [in] */ lcid As LCID,
		/* [in] */ wFlags As Word,
		/* [out][in] */ ByRef pDispParams As DISPPARAMS,
		/* [out] */ ByRef pVarResult As VARIANT,
		/* [out] */ ByRef pExcepInfo As EXCEPINFO,
		/* [out] */ ByRef puArgErr As DWord) As HRESULT
End Interface

/* interface IEnumVARIANT */
/* [unique][uuid][object] */

Dim IID_IEnumVARIANT = [&h00020404, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface IEnumVARIANT
	Inherits IUnknown

	/* [local] */ Function Next(
		/* [in] */ celt As DWord,
		/* [length_is][size_is][out] */ rgVar As *VARIANT,
		/* [out] */ pCeltFetched As *DWord) As HRESULT
	Function Skip(
		/* [in] */ celt As DWord) As HRESULT
	Function Reset() As HRESULT
	Function Clone(
		/* [out] */ ByRef enum_ As IEnumVARIANT) As HRESULT

End Interface

/* interface ITypeComp */
/* [unique][uuid][object] */

/* [v1_enum] */
Const Enum DESCKIND
	DESCKIND_NONE
	DESCKIND_FUNCDESC = DESCKIND_NONE
	DESCKIND_VARDESC = DESCKIND_FUNCDESC
	DESCKIND_TYPECOMP = DESCKIND_VARDESC
	DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP
	DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ
End Enum
/*
Union BINDPTR
    lpfuncdesc As *FUNCDESC
    lpvardesc As *VARDESC
    lptcomp As ITypeComp
End Union
*/
Type BINDPTR
	p As VoidPtr '暫定
End Type

TypeDef LPBINDPTR = *BINDPTR

Dim IID_ITypeComp = [&h00020403, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeComp
	Inherits IUnknown

	Function /* [local] */ Bind(
		/* [in] */ szName As LPOLESTR,
		/* [in] */ HashVal As DWord,
		/* [in] */ wFlags As Word,
		/* [out] */ ByRef TInfo As ITypeInfo,
		/* [out] */ ByRef DescKind As DESCKIND,
		/* [out] */ ByRef BindPtr As BINDPTR) As HRESULT

	Function /* [local] */ BindType(
		/* [in] */ szName As LPOLESTR,
		/* [in] */ HashVal As DWord,
		/* [out] */ ByRef TInfo As ITypeInfo,
		/* [out] */ ByRef TComp As ITypeComp) As HRESULT
End Interface

/* interface ITypeInfo */
/* [unique][uuid][object] */

Dim IID_ITypeInfo = [&h00020401, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeInfo
	Inherits IUnknown

	Function /* [local] */ GetTypeAttr(
		/* [out] */ ByRef pTypeAttr As *TYPEATTR) As HRESULT
	Function GetTypeComp(
		/* [out] */ ByRef TComp As ITypeComp) As HRESULT
	Function /* [local] */ GetFuncDesc(
		/* [in] */ index As DWord,
		/* [out] */ ByRef pFuncDesc As *FUNCDESC) As HRESULT
	Function /* [local] */ GetVarDesc(
		/* [in] */ index As DWord,
		/* [out] */ ByRef pVarDesc As *VARDESC) As HRESULT
	Function /* [local] */ GetNames(
		/* [in] */ memid As MEMBERID,
		/* [length_is][size_is][out] */ rgBstrNames As *BSTR,
		/* [in] */ cMaxNames As DWord,
		/* [out] */ ByRef cNames As DWord) As HRESULT
	Function GetRefTypeOfImplType(
		/* [in] */ index As DWord,
		/* [out] */ ByRef RefType As HREFTYPE) As HRESULT
	Function GetImplTypeFlags(
		/* [in] */ index As DWord,
		/* [out] */ ByRef ImplTypeFlags As Long) As HRESULT
	Function /* [local] */ GetIDsOfNames(
		/* [size_is][in] */ rgszNames As *LPOLESTR,
		/* [in] */ cNames As DWord,
		/* [size_is][out] */ pMemId As *MEMBERID) As HRESULT
	Function /* [local] */ Invoke(
		/* [in] */ pvInstance As VoidPtr,
		/* [in] */ memid As MEMBERID,
		/* [in] */ wFlags As Word,
		/* [out][in] */ ByRef DispParams As DISPPARAMS,
		/* [out] */ ByRef VarResult As VARIANT,
		/* [out] */ ByRef ExcepInfo As EXCEPINFO,
		/* [out] */ ByRef uArgErr As DWord) As HRESULT
	Function /* [local] */ GetDocumentation(
		/* [in] */ memid As MEMBERID,
		/* [out] */ ByRef BstrName As BSTR,
		/* [out] */ ByRef BstrDocString As BSTR,
		/* [out] */ ByRef dwHelpContext As DWord,
		/* [out] */ ByRef BstrHelpFile As BSTR) As HRESULT
	Function /* [local] */ GetDllEntry(
		/* [in] */ memid As MEMBERID,
		/* [in] */ invKind As INVOKEKIND,
		/* [out] */ ByRef BstrDllName As BSTR,
		/* [out] */ ByRef BstrName As BSTR,
		/* [out] */ ByRef wOrdinal As Word) As HRESULT
	Function GetRefTypeInfo(
		/* [in] */ hRefType As HREFTYPE,
		/* [out] */ ByRef TInfo As ITypeInfo) As HRESULT
	Function /* [local] */ AddressOfMember(
		/* [in] */ memid As MEMBERID,
		/* [in] */ invKind As INVOKEKIND,
		/* [out] */ ByRef pv As VoidPtr) As HRESULT
	Function /* [local] */ CreateInstance(
		/* [in] */ pUnkOuter As IUnknown,
		/* [in] */ ByRef riid As IID,
		/* [iid_is][out] */ ByRef pvObj As Any) As HRESULT
	Function GetMops(
		/* [in] */ memid As MEMBERID,
		/* [out] */ ByRef BstrMops As BSTR) As HRESULT
	Function /* [local] */ GetContainingTypeLib(
		/* [out] */ ByRef TLib As ITypeLib,
		/* [out] */ ByRef Index As DWord) As HRESULT
	Sub /* [local] */ ReleaseTypeAttr(
		/* [in] */ pTypeAttr As *TYPEATTR)
	Sub /* [local] */ ReleaseFuncDesc(
		/* [in] */ pFuncDesc As *FUNCDESC)
	Sub /* [local] */ ReleaseVarDesc(
		/* [in] */ pVarDesc As *VARDESC)
End Interface

/* interface ITypeInfo2 */
/* [unique][uuid][object] */

Dim IID_ITypeInfo2 = [&h00020412, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeInfo2
	Inherits ITypeInfo

	Function GetTypeKind(
		/* [out] */ ByRef TypeKind As TYPEKIND) As HRESULT
	Function GetTypeFlags(
		/* [out] */ ByRef TypeFlags As DWord) As HRESULT
	Function GetFuncIndexOfMemId(
		/* [in] */ memid As MEMBERID,
		/* [in] */ invKind As INVOKEKIND,
		/* [out] */ ByRef FuncIndex As DWord) As HRESULT
	Function GetVarIndexOfMemId(
		/* [in] */ memid As MEMBERID,
		/* [out] */ ByRef pVarIndex As DWord) As HRESULT
	Function GetCustData(
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	Function GetFuncCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	Function GetParamCustData(
		/* [in] */ indexFunc As DWord,
		/* [in] */ indexParam As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	Function GetVarCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	Function GetImplTypeCustData(
		/* [in] */ index As DWord,
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	Function /* [local] */ GetDocumentation2(
		/* [in] */ memid As MEMBERID,
		/* [in] */ lcid As LCID,
		/* [out] */ ByRef bstrHelpString As BSTR,
		/* [out] */ ByRef dwHelpStringContext As DWord,
		/* [out] */ ByRef bstrHelpStringDll As BSTR) As HRESULT
	Function GetAllCustData(
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
	Function GetAllFuncCustData(
		/* [in] */ index As DWord,
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
	Function GetAllParamCustData(
		/* [in] */ indexFunc As DWord,
		/* [in] */ indexParam As DWord,
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
	Function GetAllVarCustData(
		/* [in] */ index As DWord,
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
	Function GetAllImplTypeCustData(
		/* [in] */ index As DWord,
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
End Interface

/* interface ITypeLib */
/* [unique][uuid][object] */

/* [v1_enum] */
Const Enum SYSKIND
	SYS_WIN16 = 0
	SYS_WIN32 = 1
	SYS_MAC = 2
	SYS_WIN64 = 3
End Enum

/* [v1_enum] */
Const Enum LIBFLAGS
	LIBFLAG_FRESTRICTED = &h1
	LIBFLAG_FCONTROL = &h2
	LIBFLAG_FHIDDEN = &h4
	LIBFLAG_FHASDISKIMAGE = &h8
End Enum

TypeDef LPTYPELIB = /* [unique] */ *ITypeLib

Type TLIBATTR
	guid As GUID
	lcid As LCID
	syskind As SYSKIND
	wMajorVerNum As Word
	wMinorVerNum As Word
	wLibFlags As Word
End Type

TypeDef LPTLIBATTR = TLIBATTR

Dim ITypeLib = [&h00020402, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeLib
	Inherits IUnknown

	Function /* [local] */ GetTypeInfoCount() As DWord
	Function GetTypeInfo(
		/* [in] */ index As DWord,
		/* [out] */ ByRef TInfo As ITypeInfo) As HRESULT
	Function GetTypeInfoType(
		/* [in] */ index As DWord,
		/* [out] */ ByRef TKind As TYPEKIND) As HRESULT
	Function GetTypeInfoOfGuid(
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef TInfo As ITypeInfo) As HRESULT
	Function /* [local] */ GetLibAttr(
		/* [out] */ ByRef TLibAttr As TLIBATTR) As HRESULT
	Function GetTypeComp(
		/* [out] */ ByRef TComp As ITypeComp) As HRESULT
	Function /* [local] */ GetDocumentation(
		/* [in] */ index As Long,
		/* [out] */ ByRef BstrName As BSTR,
		/* [out] */ ByRef BstrDocString As BSTR,
		/* [out] */ ByRef dwHelpContext As DWord,
		/* [out] */ ByRef BstrHelpFile As BSTR) As HRESULT
	Function /* [local] */ IsName(
		/* [out][in] */ szNameBuf As LPOLESTR,
		/* [in] */ lHashVal As DWord,
		/* [out] */ ByRef pfName As BOOL) As HRESULT
	Function /* [local] */ FindName(
		/* [out][in] */ szNameBuf As LPOLESTR,
		/* [in] */ lHashVal As DWord,
		/* [length_is][size_is][out] */ pTInfo As *ITypeInfo,
		/* [length_is][size_is][out] */ rgMemId As *MEMBERID,
		/* [out][in] */ ByRef cFound As Word) As HRESULT
	Sub /* [local] */ ReleaseTLibAttr(
		/* [in] */ ByRef TLibAttr As TLIBATTR)
End Interface

/* interface ITypeLib2 */
/* [unique][uuid][object] */

Dim IID_ITypeLib2 = [&h00020411, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeLib2
	Inherits ITypeLib

	Function GetCustData(
		/* [in] */ ByRef guid As GUID,
		/* [out] */ ByRef VarVal As VARIANT) As HRESULT
	/* [local] */ Function GetLibStatistics(
		/* [out] */ ByRef cUniqueNames As DWord,
		/* [out] */ ByRef chUniqueNames As DWord) As HRESULT
	/* [local] */ Function GetDocumentation2(
		/* [in] */ index As Long,
		/* [in] */ lcid As LCID,
		/* [out] */ ByRef bstrHelpString As BSTR,
		/* [out] */ ByRef dwHelpStringContext As DWord,
		/* [out] */ ByRef bstrHelpStringDll As BSTR) As HRESULT
	Function GetAllCustData(
		/* [out] */ ByRef CustData As CUSTDATA) As HRESULT
End Interface

/* interface ITypeChangeEvents */
/* [local][unique][uuid][object] */

Enum CHANGEKIND
	CHANGEKIND_ADDMEMBER = 0
	CHANGEKIND_DELETEMEMBER = 1
	CHANGEKIND_SETNAMES = 2
	CHANGEKIND_SETDOCUMENTATION = 3
	CHANGEKIND_GENERAL = 4
	CHANGEKIND_INVALIDATE = 5
	CHANGEKIND_CHANGEFAILED = 6
	CHANGEKIND_MAX = 7
End Enum

Dim IID_ITypeChangeEvents = [&h00020410, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeChangeEvents
	Inherits IUnknown

	Function RequestTypeChange(
		/* [in] */ changeKind As CHANGEKIND,
		/* [in] */ TInfoBefore As ITypeInfo,
		/* [in] */ pStrName As LPOLESTR,
		/* [out] */ ByRef fCancel As Long) As HRESULT
	Function AfterTypeChange(
		/* [in] */ changeKind As CHANGEKIND,
		/* [in] */ TInfoAfter As ITypeInfo,
		/* [in] */ pStrName As LPOLESTR) As HRESULT
End Interface

/* interface IErrorInfo */
/* [unique][uuid][object] */

Dim IID_IErrorInfo = [&h1CF2B120, &h547D, &h101B, [&h8E, &h65, &h08, &h00, &h2B, &h2B, &hD1, &h19]] As IID

Interface IErrorInfo
	Inherits IUnknown

	Function GetGUID(
		/* [out] */ ByRef guid As GUID) As HRESULT
	Function GetSource(
		/* [out] */ ByRef BstrSource As BSTR) As HRESULT
	Function GetDescription(
		/* [out] */ ByRef BstrDescription As BSTR) As HRESULT
	Function GetHelpFile(
		/* [out] */ ByRef BstrHelpFile As BSTR) As HRESULT
	Function GetHelpContext(
		/* [out] */ ByRef dwHelpContext As DWord) As HRESULT
End Interface

/* interface ICreateErrorInfo */
/* [unique][uuid][object] */

TypeDef LPCREATEERRORINFO = /* [unique] */ *ICreateErrorInfo

Dim IID_ICreateErrorInfo = [&h22F03340, &h547D, &h101B, [&h8E, &h65, &h08, &h00, &h2B, &h2B, &hD1, &h19]] As IID

Interface ICreateErrorInfo
	Inherits IUnknown

	Function SetGUID(
		/* [in] */ ByRef rguid As GUID) As HRESULT
	Function SetSource(
		/* [in] */ szSource As LPOLESTR) As HRESULT
	Function SetDescription(
		/* [in] */ szDescription As LPOLESTR) As HRESULT
	Function SetHelpFile(
		/* [in] */ szHelpFile As LPOLESTR) As HRESULT
	Function SetHelpContext(
		/* [in] */ dwHelpContext As DWord) As HRESULT
End Interface

/* interface ISupportErrorInfo */
/* [unique][uuid][object] */

Dim IID_ISupportErrorInfo = [&hDF0B3D60, &h548F, &h101B, [&h8E, &h65, &h08, &h00, &h2B, &h2B, &hD1, &h19]] As IID

Interface ISupportErrorInfo
	Inherits IUnknown

	Function InterfaceSupportsErrorInfo(
		/* [in] */ ByRef riid As IID) As HRESULT
End Interface

/* interface ITypeFactory */
/* [uuid][object] */

Dim IID_ITypeFactory = [&h0000002E, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeFactory
	Inherits IUnknown

	Function CreateFromTypeInfo(
		/* [in] */ TypeInfo As ITypeInfo,
		/* [in] */ ByRef riid As IID,
		/* [iid_is][out] */ ByRef pv As IUnknown) As HRESULT
End Interface

/* interface ITypeMarshal */
/* [uuid][object][local] */

Dim IID_ITypeMarshal = [&h0000002D, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface ITypeMarshal
	Inherits IUnknown

	Function Size(
		/* [in] */ pvType As VoidPtr,
		/* [in] */ dwDestContext As DWord,
		/* [in] */ pvDestContext As VoidPtr,
		/* [out] */ ByRef Size As DWord) As HRESULT
	Function Marshal(
		/* [in] */ pvType As VoidPtr,
		/* [in] */ dwDestContext As DWord,
		/* [in] */ pvDestContext As VoidPtr,
		/* [in] */ cbBufferLength As DWord,
		/* [out] */ pBuffer As *Byte,
		/* [out] */ ByRef cbWritten As DWord) As HRESULT
	Function Unmarshal(
		/* [out] */ pvType As VoidPtr,
		/* [in] */ dwFlags As DWord,
		/* [in] */ cbBufferLength As DWord,
		/* [in] */ pBuffer As *Byte,
		/* [out] */ ByRef cbRead As DWord) As HRESULT
	Function Free(
		/* [in] */ pvType As VoidPtr) As HRESULT
End Interface

/* interface IRecordInfo */
/* [uuid][object][local] */

Dim IID_IRecordInfo = [&h0000002F, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID

Interface IRecordInfo
	Inherits IUnknown

	Function RecordInit(
		/* [out] */ pvNew As VoidPtr) As HRESULT
	Function RecordClear(
		/* [in] */ pvExisting As VoidPtr) As HRESULT
	Function RecordCopy(
		/* [in] */ pvExisting As VoidPtr,
		/* [out] */ pvNew As VoidPtr) As HRESULT
	Function GetGuid(
		/* [out] */ ByRef guid As GUID) As HRESULT
	Function GetName(
		/* [out] */ ByRef bstrName As BSTR) As HRESULT
	Function GetSize(
		/* [out] */ ByRef cbSize As DWord) As HRESULT
	Function GetTypeInfo(
		/* [out] */ ByRef TypeInfo As ITypeInfo) As HRESULT
	Function GetField(
		/* [in] */ pvData As VoidPtr,
		/* [in] */ szFieldName As LPCOLESTR,
		/* [out] */ ByRef varField As VARIANT) As HRESULT
	Function GetFieldNoCopy(
		/* [in] */ pvData As VoidPtr,
		/* [in] */ szFieldName As LPCOLESTR,
		/* [out] */ ByRef varField As VARIANT,
		/* [out] */ ByRef pvDataCArray As VoidPtr) As HRESULT
	Function PutField(
		/* [in] */ wFlags As DWord,
		/* [out][in] */ pvData As VoidPtr,
		/* [in] */ szFieldName As LPCOLESTR,
		/* [in] */ ByRef varField As VARIANT) As HRESULT
	Function PutFieldNoCopy(
		/* [in] */ wFlags As DWord,
		/* [out][in] */ pvData As VoidPtr,
		/* [in] */ szFieldName As LPCOLESTR,
		/* [in] */ ByRef varField As VARIANT) As HRESULT
	Function GetFieldNames(
		/* [out][in] */ ByRef cNames As DWord,
		/* [length_is][size_is][out] */ rgBstrNames As *BSTR) As HRESULT
	Function IsMatchingType(
		/* [in] */ RecordInfo As IRecordInfo) As BOOL
	Function RecordCreate() As VoidPtr
	Function RecordCreateCopy(
		/* [in] */ pvSource As VoidPtr,
		/* [out] */ ByRef pvDest As VoidPtr) As HRESULT
	Function RecordDestroy(
		/* [in] */ pvRecord As VoidPtr) As HRESULT
End Interface

/* interface IErrorLog */
/* [unique][uuid][object] */

Dim IID_IErrorLog = [&h3127CA40, &h446E, &h11CE, [&h81, &h35, &h00, &hAA, &h00, &h4B, &hB8, &h51]] As IID

Interface IErrorLog
	Inherits IUnknown

	Function AddError(
		/* [in] */ pszPropName As LPCOLESTR,
		/* [in] */ ByRef pExcepInfo As EXCEPINFO) As HRESULT
End Interface

/* interface IPropertyBag */
/* [unique][uuid][object] */

Dim IID_IPropertyBag = [&h55272A00, &h42CB, &h11CE, [&h81, &h35, &h00, &hAA, &h00, &h4B, &hB8, &h51]] As IID

Interface IPropertyBag
	Inherits IUnknown

	/* [local] */ Function Read(
		/* [in] */ pszPropName As LPCOLESTR,
		/* [out][in] */ ByRef Var As VARIANT,
		/* [in] */ ErrorLog As IErrorLog) As HRESULT

	Function Write(
		/* [in] */ pszPropName As LPCOLESTR,
		/* [in] */ ByRef Var As VARIANT) As HRESULT
End Interface
