#ifndef _INC_OBJIDL
#define _INC_OBJIDL

TypeDef SNB = **OLECHAR

Type COSERVERINFO
	dwReserved1 As DWord
	pwszName As LPWSTR
	pAuthInfo As *COAUTHINFO
	dwReserved2 As DWord
End Type

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

Dim IID_IMarshal = [&h00000003, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IMarshal
	Inherits IUnknown

	Function GetUnmarshalClass(
		/* [in] */ ByRef iid As IID,
		/* [unique][in] */ pv As VoidPtr,
		/* [in] */ dwDestContext As DWord,
		/* [unique][in] */ pvDestContext As VoidPtr,
		/* [in] */ mshlflags As DWord,
		/* [out] */ ByRef Cid As CLSID) As HRESULT
	Function GetMarshalSizeMax(
		/* [in] */ ByRef iid As IID,
		/* [unique][in] */ pv As VoidPtr,
		/* [in] */ dwDestContext As DWord,
		/* [unique][in] */ pvDestContext As VoidPtr,
		/* [in] */ mshlflags As DWord,
		/* [out] */ ByRef Size As DWord) As HRESULT
	Function MarshalInterface(
		/* [unique][in] */ pStm As IStream,
		/* [in] */ ByRef iid As IID,
		/* [unique][in] */ pv As VoidPtr,
		/* [in] */ dwDestContext As DWord,
		/* [unique][in] */ pvDestContext As VoidPtr,
		/* [in] */ mshlflags As DWord) As HRESULT
	Function UnmarshalInterface(
		/* [unique][in] */ pStm As IStream,
		/* [in] */ ByRef iid As IID,
		/* [out] */ ByRef ppv As VoidPtr) As HRESULT
	Function ReleaseMarshalData(
		/* [unique][in] */ pStm As *IStream) As HRESULT
	Function DisconnectObject(
		/* [in] */ dwReserved As DWord) As HRESULT
End Interface

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

Dim IID_IMarshal2 = [&h000001Cf, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IMarshal2
	Inherits IMarshal
End Interface

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

Dim IID_IMalloc = [&h00000002, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IMalloc
	Inherits IUnknown

	Function Alloc(
		/* [in] */ cb As SIZE_T) As VoidPtr
	Function Realloc(
		/* [in] */ pv As VoidPtr,
		/* [in] */ cb As SIZE_T) As VoidPtr
	Sub Free(
		/* [in] */ pv As VoidPtr)
	Function GetSize(pv As VoidPtr) As SIZE_T
	Function DidAlloc(pv As VoidPtr) As Long
	Sub HeapMinimize()
End Interface

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

Dim IID_IMallocSpy = [&h0000001d, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IMallocSpy
	Inherits IUnknown

	Function PreAlloc(
		/* [in] */ cbRequest As SIZE_T) As HRESULT
	Function PostAlloc(
		/* [in] */ pActual As VoidPtr) As VoidPtr
	Function PreFree(
		/* [in] */ pRequest As VoidPtr,
		/* [in] */ fSpyed As BOOL) As VoidPtr
	Sub PostFree(
		/* [in] */ fSpyed As BOOL)
	Function PreRealloc(
		/* [in] */ pRequest As VoidPtr,
		/* [in] */ cbRequestt As SIZE_T,
		/* [out] */ ByRef ppNewRequest As VoidPtr,
		/* [in] */ fSpyed As BOOL) As HRESULT
	Function PostRealloc(
		/* [in] */ pActual As VoidPtr,
		/* [in] */ fSpyed As BOOL) As VoidPtr
	Function PreGetSize(
		/* [in] */ pRequest As VoidPtr,
		/* [in] */ fSpyed As BOOL) As VoidPtr
	Function PostGetSize(
		/* [in] */ cbActual As SIZE_T,
		/* [in] */ fSpyed As BOOL) As HRESULT
	Function PreDidAlloc(
	/* [in] */ pRequest As VoidPtr,
	/* [in] */ fSpyed As BOOL) As VoidPtr
	Function PostDidAlloc(
	/* [in] */ pRequest As VoidPtr,
	/* [in] */ fSpyed As BOOL,
	/* [in] */ fActual As Long) As Long
	Sub PreHeapMinimize()
	Sub PostHeapMinimize()
End Interface

' IStdMarshalInfo

' IExternalCennection

Type MULTI_QI
	pIID As * /*Const*/ IID
	pItf As IUnknown
	hr As HRESULT
End Type

Dim IID_IMultiQI = [&h00000020, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IMultiQI
	Inherits IUnknown

	Function QueryMultipleInterfaces(
		/* [in] */ cMQIs As DWord,
		/* [out][in] */ pMQIs As *MULTI_QI) As HRESULT
End Interface

' AsyncIMultiQI

' IInternalUnknown

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

Dim IID_IEnumUnknown = [&h00000100, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IEnumUnknown
	Inherits IUnknown

	/* [local] */ Function Next_(
		/* [in] */ celt As DWord,
		/* [out] */ rgelt As *IUnknown,
		/* [out] */ ByRef celtFetched As DWord) As HRESULT
	Function Skip(
		/* [in] */ celt As DWord) As HRESULT
	Function Reset() As HRESULT
	Function Clone(
		/* [out] */ ByRef enumUnk As IEnumUnknown) As HRESULT
End Interface

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

Type BIND_OPTS
	cbStruct As DWord
	grfFlags As DWord
	grfMode As DWord
	dwTickCountDeadline As DWord
End Type

Type BIND_OPTS2
'	Inherits BIND_OPTS
	cbStruct As DWord
	grfFlags As DWord
	grfMode As DWord
	dwTickCountDeadline As DWord

	dwTrackFlags As DWord
	dwClassContext As DWord
	locale As LCID
	pServerInfo As *COSERVERINFO
End Type

Type BIND_OPTS3
'	Inherits BIND_OPTS
	cbStruct As DWord
	grfFlags As DWord
	grfMode As DWord
	dwTickCountDeadline As DWord

	dwTrackFlags As DWord
	dwClassContext As DWord
	locale As LCID
	pServerInfo As *COSERVERINFO

	hwnd As HWND
End Type

Const Enum BIND_FLAGS
	BIND_MAYBOTHERUSER
	BIND_JUSTTESTEXISTENCE
End Enum

Dim IID_IBindCtx = [&h0000000E, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IBindCtx
	Inherits IUnknown

	Function RegisterObjectBound(
		/* [unique][in] */ punk As IUnknown) As HRESULT
	Function RevokeObjectBound(
		/* [unique][in] */ punk As IUnknown) As HRESULT
	Function ReleaseBoundObjects() As HRESULT
	/* [local] */ Function SetBindOptions(
		/* [in] */ ByRef bindopts As BIND_OPTS) As HRESULT
	/* [local] */ Function GetBindOptions(
		/* [out][in] */ ByRef bindopts As BIND_OPTS) As HRESULT
	Function GetRunningObjectTable(
		/* [out] */ ByRef rot As IRunningObjectTable) As HRESULT
	Function RegisterObjectParam(
		/* [in] */ pszKey As LPOLESTR,
		/* [unique][in] */ unk As IUnknown) As HRESULT
	Function GetObjectParam(
		/* [in] */ pszKey As LPOLESTR,
		/* [out] */ ByRef unk As IUnknown) As HRESULT
	Function EnumObjectParam(
		/* [out] */ ByRef enumstr As IEnumString) As HRESULT
	Function RevokeObjectParam(
		/* [in] */ pszKey As LPOLESTR) As HRESULT
End Interface

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

Dim IID_IEnumMoniker = [&h00000102, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IEnumMoniker
	Inherits IUnknown
	/* [local] */ Function Next_(
		/* [in] */ celt As DWord,
		/* [length_is][size_is][out] */ rgelt As *IMoniker,
		/* [out] */ ByRef celtFetched As DWord) As HRESULT
	Function Skip(
		/* [in] */ celt As DWord) As HRESULT
	Function Reset() As HRESULT
	Function Clone(
		/* [out] */ enumMon As IEnumMoniker) As HRESULT
End Interface

/* interface IRunningObjectTable */
/* [uuid][object] */

Dim IID_IRunningObjectTable = [&h00000010, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IRunningObjectTable
	Inherits IUnknown

	Function Register(
		/* [in] */ grfFlags As DWord,
		/* [unique][in] */ unkObject As IUnknown,
		/* [unique][in] */ mkObjectName As IMoniker,
		/* [out] */ ByRef dwRegister As DWord) As HRESULT
	Function Revoke(
		/* [in] */ dwRegister As DWord) As HRESULT
	Function IsRunning(
		/* [unique][in] */ mkObjectName As IMoniker) As HRESULT
	Function GetObject(
		/* [unique][in] */ mkObjectName As IMoniker,
		/* [out] */ ByRef unkObject As IUnknown) As HRESULT
	Function NoteChangeTime(
		/* [in] */ dwRegister As DWord,
		/* [in] */ ByRef filetime As FILETIME) As HRESULT
	Function GetTimeOfLastChange(
		/* [unique][in] */ mkObjectName As IMoniker,
		/* [in] */ ByRef filetime As FILETIME) As HRESULT
	Function EnumRunning(
		/* [out] */ ByRef enumMoniker As IEnumMoniker) As HRESULT
End Interface

Dim IID_IPersist = [&h0000010c, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IPersist
	Inherits IUnknown

	Function GetClassID(
		/* [out] */ ByRef ClassID As CLSID) As HRESULT
End Interface

Dim IID_IPersistStream = [&h00000109, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IPersistStream
	Inherits IPersist

	Function IsDirty() As HRESULT

	Function Load(
		/* [unique][in] */ Stm As IStream) As HRESULT
	Function Save(
		/* [unique][in] */ Stm As IStream,
		/* [in] */ fClearDirty As BOOL) As HRESULT
	Function GetSizeMax(
		/* [out] */ ByRef cbSize As ULARGE_INTEGER) As HRESULT
End Interface

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

Const Enum MKSYS
	MKSYS_NONE = 0
	MKSYS_GENERICCOMPOSITE = 1
	MKSYS_FILEMONIKER = 2
	MKSYS_ANTIMONIKER = 3
	MKSYS_ITEMMONIKER = 4
	MKSYS_POINTERMONIKER = 5
	MKSYS_CLASSMONIKER = 7
	MKSYS_OBJREFMONIKER = 8
	MKSYS_SESSIONMONIKER = 9
	MKSYS_LUAMONIKER = 10
End Enum

/* [v1_enum] */ Const Enum MKREDUCE
	MKRREDUCE_ONE = (3 << 16)
	MKRREDUCE_TOUSER = (2 << 16)
	MKRREDUCE_THROUGHUSER = (1 << 16)
	MKRREDUCE_ALL = 0
End Enum

Dim IID_IMoniker = [&h0000000f, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IMoniker
	Inherits IPersistStream

	/* [local] */ Function BindToObject(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [in] */ ByRef riidResult As IID,
		/* [iid_is][out] */ ByRef Result As Any) As HRESULT
	/* [local] */ Function BindToStorage(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [in] */ ByRef riid As IID,
		/* [iid_is][out] */ ByRef Obj As Any) As HRESULT
	Function Reduce(
		/* [unique][in] */ bc As IBindCtx,
		/* [in] */ dwReduceHowFar As DWord,
		/* [unique][out][in] */ ByRef mkToLeft As IMoniker,
		/* [out] */ ByRef mkReduced As IMoniker) As HRESULT
	Function ComposeWith(
		/* [unique][in] */ ByRef mkRight As IMoniker,
		/* [in] */ fOnlyIfNotGeneric As BOOL,
		/* [out] */ ByRef mkComposite As IMoniker) As HRESULT
	Function Enum_(
		/* [in] */ fForward As BOOL,
		/* [out] */ ByRef enumMoniker As IEnumMoniker) As HRESULT
	Function IsEqual(
		/* [unique][in] */ mkOtherMoniker As IMoniker) As HRESULT
	Function Hash(
		/* [out] */ ByRef dwHash As DWord) As HRESULT
	Function IsRunning(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [unique][in] */ mkNewlyRunning As IMoniker) As HRESULT
	Function GetTimeOfLastChange(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [out] */ ByRef FileTime As FILETIME) As HRESULT
	Function Inverse(
		/* [out] */ ByRef mk As IMoniker) As HRESULT
	Function CommonPrefixWith(
		/* [unique][in] */ mkOther As IMoniker,
		/* [out] */ ByRef mkPrefix As IMoniker) As HRESULT
	Function RelativePathTo(
		/* [unique][in] */ mkOther As IMoniker,
		/* [out] */ ByRef mkRelPath As IMoniker) As HRESULT
	Function GetDisplayName(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [out] */ ByRef pszDisplayName As LPOLESTR) As HRESULT
	Function ParseDisplayName(
		/* [unique][in] */ bc As IBindCtx,
		/* [unique][in] */ mkToLeft As IMoniker,
		/* [in] */  pszDisplayName As LPOLESTR,
		/* [out] */ ByRef chEaten As DWord,
		/* [out] */ ByRef mkOut As IMoniker) As HRESULT
	Function IsSystemMoniker(
		/* [out] */ ByRef dwMksys As DWord) As HRESULT
End Interface

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

Dim IID_IEnumString = [&h00000101, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IEnumString
	Inherits IUnknown

	/* [local] */ Function Next_(
		/* [in] */ celt As DWord,
		/* [length_is][size_is][out] */ ByRef rgelt As LPOLESTR,
		/* [out] */ ByRef celtFetched As DWord) As HRESULT
	Function Skip(
		/* [in] */ celt As DWord) As HRESULT
	Function Reset() As HRESULT
	Function Clone(
		/* [out] */ ByRef enumstr As IEnumString) As HRESULT
End Interface

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

Dim IID_ISequentialStream = [&h0c733a30, &h2a1c, &h11ce, [&had, &he5, &h00, &haa, &h00, &h44, &h77, &h3d]] As IID
Interface ISequentialStream
	Inherits IUnknown

	Function Read(
		/* [length_is][size_is][out] */ pv As VoidPtr,
		/* [in] */ cb As DWord,
		/* [out] */ ByRef cbRead As DWord) As HRESULT
	Function Write(
		/* [size_is][in] */ pv As VoidPtr,
		/* [in] */ cb As DWord,
		/* [out] */ ByRef cbWritten As DWord) As HRESULT
End Interface

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

Type STATSTG
	pwcsName As LPOLESTR
	type_ As DWord
	cbSize As ULARGE_INTEGER
	mtime As FILETIME
	ctime As FILETIME
	atime As FILETIME
	grfMode As DWord
	grfLocksSupported As DWord
	clsid As CLSID
	grfStateBits As DWord
	reserved As DWord
End Type

Enum STGTY
	STGTY_STORAGE = 1
	STGTY_STREAM = 2
	STGTY_LOCKBYTES = 3
	STGTY_PROPERTY = 4
End Enum

Enum STREAM_SEEK
	STREAM_SEEK_SET = 0
	STREAM_SEEK_CUR = 1
	STREAM_SEEK_END = 2
End Enum

Enum LOCKTYPE
	LOCK_WRITE = 1
	LOCK_EXCLUSIVE = 2
	LOCK_ONLYONCE = 4
End Enum

Dim IID_IStream = [&h0000000c, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IStream
	Inherits ISequentialStream

	/* [local] */ Function Seek(
		/* [in] */ dlibMove As LARGE_INTEGER,
		/* [in] */ dwOrigin As DWord,
		/* [out] */ plibNewPosition As *ULARGE_INTEGER) As HRESULT
	Function SetSize(
		/* [in] */ libNewSize As ULARGE_INTEGER) As HRESULT
	/* [local] */ Function CopyTo(
		/* [unique][in] */ stm As IStream,
		/* [in] */ cb As ULARGE_INTEGER,
		/* [out] */ pcbRead As *ULARGE_INTEGER,
		/* [out] */ pcbWritten As *ULARGE_INTEGER) As HRESULT
	Function Commit(
		/* [in] */ grfCommitFlags As DWord) As HRESULT
	Function Revert() As HRESULT
	Function LockRegion(
		/* [in] */ libOffset As ULARGE_INTEGER,
		/* [in] */ cb As ULARGE_INTEGER,
		/* [in] */ dwLockType As DWord) As HRESULT
	Function UnlockRegion(
		/* [in] */ libOffset As ULARGE_INTEGER,
		/* [in] */ cb As ULARGE_INTEGER,
		/* [in] */ dwLockType As DWord) As HRESULT
	Function Stat(
		/* [out] */ pstatstg As *STATSTG,
		/* [in] */ grfStatFlag As DWord) As HRESULT
	Function Clone(
		/* [out] */ ByRef stm As IStream) As HRESULT
End Interface

TypeDef LPSTREAM = *IStream

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

Dim IID_IEnumSTATSTG = [&h0000000d, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IEnumSTATSTG
	Inherits IUnknown

	/* [local] */ Function Next_(
		/* [in] */ celt As DWord,
		/* [length_is][size_is][out] */ rgelt As *STATSTG,
		/* [out] */ ByRef celtFetched As DWord) As HRESULT
	Function Skip(
		/* [in] */ celt As DWord) As HRESULT
	Function Reset() As HRESULT
	Function Clone(
		/* [out] */ ByRef enumStat As IEnumSTATSTG) As HRESULT
End Interface

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

TypeDef LPSTORAGE = /* [unique] */ *IStorage

Type RemSNB
	ulCntStr As DWord
	ulCntChar As DWord
	rgString[ELM(1)] As OLECHAR
End Type

TypeDef wireSNB /* [unique] */ = *RemSNB

TypeDef SNB = /* [wire_marshal] */ **OLECHAR

Dim IID_IStorage = [&h0000000b, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IStorage
	Inherits IUnknown

	Function CreateStream(
		/* [string][in] */ pwcsName As *OLECHAR,
		/* [in] */ grfMode As DWord,
		/* [in] */ reserved1 As DWord,
		/* [in] */ reserved2 As DWord,
		/* [out] */ ByRef stm As IStream) As HRESULT
	/* [local] */ Function OpenStream(
		/* [string][in] */ pwcsName As *OLECHAR,
		/* [unique][in] */ reserved1 As VoidPtr,
		/* [in] */ grfMode As DWord,
		/* [in] */ reserved2 As DWord,
		/* [out] */ ByRef stm As IStream) As HRESULT
	Function CreateStorage(
		/* [string][in] */ pwcsName As *OLECHAR,
		/* [in] */ grfMode As DWord,
		/* [in] */ reserved1 As DWord,
		/* [in] */ reserved2 As DWord,
		/* [out] */ ByRef stg As IStorage) As HRESULT
	Function OpenStorage(
		/* [string][unique][in] */ pwcsName As *OLECHAR,
		/* [unique][in] */ pstgPriority As IStorage,
		/* [in] */ grfMode As DWord,
		/* [unique][in] */ snbExclude As SNB,
		/* [in] */ reserved As DWord,
		/* [out] */ ByRef stg As IStorage) As HRESULT
	/* [local] */ Function CopyTo(
		/* [in] */ ciidExclude As DWord,
		/* [size_is][unique][in] */ rgiidExclude As * /*Const*/ IID,
		/* [unique][in] */ snbExclude As SNB,
		/* [unique][in] */ stgDest As IStorage) As HRESULT
	Function MoveElementTo(
		/* [string][in] */ pwcsName As *OLECHAR,
		/* [unique][in] */ stgDest As IStorage,
		/* [string][in] */ pwcsNewName As *OLECHAR,
		/* [in] */ grfFlags As DWord) As HRESULT
	Function Commit(
		/* [in] */ grfCommitFlags As DWord) As HRESULT
	Function Revert() As HRESULT
	/* [local] */ Function EnumElements(
		/* [in] */ reserved1 As DWord,
		/* [size_is][unique][in] */ reserved2 As VoidPtr,
		/* [in] */ reserved3 As DWord,
		/* [out] */ ByRef enum_ As IEnumSTATSTG) As HRESULT
	Function DestroyElement(
		/* [string][in] */ pwcsName As *OLECHAR) As HRESULT
	Function RenameElement(
		/* [string][in] */ pwcsOldName As *OLECHAR,
		/* [string][in] */ pwcsNewName As *OLECHAR) As HRESULT
	Function SetElementTimes(
		/* [string][unique][in] */ pwcsName As *OLECHAR,
		/* [unique][in] */ ByRef ctime As /*Const*/ FILETIME,
		/* [unique][in] */ ByRef atime As /*Const*/ FILETIME,
		/* [unique][in] */ ByRef mtime As /*Const*/ FILETIME) As HRESULT
	Function SetClass(
		/* [in] */ ByRef clsid As CLSID) As HRESULT
	Function SetStateBits(
		/* [in] */ grfStateBits As DWord,
		/* [in] */ grfMask As DWord) As HRESULT
	Function Stat(
		/* [out] */ ByRef statstg As STATSTG,
		/* [in] */ grfStatFlag As DWord) As HRESULT
End Interface

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

Dim IID_IPersistFile = [&h0000010b, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IPersistFile
	Inherits IPersist

	Function IsDirty() As HRESULT
	Function Load(
		/* [in] */ pszFileName As LPCOLESTR,
		/* [in] */ dwMode As DWord) As HRESULT
	Function Save(
		/* [unique][in] */ pszFileName As LPCOLESTR,
		/* [in] */ fRemember As BOOL) As HRESULT
	Function SaveCompleted(
		/* [unique][in] */ pszFileName As LPCOLESTR) As HRESULT
	Function GetCurFile(
		/* [out] */ ByRef pszFileName As LPOLESTR) As HRESULT
End Interface

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

Dim IID_IPersistStorage = [&h0000010a, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IPersistStorage
	Inherits IPersist

	Function IsDirty() As HRESULT
	Function InitNew(
		/* [unique][in] */ Stg As IStorage) As HRESULT
	Function Load(
		/* [unique][in] */ Stg As IStorage) As HRESULT
	Function Save(
		/* [unique][in] */ StgSave As IStorage,
		/* [in] */ fSameAsLoad As BOOL) As HRESULT
	Function SaveCompleted(
		/* [unique][in] */ StgNew As IStorage) As HRESULT
	Function HandsOffStorage() As HRESULT
End Interface

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

Dim IID_ILockBytes = [&h0000000a, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface ILockBytes
	Inherits IUnknown

	/* [local] */ Function ReadAt(
		/* [in] */ ulOffset As ULARGE_INTEGER,
		/* [length_is][size_is][out] */ pv As VoidPtr,
		/* [in] */ cb As DWord,
		/* [out] */ ByRef cbRead As DWord) As HRESULT
	/* [local] */ Function WriteAt(
		/* [in] */ ulOffset As ULARGE_INTEGER,
		/* [size_is][in] */ pv As VoidPtr,
		/* [in] */ cb As DWord,
		/* [out] */ ByRef cbWritten As DWord) As HRESULT
	Function Flush() As HRESULT
	Function SetSize(
	/* [in] */ cb As ULARGE_INTEGER) As HRESULT
	Function LockRegion(
		/* [in] */ libOffset As ULARGE_INTEGER,
		/* [in] */ cb As ULARGE_INTEGER,
		/* [in] */ dwLockType As DWord) As HRESULT
	Function UnlockRegion(
		/* [in] */ libOffset As ULARGE_INTEGER,
		/* [in] */ cb As ULARGE_INTEGER,
		/* [in] */ dwLockType As DWord) As HRESULT
	Function Stat(
		/* [out] */ ByRef statstg As STATSTG,
		/* [in] */ grfStatFlag As DWord) As HRESULT
End Interface

Type DVTARGETDEVICE
	tdSize As DWord
	tdDriverNameOffset As Word
	tdDeviceNameOffset As Word
	tdPortNameOffset As Word
	tdExtDevmodeOffset As Word
	tdData[ELM(1)] As Byte
End Type

TypeDef LPCLIPFORMAT = *CLIPFORMAT

Type FORMATETC
	cfFormat As CLIPFORMAT
	ptd As *DVTARGETDEVICE
	dwAspect As DWord
	lindex As Long
	tymed As DWord
End Type

TypeDef LPFORMATETC = *FORMATETC

Interface IEnumFORMATETC
	Inherits IUnknown
End Interface

Interface IEnumSTATDATA
	Inherits IUnknown
End Interface

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

Dim IID_IRootStorage = [&h00000012, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IRootStorage
	Inherits IUnknown

	Function SwitchToFile(
		/* [in] */ pszFile As LPOLESTR) As HRESULT
End Interface

/* interface IAdviseSink */
/* [unique][async_uuid][uuid][object] */

Enum /*[transmit_as(long)]*/ TYMED
	TYMED_HGLOBAL = 1
	TYMED_FILE = 2
	TYMED_ISTREAM = 4
	TYMED_ISTORAGE = 8
	TYMED_GDI = 16
	TYMED_MFPICT = 32
	TYMED_ENHMF = 64
	TYMED_NULL = 0
End Enum

Type RemSTGMEDIUM
	tymed As DWord
	dwHandleType As DWord
	pData As DWord
	pUnkForRelease As DWord
	cbData As DWord
	data[ELM(1)] As Byte
End Type

/* [wire_marshal] */ Type STGMEDIUM
	tymed As DWord
	data As VoidPtr
'	/* [switch_type(DWORD), switch_is((DWORD) tymed)] */
'	Union
'		/*[case(TYMED_GDI)]*/      hBitmap As HBITMAP
'		/*[case(TYMED_MFPICT)]*/   hMetaFilePict As HMETAFILEPICT
'		/*[case(TYMED_ENHMF)]*/    hEnhMetaFile As HENHMETAFILE
'		/*[case(TYMED_HGLOBAL)]*/  hGlobal As HGLOBAL
'		/*[case(TYMED_FILE)]*/     lpszFileName As LPWSTR
'		/*[case(TYMED_ISTREAM)]*/  pstm As *IStream
'		/*[case(TYMED_ISTORAGE)]*/ pstg As *IStorage
'		/*[default]*/
'	End Union
	/*[unique]*/ pUnkForRelease As *IUnknown
End Type

Type GDI_OBJECT
'	ObjectType As DWord
'	/* [switch_type] */ u As Union
'		hBitmap As wireHBITMAP
'		hPalette As wireHPALETTE
'		hGeneric As wireHGLOBAL
'	End Union
End Type

Type userSTGMEDIUM
'	tymed As DWord
'	/* [switch_type] */ u As Union
'		/* Empty union arm */
'		hMetaFilePict As wireHMETAFILEPICT
'		hHEnhMetaFile As wireHENHMETAFILE
'		hGdiHandle As *GDI_OBJECT
'		hGlobal As wireHGLOBAL
'		lpszFileName As LPOLESTR
'		pstm As *BYTE_BLOB
'		pstg As BYTE_BLOB
'	End Union
'	pUnkForRelease As IUnknown
End Type

TypeDef wireSTGMEDIUM = /* [unique] */ *userSTGMEDIUM
TypeDef ASYNC_STGMEDIUM = /* [unique] */ *userSTGMEDIUM
TypeDef wireSTGMEDIUM = /* [wire_marshal] */ STGMEDIUM

Type userFLAG_STGMEDIUM
'	ContextFlags As Long
'	fPassOwnership As Long
'	Stgmed As userSTGMEDIUM
End Type

TypeDef wireFLAG_STGMEDIUM = /* [unique] */ *userFLAG_STGMEDIUM

Type /* [wire_marshal] */ FLAG_STGMEDIUM
	ContextFlags As Long
	fPassOwnership As Long
	Stgmed As STGMEDIUM
End Type

Dim IID_IAdviseSink = [&h0000010f, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IAdviseSink
	Inherits IUnknown

	/* [local] */ Sub OnDataChange(
		/* [unique][in] */ ByRef Formatetc As FORMATETC,
		/* [unique][in] */ ByRef Stgmed As STGMEDIUM)
	/* [local] */ Sub OnViewChange(
		/* [in] */ dwAspect As DWord,
		/* [in] */ lindex As Long)
	/* [local] */ Sub OnRename(
		/* [in] */ mk As IMoniker)
	/* [local] */ Sub OnSave()
	/* [local] */ Sub OnClose()
End Interface

' AsyncIAdviseSink

' IAdviseSink2

' AsyncIAdviseSink2

Dim IID_IDataObject = [&h0000010e, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
Interface IDataObject
	Inherits IUnknown

	Function /* [local] */ GetData(
		/* [unique][in] */ ByRef rformatetcIn As FORMATETC,
		/* [out] */ ByRef rmedium As STGMEDIUM) As HRESULT
	Function /* [local] */ GetDataHere(
		/* [unique][in] */ ByRef rformatetcIn As FORMATETC,
		/* [out] */ ByRef pmedium As STGMEDIUM) As HRESULT
	Function QueryGetData(
		/* [unique][in] */ ByRef pformatetc As FORMATETC) As HRESULT
	Function GetCanonicalFormatEtc(
		/* [unique][in] */ ByRef pformatetcIn As FORMATETC,
		/* [out] */ ByRef pmedium As STGMEDIUM) As HRESULT
	Function /* [local] */ SetData(
		/* [unique][in] */ pformatetcIn As *FORMATETC,
		/* [out] */ pmedium As *STGMEDIUM,
		/* [in] */ fRelease As BOOL) As HRESULT
	Function EnumFormatEtc(
		/* [in] */ dwDirection As DWord,
		/* [out] */ ByRef rpenumFormatEtc As IEnumFORMATETC) As HRESULT
	Function DAdvise(
		/* [in] */ ByRef pformatetc As FORMATETC,
		/* [in] */ advf As DWord,
		/* [unique][in] */ pAdvSink As IAdviseSink,
		/* [out] */ pdwConnection As *DWord) As HRESULT
	Function DUnadvise(
		/* [in] */ dwConnection As DWord) As HRESULT
	Function EnumDAdvise(
		/* [out] */ ByRef rpenumAdvise As IEnumSTATDATA) As HRESULT
End Interface

Interface IDataAdviseHolder
	Inherits IUnknown
End Interface

Enum CALLTYPE
	CALLTYPE_TOPLEVEL = 1
	CALLTYPE_NESTED = 2
	CALLTYPE_ASYNC = 3
	CALLTYPE_TOPLEVEL_CALLPENDING = 4
	CALLTYPE_ASYNC_CALLPENDING = 5
End Enum

Enum ERVERCALL
	SERVERCALL_ISHANDLED = 0
	SERVERCALL_REJECTED = 1
	SERVERCALL_RETRYLATER = 2
End Enum

Enum PENDINGTYPE
	PENDINGTYPE_TOPLEVEL = 1
	PENDINGTYPE_NESTED = 2
End Enum

Enum PENDINGMSG
	PENDINGMSG_CANCELCALL = 0
	PENDINGMSG_WAITNOPROCESS = 1
	PENDINGMSG_WAITDEFPROCESS = 2
End Enum

Type INTERFACEINFO
	pUnk As *IUnknown
	iid As IID
	wMethod As Word
End Type
TypeDef LPINTERFACEINFO = *INTERFACEINFO

Dim IID_IMessageFilter = [&h00000016, &h0000, &h0000, [&hC0, &h00, &h00, &h00, &h00, &h00, &h00, &h46]] As IID
Interface IMessageFilter
	Inherits IUnknown

	Function HandleInComingCall(
		/* [in] */ dwCallType As DWord,
		/* [in] */ htaskCaller As HTASK,
		/* [in] */ dwTickCount As DWord,
		/* [in] */ lpInterfaceInfo As LPINTERFACEINFO) As DWord
	Function RetryRejectedCall(
		/* [in] */ htaskCallee As HTASK,
		/* [in] */ dwTickCount As DWord,
		/* [in] */ dwRejectType As DWord) As DWord
	Function MessagePending(
		/* [in] */ htaskCallee As HTASK,
		/* [in] */ dwTickCount As DWord,
		/* [in] */ dwPendingType As DWord) As DWord
End Interface

' IRpcChannelBuffer

' IRpcChannelBuffer2

' IAsyncRpcChannelBuffer

' IRpcChannelBuffer3

' IRpcSyntaxNegotiate

' IRpcProxyBuffer

' IRpcStubBuffer

' IPSFactoryBuffer

' IChannelHook

' IClientSecurity

' IServerSecurity

' IClassActivator

' IRpcOptions

Interface IFillLockBytes
	Inherits IUnknown
End Interface

' IProgressNotify

' ILayoutStorage

' IBlockingLock

' ITimeAndNoticeControl

' IOplockStorage

' ISurrogate

' IGlobalInterfaceTable

' IDirectWriterLock

' ISynchronize

' ISynchronizeHandle

' ISynchronizeEvent

' ISynchronizeContainer

' ISynchronizeMutex

' ICancelMethodCalls

' IAsyncManager

' ICallFactory

' IRpcHelper

' IReleaseMarshalBuffers

' IWaitMultiple

' IUrlMon

' IForegroundTransfer

' IAddrTrackingControl

' IAddrExclusionControl

' IPipeByte

' AsyncIPipeByte

' IPipeLong

' AsyncIPipeLong

' IPipeDouble

' AsyncIPipeDouble

' IThumbnailExtractor

' IDummyHICONIncluder

' IEnumContextProps

' IContext

' IObjContext

' IProcessLock

' ISurrogateService

' IComThreadingInfo

' IProcessInitControl

' IInitializeSpy

#endif '_INC_OBJIDL
