Index: Include/objidl.sbp
===================================================================
--- Include/objidl.sbp	(revision 223)
+++ Include/objidl.sbp	(revision 285)
@@ -4,14 +4,64 @@
 TypeDef SNB = **OLECHAR
 
-' IMarshal
+Type COSERVERINFO
+	dwReserved1 As DWord
+	pwszName As LPWSTR
+	pAuthInfo As *COAUTHINFO
+	dwReserved2 As DWord
+End Type
+
+/* interface IMarshal */
+/* [uuid][object][local] */
+
+TypeDef LPMARSHAL = /* [unique] */ *IMarshal
+
+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
 
 ' IMarshal2
 
+Dim IID_IMalloc = [&h00000002, 0, 0, [&hC0, 0, 0, 0, 0, 0, 0, &h46]] As IID
 Interface IMalloc
 	Inherits IUnknown
 
-	Function Alloc(cb As SIZE_T) As VoidPtr
-	Function Realloc(pv As VoidPtr, cb As SIZE_T) As VoidPtr
-	Sub Free(pv As VoidPtr)
+	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
@@ -67,6 +117,49 @@
 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
 
@@ -92,8 +185,8 @@
 
 	Function Load(
-		/* [unique][in] */ pStm As *IStream) As HRESULT
+		/* [unique][in] */ Stm As IStream) As HRESULT
 
 	Function Save(
-		/* [unique][in] */ pStm As *IStream,
+		/* [unique][in] */ Stm As IStream,
 		/* [in] */ fClearDirty As BOOL) As HRESULT
 
@@ -106,5 +199,18 @@
 End Interface
 
-' IEnumString
+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
 
 Dim IID_ISequentialStream = [&h0c733a30, &h2a1c, &h11ce, [&had, &he5, &h00, &haa, &h00, &h44, &h77, &h3d]] As IID
@@ -112,6 +218,6 @@
 	Inherits IUnknown
 
-	Function Read(pv As VoidPtr, cb As DWord, pcbRead As *DWord) As HRESULT
-	Function Write(pv As VoidPtr, cb As DWord, pcbWritten As *DWord) As HRESULT
+	Function Read(pv As VoidPtr, cb As DWord, ByRef cbRead As DWord) As HRESULT
+	Function Write(pv As VoidPtr, cb As DWord, ByRef cbWritten As DWord) As HRESULT
 End Interface
 
@@ -161,5 +267,5 @@
 	Function UnlockRegion(libOffset As ULARGE_INTEGER, cb As ULARGE_INTEGER, dwLockType As DWord) As HRESULT
 	Function Stat(pstatstg As *STATSTG, grfStatFlag As DWord) As HRESULT
-	Function Clone(ByRef ppstm As *IStream) As HRESULT
+	Function Clone(ByRef stm As IStream) As HRESULT
 End Interface
 TypeDef LPSTREAM = *IStream
@@ -173,5 +279,5 @@
 
 /* interface IStorage */
-/* [unique][uuid][object] */ 
+/* [unique][uuid][object] */
 
 TypeDef LPSTORAGE = /* [unique] */ *IStorage
@@ -197,5 +303,5 @@
 		/* [in] */ reserved1 As DWord,
 		/* [in] */ reserved2 As DWord,
-		/* [out] */ ByRef pstm As *IStream) As HRESULT
+		/* [out] */ ByRef stm As IStream) As HRESULT
 	/* [local] */ Function OpenStream(
 		/* [string][in] */ pwcsName As *OLECHAR,
@@ -203,5 +309,5 @@
 		/* [in] */ grfMode As DWord,
 		/* [in] */ reserved2 As DWord,
-		/* [out] */ ByRef pstm As *IStream) As HRESULT
+		/* [out] */ ByRef stm As IStream) As HRESULT
 	Function CreateStorage(
 		/* [string][in] */ pwcsName As *OLECHAR,
@@ -209,5 +315,5 @@
 		/* [in] */ reserved1 As DWord,
 		/* [in] */ reserved2 As DWord,
-		/* [out] */ ByRef pstg As *IStorage) As HRESULT
+		/* [out] */ ByRef stg As IStorage) As HRESULT
 	Function OpenStorage(
 		/* [string][unique][in] */ pwcsName As *OLECHAR,
@@ -216,13 +322,13 @@
 		/* [unique][in] */ snbExclude As SNB,
 		/* [in] */ reserved As DWord,
-		/* [out] */ ByRef pstg As *IStorage) As HRESULT
+		/* [out] */ ByRef stg As IStorage) As HRESULT
 	/* [local] */ Function CopyTo(
 		/* [in] */ ciidExclude As DWord,
-		/* [size_is][unique][in] */ ByRef rgiidExclude As * /*Const*/ IID,
+		/* [size_is][unique][in] */ rgiidExclude As * /*Const*/ IID,
 		/* [unique][in] */ snbExclude As SNB,
-		/* [unique][in] */ pstgDest As *IStorage) As HRESULT
+		/* [unique][in] */ stgDest As IStorage) As HRESULT
 	Function MoveElementTo(
 		/* [string][in] */ pwcsName As *OLECHAR,
-		/* [unique][in] */ pstgDest As *IStorage,
+		/* [unique][in] */ stgDest As IStorage,
 		/* [string][in] */ pwcsNewName As *OLECHAR,
 		/* [in] */ grfFlags As DWord) As HRESULT
@@ -234,5 +340,5 @@
 		/* [size_is][unique][in] */ reserved2 As VoidPtr,
 		/* [in] */ reserved3 As DWord,
-		/* [out] */ ByRef penum As *IEnumSTATSTG) As HRESULT
+		/* [out] */ ByRef enum_ As IEnumSTATSTG) As HRESULT
 	Function DestroyElement(
 		/* [string][in] */ pwcsName As *OLECHAR) As HRESULT
@@ -241,16 +347,16 @@
 		/* [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
+		/* [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
+		/* [in] */ ByRef clsid As CLSID) As HRESULT
 	Function SetStateBits(
-            /* [in] */ grfStateBits As DWord,
-            /* [in] */ grfMask As DWord) As HRESULT
+		/* [in] */ grfStateBits As DWord,
+		/* [in] */ grfMask As DWord) As HRESULT
 	Function Stat(
-            /* [out] */ ByRef statstg As STATSTG,
-            /* [in] */ grfStatFlag As DWord) As HRESULT
+		/* [out] */ ByRef statstg As STATSTG,
+		/* [in] */ grfStatFlag As DWord) As HRESULT
 End Interface
 
@@ -289,5 +395,4 @@
 End Type
 
-TypeDef CLIPFORMAT = Word
 TypeDef LPCLIPFORMAT = *CLIPFORMAT
 
@@ -356,36 +461,28 @@
 		/* [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] */ ByVal dwDirection As DWord,
-		/* [out] */ ByRef rpenumFormatEtc As *IEnumFORMATETC) As HRESULT
-
+		/* [in] */ dwDirection As DWord,
+		/* [out] */ ByRef rpenumFormatEtc As IEnumFORMATETC) As HRESULT
 	Function DAdvise(
 		/* [in] */ ByRef pformatetc As FORMATETC,
-		/* [in] */ ByVal advf As DWord,
-		/* [unique][in] */ ByVal pAdvSink As *IAdviseSink,
-		/* [out] */ ByVal pdwConnection As *DWord) As HRESULT
-
+		/* [in] */ advf As DWord,
+		/* [unique][in] */ pAdvSink As IAdviseSink,
+		/* [out] */ pdwConnection As *DWord) As HRESULT
 	Function DUnadvise(
-		/* [in] */ ByVal dwConnection As DWord) As HRESULT
-
+		/* [in] */ dwConnection As DWord) As HRESULT
 	Function EnumDAdvise(
-		/* [out] */ ByRef rpenumAdvise As *IEnumSTATDATA) As HRESULT
+		/* [out] */ ByRef rpenumAdvise As IEnumSTATDATA) As HRESULT
 End Interface
 
