*/
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
} AntiMonikerImpl;
const IBindCtxVtbl *lpVtbl; /* VTable relative to the IBindCtx interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
BindCtxObject* bindCtxTable; /* this is a table in which all bounded objects are stored*/
DWORD bindCtxTableLastIndex; /* first free index in the table */
/*
* Reference count of this object
*/
- ULONG ref;
+ LONG ref;
};
typedef struct OLEClipbrd OLEClipbrd;
/*
* Reference count of this object
*/
- DWORD ref;
+ LONG ref;
/*
* IUnknown implementation of the parent data object.
newClass->classIdentifier = *rclsid;
newClass->runContext = dwClsContext;
newClass->connectFlags = flags;
+ newClass->pMarshaledData = NULL;
+
/*
* Use the address of the chain node as the cookie since we are sure it's
* unique. FIXME: not on 64-bit platforms.
-1 pascal CoBuildVersion() CoBuildVersion\r
-2 pascal CoInitialize(long) CoInitialize16\r
-3 pascal CoUninitialize() CoUninitialize16\r
-4 pascal CoGetMalloc(long ptr) CoGetMalloc16\r
-5 pascal CoRegisterClassObject(ptr ptr long long ptr) CoRegisterClassObject16\r
-6 pascal CoRevokeClassObject(long) CoRevokeClassObject16\r
-7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject\r
-8 stub COMARSHALINTERFACE\r
-9 stub COUNMARSHALINTERFACE\r
-10 stub COLOADLIBRARY\r
-11 stub COFREELIBRARY\r
-12 stub COFREEALLLIBRARIES\r
-13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance\r
-14 stub STRINGFROMIID\r
-15 pascal CoDisconnectObject(ptr long) CoDisconnectObject\r
-16 stub CORELEASEMARSHALDATA\r
-17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries\r
-18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID16\r
-19 pascal StringFromCLSID(ptr ptr) StringFromCLSID16\r
-20 pascal CLSIDFromString(str ptr) CLSIDFromString16\r
-21 stub ISVALIDPTRIN\r
-22 stub ISVALIDPTROUT\r
-23 stub ISVALIDINTERFACE\r
-24 stub ISVALIDIID\r
-25 stub RESULTFROMSCODE\r
-26 stub GETSCODE\r
-27 pascal CoRegisterMessageFilter(ptr ptr) CoRegisterMessageFilter16\r
-28 stub COISHANDLERCONNECTED\r
-29 stub SHRADDREF\r
-30 pascal -ret16 CoFileTimeToDosDateTime(ptr ptr ptr) CoFileTimeToDosDateTime16\r
-31 pascal -ret16 CoDosDateTimeToFileTime(word word ptr) CoDosDateTimeToFileTime16\r
-32 stub COMARSHALHRESULT\r
-33 stub COUNMARSHALHRESULT\r
-34 pascal CoGetCurrentProcess() CoGetCurrentProcess\r
-35 stub SHRCREATE\r
-36 stub COISOLE1CLASS\r
-37 stub _GUID_NULL\r
-38 stub _IID_IUNKNOWN\r
-39 stub _IID_ICLASSFACTORY\r
-40 stub _IID_IMALLOC\r
-41 stub _IID_IMARSHAL\r
-42 stub _IID_IRPCCHANNEL\r
-43 stub _IID_IRPCSTUB\r
-44 stub _IID_ISTUBMANAGER\r
-45 stub _IID_IRPCPROXY\r
-46 stub _IID_IPROXYMANAGER\r
-47 stub _IID_IPSFACTORY\r
-48 stub _IID_ILOCKBYTES\r
-49 stub _IID_ISTORAGE\r
-50 stub _IID_ISTREAM\r
-51 stub _IID_IENUMSTATSTG\r
-52 stub _IID_IBINDCTX\r
-53 stub _IID_IMONIKER\r
-54 stub _IID_IRUNNINGOBJECTTABLE\r
-55 stub _IID_IINTERNALMONIKER\r
-56 stub _IID_IROOTSTORAGE\r
-57 stub _IID_IDFRESERVED1\r
-58 stub _IID_IDFRESERVED2\r
-59 stub _IID_IDFRESERVED3\r
-60 stub _IID_IMESSAGEFILTER\r
-61 pascal CLSIDFromProgID(str ptr) CLSIDFromProgID16\r
-62 pascal ProgIDFromCLSID(ptr ptr) ProgIDFromCLSID16\r
-63 pascal CoLockObjectExternal(segptr word word) CoLockObjectExternal16\r
-64 stub _CLSID_STDMARSHAL\r
-65 stub COGETTREATASCLASS\r
-66 stub COTREATASCLASS\r
-67 stub COGETSTANDARDMARSHAL\r
-68 stub PROPAGATERESULT\r
-69 stub IIDFROMSTRING\r
-70 stub _IID_ISTDMARSHALINFO\r
-71 pascal CoCreateStandardMalloc(long ptr) CoCreateStandardMalloc16\r
-72 stub _IID_IEXTERNALCONNECTION\r
-73 stub COCREATEGUID\r
-75 stub FNASSERT\r
-76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2\r
-77 stub COGETCLASSEXT\r
-78 stub OLE1CLASSFROMCLSID2\r
-79 stub CLSIDFROMOLE1CLASS\r
-80 stub COOPENCLASSKEY\r
-81 stub GUIDFROMSTRING\r
-82 pascal CoFileTimeNow(ptr) CoFileTimeNow\r
-83 stub REMALLOCOID\r
-84 stub REMFREEOID\r
-85 stub REMCREATEREMOTEHANDLER\r
-86 stub REMCONNECTTOOBJECT\r
-87 stub REMGETINFOFORCID\r
-88 stub LRPCCALL\r
-89 stub LRPCDISPATCH\r
-90 stub LRPCREGISTERMONITOR\r
-91 stub LRPCREVOKEMONITOR\r
-92 stub LRPCGETTHREADWINDOW\r
-93 stub TIMERCALLBACKPROC\r
-94 pascal LookupETask(ptr ptr) LookupETask16\r
-95 pascal -ret16 SetETask(word ptr) SetETask16\r
-96 stub LRPCFREEMONITORDATA\r
-97 stub REMLOOKUPSHUNK\r
-98 stub SHRGETSIZE\r
-99 stub CALLTHKMGRUNINITIALIZE\r
-100 stub ??0CARRAYFVALUE@@REC@KI@Z\r
-101 stub ??1CARRAYFVALUE@@REC@XZ\r
-102 stub ?ASSERTVALID@CARRAYFVALUE@@RFCXXZ\r
-103 stub ?FREEEXTRA@CARRAYFVALUE@@RECXXZ\r
-104 stub ?_GETAT@CARRAYFVALUE@@RFCPEXH@Z\r
-105 stub ?GETSIZE@CARRAYFVALUE@@RFCHXZ\r
-106 stub ?REMOVEALL@CARRAYFVALUE@@RECXXZ\r
-107 stub SHRDESTROY\r
-108 stub ?INDEXOF@CARRAYFVALUE@@RECHPEXII@Z\r
-109 stub ?INSERTAT@CARRAYFVALUE@@RECHHPEXH@Z\r
-110 stub COSETSTATE\r
-111 stub ?REMOVEAT@CARRAYFVALUE@@RECXHH@Z\r
-112 stub ?SETAT@CARRAYFVALUE@@RECXHPEX@Z\r
-113 stub ?SETATGROW@CARRAYFVALUE@@RECHHPEX@Z\r
-114 stub ?SETSIZE@CARRAYFVALUE@@RECHHH@Z\r
-115 pascal CoGetState(ptr) CoGetState16\r
-116 pascal DllEntryPoint(long word word word long word) COMPOBJ_DllEntryPoint\r
-117 stub ?RELEASE@CSTDMALLOC@@VEAKXZ\r
-118 stub ?ALLOC@CSTDMALLOC@@VEAPEXK@Z\r
-119 stub SHRRELEASE\r
-120 stub ?GETASSOCAT@CMAPKEYTOVALUE@@BFCPEUCASSOC@1@PEXIAEI@Z\r
-121 stub ?SETASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z\r
-122 stub ??1CMAPKEYTOVALUE@@REC@XZ\r
-123 stub ?GETASSOCKEYPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEXPEI@Z\r
-124 stub ?NEWASSOC@CMAPKEYTOVALUE@@BECPEUCASSOC@1@IPEXI0@Z\r
-125 stub ?SIZEASSOC@CMAPKEYTOVALUE@@BFCIXZ\r
-126 stub ?FREEASSOC@CMAPKEYTOVALUE@@BECXPEUCASSOC@1@@Z\r
-127 stub ?GETSTARTPOSITION@CMAPKEYTOVALUE@@RFCPEXXZ\r
-128 stub ?GETNEXTASSOC@CMAPKEYTOVALUE@@RFCXPEPEXPEXPEI1@Z\r
-129 stub ?COMPAREASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z\r
-130 stub ?REMOVEHKEY@CMAPKEYTOVALUE@@RECHK@Z\r
-131 stub ?GETHKEY@CMAPKEYTOVALUE@@RFCKPEXI@Z\r
-132 stub ?GETCOUNT@CMAPKEYTOVALUE@@RFCHXZ\r
-133 stub ?LOOKUP@CMAPKEYTOVALUE@@RFCHPEXI0@Z\r
-134 stub ?GETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z\r
-135 stub ?REMOVEKEY@CMAPKEYTOVALUE@@RECHPEXI@Z\r
-136 stub ?REMOVEALL@CMAPKEYTOVALUE@@RECXXZ\r
-137 stub SHRALLOC\r
-138 stub ?FREEASSOCKEY@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@@Z\r
-139 stub ?SETAT@CMAPKEYTOVALUE@@RECHPEXI0@Z\r
-140 stub ?LOOKUPHKEY@CMAPKEYTOVALUE@@RFCHKPEX@Z\r
-141 stub ?ASSERTVALID@CMAPKEYTOVALUE@@RFCXXZ\r
-142 stub ?SETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z\r
-143 stub ?SETATHKEY@CMAPKEYTOVALUE@@RECHKPEX@Z\r
-144 stub ??0CMAPKEYTOVALUE@@REC@KIIHP7CIPEXI@ZI@Z\r
-145 stub ?INITHASHTABLE@CMAPKEYTOVALUE@@BECHXZ\r
-146 stub ?GETASSOCVALUEPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEX@Z\r
-147 stub ?LOOKUPADD@CMAPKEYTOVALUE@@RFCHPEXI0@Z\r
-148 stub MKVDEFAULTHASHKEY\r
-149 stub DELETE16\r
-150 stub COMEMCTXOF\r
-151 stub COMEMALLOC\r
-152 stub COMEMFREE\r
-153 stub SHRREALLOC\r
-154 stub ___EXPORTEDSTUB\r
-155 stub LRPCREGISTERWIN32SMONITOR\r
-156 stub MYREMGETINFOFORCID\r
-157 stub SHRFREE\r
-158 stub OPNEW16\r
-159 stub ADDCOINFO\r
-160 stub CORUNMODALLOOP\r
-161 stub COHANDLEINCOMINGCALL\r
-162 stub COSETACKSTATE\r
-163 stub SHRDIDALLOC\r
-164 stub ?GETAT@CARRAYFVALUE@@RFCPEXH@Z\r
-165 stub ?GETUPPERBOUND@CARRAYFVALUE@@RFCHXZ\r
-166 stub OPDELETE16\r
-167 stub ?GETSIZEVALUE@CARRAYFVALUE@@RFCHXZ\r
-168 stub ?PROXY1632ADDREF@@ZAKPEVCPROXY1632@@@Z\r
-# FIXME: 169 is a duplicate of 97\r
-169 stub REMLOOKUPSHUNK_dup\r
-170 stub ?ISEMPTY@CMAPKEYTOVALUE@@RFCHXZ\r
-171 stub ?FREE@CSTDMALLOC@@VEAXPEX@Z\r
-172 stub CALLTHKMGRINITIALIZE\r
-173 stub ?REALLOC@CSTDMALLOC@@VEAPEXPEXK@Z\r
-174 stub ?SM16RHQI@@ZAPEXPEVCSM16RELEASEHANDLER@@AFUGUID@@PEPEX@Z\r
-175 stub ?PROXY1632METHOD10@@ZAKPEVCPROXY1632@@@Z\r
-# FIXME: 176 is a duplicate of 154\r
-176 stub ___EXPORTEDSTUB_dup\r
-177 stub ?PROXY1632METHOD20@@ZAKPEVCPROXY1632@@@Z\r
-178 stub ?PROXY1632METHOD11@@ZAKPEVCPROXY1632@@@Z\r
-179 stub ?PROXY1632METHOD30@@ZAKPEVCPROXY1632@@@Z\r
-180 stub ?PROXY1632METHOD21@@ZAKPEVCPROXY1632@@@Z\r
-181 stub ?PROXY1632METHOD12@@ZAKPEVCPROXY1632@@@Z\r
-182 stub ?PROXY1632METHOD31@@ZAKPEVCPROXY1632@@@Z\r
-183 stub ?PROXY1632METHOD22@@ZAKPEVCPROXY1632@@@Z\r
-184 stub ?PROXY1632METHOD13@@ZAKPEVCPROXY1632@@@Z\r
-185 stub ?GETSIZE@CSTDMALLOC@@VEAKPEX@Z\r
-186 stub ?PROXY1632METHOD23@@ZAKPEVCPROXY1632@@@Z\r
-187 stub ?PROXY1632METHOD14@@ZAKPEVCPROXY1632@@@Z\r
-188 stub ?PROXY1632METHOD24@@ZAKPEVCPROXY1632@@@Z\r
-189 stub ?PROXY1632METHOD15@@ZAKPEVCPROXY1632@@@Z\r
-190 stub ?PROXY1632METHOD25@@ZAKPEVCPROXY1632@@@Z\r
-191 stub ?PROXY1632METHOD16@@ZAKPEVCPROXY1632@@@Z\r
-192 stub ?PROXY1632METHOD26@@ZAKPEVCPROXY1632@@@Z\r
-193 stub ?PROXY1632METHOD17@@ZAKPEVCPROXY1632@@@Z\r
-194 stub ?PROXY1632METHOD27@@ZAKPEVCPROXY1632@@@Z\r
-195 stub ?PROXY1632METHOD18@@ZAKPEVCPROXY1632@@@Z\r
-196 stub ?PROXY1632METHOD28@@ZAKPEVCPROXY1632@@@Z\r
-197 stub ?ADDREF@CSTDMALLOC@@VEAKXZ\r
-198 stub ?PROXY1632METHOD19@@ZAKPEVCPROXY1632@@@Z\r
-199 stub ?PROXY1632METHOD29@@ZAKPEVCPROXY1632@@@Z\r
-200 stub CALL32INITIALIZE\r
-201 pascal CALLOBJECTINWOW(ptr ptr) CallObjectInWOW\r
-203 stub CALLOBJECTINWOWCHECKINIT\r
-204 stub CALLOBJECTINWOWCHECKTHKMGR\r
-205 stub CONVERTHR1632\r
-206 stub CONVERTHR3216\r
-207 stub ADDAPPCOMPATFLAG\r
-\r
-# WINE internal relays (for Win16 interfaces)\r
-500 cdecl IMalloc16_QueryInterface(ptr ptr ptr) IMalloc16_fnQueryInterface\r
-501 cdecl IMalloc16_AddRef(ptr) IMalloc16_fnAddRef\r
-502 cdecl IMalloc16_Release(ptr) IMalloc16_fnRelease\r
-503 cdecl IMalloc16_Alloc(ptr long) IMalloc16_fnAlloc\r
-504 cdecl IMalloc16_Realloc(ptr segptr long) IMalloc16_fnRealloc\r
-505 cdecl IMalloc16_Free(ptr segptr) IMalloc16_fnFree\r
-506 cdecl IMalloc16_GetSize(ptr segptr) IMalloc16_fnGetSize\r
-507 cdecl IMalloc16_DidAlloc(ptr segptr) IMalloc16_fnDidAlloc\r
-508 cdecl IMalloc16_HeapMinimize(ptr) IMalloc16_fnHeapMinimize\r
+1 pascal CoBuildVersion() CoBuildVersion
+2 pascal CoInitialize(long) CoInitialize16
+3 pascal CoUninitialize() CoUninitialize16
+4 pascal CoGetMalloc(long ptr) CoGetMalloc16
+5 pascal CoRegisterClassObject(ptr ptr long long ptr) CoRegisterClassObject16
+6 pascal CoRevokeClassObject(long) CoRevokeClassObject16
+7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject
+8 stub COMARSHALINTERFACE
+9 stub COUNMARSHALINTERFACE
+10 stub COLOADLIBRARY
+11 stub COFREELIBRARY
+12 stub COFREEALLLIBRARIES
+13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance
+14 stub STRINGFROMIID
+15 pascal CoDisconnectObject(ptr long) CoDisconnectObject
+16 stub CORELEASEMARSHALDATA
+17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries
+18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID16
+19 pascal StringFromCLSID(ptr ptr) StringFromCLSID16
+20 pascal CLSIDFromString(str ptr) CLSIDFromString16
+21 stub ISVALIDPTRIN
+22 stub ISVALIDPTROUT
+23 pascal IsValidInterface(segptr) IsValidInterface16
+24 stub ISVALIDIID
+25 stub RESULTFROMSCODE
+26 stub GETSCODE
+27 pascal CoRegisterMessageFilter(ptr ptr) CoRegisterMessageFilter16
+28 stub COISHANDLERCONNECTED
+29 stub SHRADDREF
+30 pascal -ret16 CoFileTimeToDosDateTime(ptr ptr ptr) CoFileTimeToDosDateTime16
+31 pascal -ret16 CoDosDateTimeToFileTime(word word ptr) CoDosDateTimeToFileTime16
+32 stub COMARSHALHRESULT
+33 stub COUNMARSHALHRESULT
+34 pascal CoGetCurrentProcess() CoGetCurrentProcess
+35 stub SHRCREATE
+36 stub COISOLE1CLASS
+37 stub _GUID_NULL
+38 stub _IID_IUNKNOWN
+39 stub _IID_ICLASSFACTORY
+40 stub _IID_IMALLOC
+41 stub _IID_IMARSHAL
+42 stub _IID_IRPCCHANNEL
+43 stub _IID_IRPCSTUB
+44 stub _IID_ISTUBMANAGER
+45 stub _IID_IRPCPROXY
+46 stub _IID_IPROXYMANAGER
+47 stub _IID_IPSFACTORY
+48 stub _IID_ILOCKBYTES
+49 stub _IID_ISTORAGE
+50 stub _IID_ISTREAM
+51 stub _IID_IENUMSTATSTG
+52 stub _IID_IBINDCTX
+53 stub _IID_IMONIKER
+54 stub _IID_IRUNNINGOBJECTTABLE
+55 stub _IID_IINTERNALMONIKER
+56 stub _IID_IROOTSTORAGE
+57 stub _IID_IDFRESERVED1
+58 stub _IID_IDFRESERVED2
+59 stub _IID_IDFRESERVED3
+60 stub _IID_IMESSAGEFILTER
+61 pascal CLSIDFromProgID(str ptr) CLSIDFromProgID16
+62 pascal ProgIDFromCLSID(ptr ptr) ProgIDFromCLSID16
+63 pascal CoLockObjectExternal(segptr word word) CoLockObjectExternal16
+64 stub _CLSID_STDMARSHAL
+65 stub COGETTREATASCLASS
+66 stub COTREATASCLASS
+67 stub COGETSTANDARDMARSHAL
+68 stub PROPAGATERESULT
+69 stub IIDFROMSTRING
+70 stub _IID_ISTDMARSHALINFO
+71 pascal CoCreateStandardMalloc(long ptr) CoCreateStandardMalloc16
+72 stub _IID_IEXTERNALCONNECTION
+73 stub COCREATEGUID
+75 stub FNASSERT
+76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2
+77 stub COGETCLASSEXT
+78 stub OLE1CLASSFROMCLSID2
+79 stub CLSIDFROMOLE1CLASS
+80 stub COOPENCLASSKEY
+81 stub GUIDFROMSTRING
+82 pascal CoFileTimeNow(ptr) CoFileTimeNow
+83 stub REMALLOCOID
+84 stub REMFREEOID
+85 stub REMCREATEREMOTEHANDLER
+86 stub REMCONNECTTOOBJECT
+87 stub REMGETINFOFORCID
+88 stub LRPCCALL
+89 stub LRPCDISPATCH
+90 stub LRPCREGISTERMONITOR
+91 stub LRPCREVOKEMONITOR
+92 stub LRPCGETTHREADWINDOW
+93 stub TIMERCALLBACKPROC
+94 pascal LookupETask(ptr ptr) LookupETask16
+95 pascal -ret16 SetETask(word ptr) SetETask16
+96 stub LRPCFREEMONITORDATA
+97 stub REMLOOKUPSHUNK
+98 stub SHRGETSIZE
+99 stub CALLTHKMGRUNINITIALIZE
+100 stub ??0CARRAYFVALUE@@REC@KI@Z
+101 stub ??1CARRAYFVALUE@@REC@XZ
+102 stub ?ASSERTVALID@CARRAYFVALUE@@RFCXXZ
+103 stub ?FREEEXTRA@CARRAYFVALUE@@RECXXZ
+104 stub ?_GETAT@CARRAYFVALUE@@RFCPEXH@Z
+105 stub ?GETSIZE@CARRAYFVALUE@@RFCHXZ
+106 stub ?REMOVEALL@CARRAYFVALUE@@RECXXZ
+107 stub SHRDESTROY
+108 stub ?INDEXOF@CARRAYFVALUE@@RECHPEXII@Z
+109 stub ?INSERTAT@CARRAYFVALUE@@RECHHPEXH@Z
+110 stub COSETSTATE
+111 stub ?REMOVEAT@CARRAYFVALUE@@RECXHH@Z
+112 stub ?SETAT@CARRAYFVALUE@@RECXHPEX@Z
+113 stub ?SETATGROW@CARRAYFVALUE@@RECHHPEX@Z
+114 stub ?SETSIZE@CARRAYFVALUE@@RECHHH@Z
+115 pascal CoGetState(ptr) CoGetState16
+116 pascal DllEntryPoint(long word word word long word) COMPOBJ_DllEntryPoint
+117 stub ?RELEASE@CSTDMALLOC@@VEAKXZ
+118 stub ?ALLOC@CSTDMALLOC@@VEAPEXK@Z
+119 stub SHRRELEASE
+120 stub ?GETASSOCAT@CMAPKEYTOVALUE@@BFCPEUCASSOC@1@PEXIAEI@Z
+121 stub ?SETASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z
+122 stub ??1CMAPKEYTOVALUE@@REC@XZ
+123 stub ?GETASSOCKEYPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEXPEI@Z
+124 stub ?NEWASSOC@CMAPKEYTOVALUE@@BECPEUCASSOC@1@IPEXI0@Z
+125 stub ?SIZEASSOC@CMAPKEYTOVALUE@@BFCIXZ
+126 stub ?FREEASSOC@CMAPKEYTOVALUE@@BECXPEUCASSOC@1@@Z
+127 stub ?GETSTARTPOSITION@CMAPKEYTOVALUE@@RFCPEXXZ
+128 stub ?GETNEXTASSOC@CMAPKEYTOVALUE@@RFCXPEPEXPEXPEI1@Z
+129 stub ?COMPAREASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z
+130 stub ?REMOVEHKEY@CMAPKEYTOVALUE@@RECHK@Z
+131 stub ?GETHKEY@CMAPKEYTOVALUE@@RFCKPEXI@Z
+132 stub ?GETCOUNT@CMAPKEYTOVALUE@@RFCHXZ
+133 stub ?LOOKUP@CMAPKEYTOVALUE@@RFCHPEXI0@Z
+134 stub ?GETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z
+135 stub ?REMOVEKEY@CMAPKEYTOVALUE@@RECHPEXI@Z
+136 stub ?REMOVEALL@CMAPKEYTOVALUE@@RECXXZ
+137 stub SHRALLOC
+138 stub ?FREEASSOCKEY@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@@Z
+139 stub ?SETAT@CMAPKEYTOVALUE@@RECHPEXI0@Z
+140 stub ?LOOKUPHKEY@CMAPKEYTOVALUE@@RFCHKPEX@Z
+141 stub ?ASSERTVALID@CMAPKEYTOVALUE@@RFCXXZ
+142 stub ?SETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z
+143 stub ?SETATHKEY@CMAPKEYTOVALUE@@RECHKPEX@Z
+144 stub ??0CMAPKEYTOVALUE@@REC@KIIHP7CIPEXI@ZI@Z
+145 stub ?INITHASHTABLE@CMAPKEYTOVALUE@@BECHXZ
+146 stub ?GETASSOCVALUEPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEX@Z
+147 stub ?LOOKUPADD@CMAPKEYTOVALUE@@RFCHPEXI0@Z
+148 stub MKVDEFAULTHASHKEY
+149 stub DELETE16
+150 stub COMEMCTXOF
+151 pascal CoMemAlloc(long long long)
+152 stub COMEMFREE
+153 stub SHRREALLOC
+154 stub ___EXPORTEDSTUB
+155 stub LRPCREGISTERWIN32SMONITOR
+156 stub MYREMGETINFOFORCID
+157 stub SHRFREE
+158 stub OPNEW16
+159 stub ADDCOINFO
+160 stub CORUNMODALLOOP
+161 stub COHANDLEINCOMINGCALL
+162 stub COSETACKSTATE
+163 stub SHRDIDALLOC
+164 stub ?GETAT@CARRAYFVALUE@@RFCPEXH@Z
+165 stub ?GETUPPERBOUND@CARRAYFVALUE@@RFCHXZ
+166 stub OPDELETE16
+167 stub ?GETSIZEVALUE@CARRAYFVALUE@@RFCHXZ
+168 stub ?PROXY1632ADDREF@@ZAKPEVCPROXY1632@@@Z
+# FIXME: 169 is a duplicate of 97
+169 stub REMLOOKUPSHUNK_dup
+170 stub ?ISEMPTY@CMAPKEYTOVALUE@@RFCHXZ
+171 stub ?FREE@CSTDMALLOC@@VEAXPEX@Z
+172 stub CALLTHKMGRINITIALIZE
+173 stub ?REALLOC@CSTDMALLOC@@VEAPEXPEXK@Z
+174 stub ?SM16RHQI@@ZAPEXPEVCSM16RELEASEHANDLER@@AFUGUID@@PEPEX@Z
+175 stub ?PROXY1632METHOD10@@ZAKPEVCPROXY1632@@@Z
+# FIXME: 176 is a duplicate of 154
+176 stub ___EXPORTEDSTUB_dup
+177 stub ?PROXY1632METHOD20@@ZAKPEVCPROXY1632@@@Z
+178 stub ?PROXY1632METHOD11@@ZAKPEVCPROXY1632@@@Z
+179 stub ?PROXY1632METHOD30@@ZAKPEVCPROXY1632@@@Z
+180 stub ?PROXY1632METHOD21@@ZAKPEVCPROXY1632@@@Z
+181 stub ?PROXY1632METHOD12@@ZAKPEVCPROXY1632@@@Z
+182 stub ?PROXY1632METHOD31@@ZAKPEVCPROXY1632@@@Z
+183 stub ?PROXY1632METHOD22@@ZAKPEVCPROXY1632@@@Z
+184 stub ?PROXY1632METHOD13@@ZAKPEVCPROXY1632@@@Z
+185 stub ?GETSIZE@CSTDMALLOC@@VEAKPEX@Z
+186 stub ?PROXY1632METHOD23@@ZAKPEVCPROXY1632@@@Z
+187 stub ?PROXY1632METHOD14@@ZAKPEVCPROXY1632@@@Z
+188 stub ?PROXY1632METHOD24@@ZAKPEVCPROXY1632@@@Z
+189 stub ?PROXY1632METHOD15@@ZAKPEVCPROXY1632@@@Z
+190 stub ?PROXY1632METHOD25@@ZAKPEVCPROXY1632@@@Z
+191 stub ?PROXY1632METHOD16@@ZAKPEVCPROXY1632@@@Z
+192 stub ?PROXY1632METHOD26@@ZAKPEVCPROXY1632@@@Z
+193 stub ?PROXY1632METHOD17@@ZAKPEVCPROXY1632@@@Z
+194 stub ?PROXY1632METHOD27@@ZAKPEVCPROXY1632@@@Z
+195 stub ?PROXY1632METHOD18@@ZAKPEVCPROXY1632@@@Z
+196 stub ?PROXY1632METHOD28@@ZAKPEVCPROXY1632@@@Z
+197 stub ?ADDREF@CSTDMALLOC@@VEAKXZ
+198 stub ?PROXY1632METHOD19@@ZAKPEVCPROXY1632@@@Z
+199 stub ?PROXY1632METHOD29@@ZAKPEVCPROXY1632@@@Z
+200 stub CALL32INITIALIZE
+201 pascal CALLOBJECTINWOW(ptr ptr) CallObjectInWOW
+203 stub CALLOBJECTINWOWCHECKINIT
+204 stub CALLOBJECTINWOWCHECKTHKMGR
+205 stub CONVERTHR1632
+206 stub CONVERTHR3216
+207 stub ADDAPPCOMPATFLAG
+
+# WINE internal relays (for Win16 interfaces)
+500 cdecl IMalloc16_QueryInterface(ptr ptr ptr) IMalloc16_fnQueryInterface
+501 cdecl IMalloc16_AddRef(ptr) IMalloc16_fnAddRef
+502 cdecl IMalloc16_Release(ptr) IMalloc16_fnRelease
+503 cdecl IMalloc16_Alloc(ptr long) IMalloc16_fnAlloc
+504 cdecl IMalloc16_Realloc(ptr segptr long) IMalloc16_fnRealloc
+505 cdecl IMalloc16_Free(ptr segptr) IMalloc16_fnFree
+506 cdecl IMalloc16_GetSize(ptr segptr) IMalloc16_fnGetSize
+507 cdecl IMalloc16_DidAlloc(ptr segptr) IMalloc16_fnDidAlloc
+508 cdecl IMalloc16_HeapMinimize(ptr) IMalloc16_fnHeapMinimize
OXID oxid; /* object exported ID (RO) */
OID oid; /* object ID (RO) */
struct list interfaces; /* imported interfaces (CS cs) */
- DWORD refs; /* proxy reference count (LOCK) */
+ LONG refs; /* proxy reference count (LOCK) */
CRITICAL_SECTION cs; /* thread safety for this object and children */
ULONG sorflags; /* STDOBJREF flags (RO) */
IRemUnknown *remunk; /* proxy to IRemUnknown used for lifecycle management (CS cs) */
{
struct list entry;
- DWORD refs; /* refcount of the apartment (LOCK) */
+ LONG refs; /* refcount of the apartment (LOCK) */
DWORD model; /* threading model (RO) */
DWORD tid; /* thread id (RO) */
HANDLE thread; /* thread handle (RO) */
OXID oxid; /* object exporter ID (RO) */
- DWORD ipidc; /* interface pointer ID counter, starts at 1 (LOCK) */
+ LONG ipidc; /* interface pointer ID counter, starts at 1 (LOCK) */
HWND win; /* message window (RO) */
CRITICAL_SECTION cs; /* thread safety */
LPMESSAGEFILTER filter; /* message filter (CS cs) */
*/
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
IMoniker** tabMoniker; /* dynamaic table containing all components (monikers) of this composite moniker */
const IEnumMonikerVtbl *lpVtbl; /* VTable relative to the IEnumMoniker interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
IMoniker** tabMoniker; /* dynamic table containing the enumerated monikers */
/*
* Reference count of this object
*/
- ULONG ref;
+ LONG ref;
/*
* IUnknown implementation of the outer object.
/*
* Reference count of this object
*/
- ULONG ref;
+ LONG ref;
/*
* IUnknown implementation of the outer object.
const IErrorInfoVtbl *lpvtei;
const ICreateErrorInfoVtbl *lpvtcei;
const ISupportErrorInfoVtbl *lpvtsei;
- DWORD ref;
+ LONG ref;
GUID m_Guid;
BSTR bstrSource;
*/
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
LPOLESTR filePathName; /* path string identified by this filemoniker */
typedef struct _FTMarshalImpl {
const IUnknownVtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
const IMarshalVtbl *lpvtblFTM;
IUnknown *pUnkOuter;
/*
* Reference count
*/
- ULONG ref;
+ LONG ref;
/*
* Support for the stream
typedef struct {
const IMallocSpyVtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
} _MallocSpy;
/* this is the static object instance */
typedef LPSTR LPOLESTR16;
typedef LPCSTR LPCOLESTR16;
+#define STDMETHOD16CALLTYPE __cdecl
+#define STDMETHOD16(m) HRESULT (STDMETHOD16CALLTYPE *m)
+#define STDMETHOD16_(t,m) t (STDMETHOD16CALLTYPE *m)
+
+
/***********************************************************************
* IMalloc16 interface
*/
DECLARE_INTERFACE_(IMalloc16,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** IMalloc16 methods ***/
- STDMETHOD_(LPVOID,Alloc)(THIS_ DWORD cb) PURE;
- STDMETHOD_(LPVOID,Realloc)(THIS_ LPVOID pv, DWORD cb) PURE;
- STDMETHOD_(void,Free)(THIS_ LPVOID pv) PURE;
- STDMETHOD_(DWORD,GetSize)(THIS_ LPVOID pv) PURE;
- STDMETHOD_(INT16,DidAlloc)(THIS_ LPVOID pv) PURE;
- STDMETHOD_(LPVOID,HeapMinimize)(THIS) PURE;
+ STDMETHOD16_(LPVOID,Alloc)(THIS_ DWORD cb) PURE;
+ STDMETHOD16_(LPVOID,Realloc)(THIS_ LPVOID pv, DWORD cb) PURE;
+ STDMETHOD16_(void,Free)(THIS_ LPVOID pv) PURE;
+ STDMETHOD16_(DWORD,GetSize)(THIS_ LPVOID pv) PURE;
+ STDMETHOD16_(INT16,DidAlloc)(THIS_ LPVOID pv) PURE;
+ STDMETHOD16_(LPVOID,HeapMinimize)(THIS) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(ILockBytes16,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** ILockBytes16 methods ***/
- STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead) PURE;
- STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten) PURE;
- STDMETHOD(Flush)(THIS) PURE;
- STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER cb) PURE;
- STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
- STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
- STDMETHOD(Stat)(THIS_ STATSTG *pstatstg, DWORD grfStatFlag) PURE;
+ STDMETHOD16(ReadAt)(THIS_ ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead) PURE;
+ STDMETHOD16(WriteAt)(THIS_ ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten) PURE;
+ STDMETHOD16(Flush)(THIS) PURE;
+ STDMETHOD16(SetSize)(THIS_ ULARGE_INTEGER cb) PURE;
+ STDMETHOD16(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
+ STDMETHOD16(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
+ STDMETHOD16(Stat)(THIS_ STATSTG *pstatstg, DWORD grfStatFlag) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IStream16,ISequentialStream)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** ISequentialStream methods ***/
- STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE;
- STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE;
+ STDMETHOD16_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE;
+ STDMETHOD16_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE;
/*** IStream16 methods ***/
- STDMETHOD(Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE;
- STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE;
- STDMETHOD(CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE;
- STDMETHOD(Commit)(THIS_ DWORD grfCommitFlags) PURE;
- STDMETHOD(Revert)(THIS) PURE;
- STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
- STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
- STDMETHOD(Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
- STDMETHOD(Clone)(THIS_ IStream16** ppstm) PURE;
+ STDMETHOD16(Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE;
+ STDMETHOD16(SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE;
+ STDMETHOD16(CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE;
+ STDMETHOD16(Commit)(THIS_ DWORD grfCommitFlags) PURE;
+ STDMETHOD16(Revert)(THIS) PURE;
+ STDMETHOD16(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
+ STDMETHOD16(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
+ STDMETHOD16(Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
+ STDMETHOD16(Clone)(THIS_ IStream16** ppstm) PURE;
};
#undef INTERFACE
DECLARE_INTERFACE_(IStorage16,IUnknown)
{
/*** IUnknown methods ***/
- STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** IStorage16 methods ***/
- STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream16** ppstm) PURE;
- STDMETHOD_(HRESULT,OpenStream)(THIS_ LPCOLESTR16 pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream16** ppstm) PURE;
- STDMETHOD_(HRESULT,CreateStorage)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage16** ppstg) PURE;
- STDMETHOD_(HRESULT,OpenStorage)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgPriority, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16** ppstg) PURE;
- STDMETHOD_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB16 snbExclude, IStorage16* pstgDest) PURE;
- STDMETHOD_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgDest, LPCOLESTR16 pwcsNewName, DWORD grfFlags) PURE;
- STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE;
- STDMETHOD_(HRESULT,Revert)(THIS) PURE;
- STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE;
- STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE;
- STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE;
- STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE;
- STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE;
- STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE;
- STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
+ STDMETHOD16_(HRESULT,CreateStream)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream16** ppstm) PURE;
+ STDMETHOD16_(HRESULT,OpenStream)(THIS_ LPCOLESTR16 pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream16** ppstm) PURE;
+ STDMETHOD16_(HRESULT,CreateStorage)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage16** ppstg) PURE;
+ STDMETHOD16_(HRESULT,OpenStorage)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgPriority, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16** ppstg) PURE;
+ STDMETHOD16_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB16 snbExclude, IStorage16* pstgDest) PURE;
+ STDMETHOD16_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgDest, LPCOLESTR16 pwcsNewName, DWORD grfFlags) PURE;
+ STDMETHOD16_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE;
+ STDMETHOD16_(HRESULT,Revert)(THIS) PURE;
+ STDMETHOD16_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE;
+ STDMETHOD16_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE;
+ STDMETHOD16_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE;
+ STDMETHOD16_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE;
+ STDMETHOD16_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE;
+ STDMETHOD16_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE;
+ STDMETHOD16_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
};
#undef INTERFACE
*/
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
- ULONG ref; /* reference counter for this object */
+ LONG ref; /* reference counter for this object */
LPOLESTR itemName; /* item name identified by this ItemMoniker */
}
/* creates a new stub manager */
-HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnknown *obj, MSHLFLAGS mshlflags)
+HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnknown *object, MSHLFLAGS mshlflags)
{
struct stub_manager *manager;
struct ifstub *ifstub;
BOOL tablemarshal;
IRpcStubBuffer *stub = NULL;
HRESULT hr;
+ IUnknown *iobject = NULL; /* object of type riid */
hr = apartment_getoxid(apt, &stdobjref->oxid);
if (hr != S_OK)
return hr;
+ hr = IUnknown_QueryInterface(object, riid, (void **)&iobject);
+ if (hr != S_OK)
+ {
+ ERR("object doesn't expose interface %s, failing with error 0x%08lx\n",
+ debugstr_guid(riid), hr);
+ return E_NOINTERFACE;
+ }
+
/* IUnknown doesn't require a stub buffer, because it never goes out on
* the wire */
if (!IsEqualIID(riid, &IID_IUnknown))
if (hr != S_OK)
{
ERR("couldn't get IPSFactory buffer for interface %s\n", debugstr_guid(riid));
+ IUnknown_Release(iobject);
return hr;
}
- hr = IPSFactoryBuffer_CreateStub(psfb, riid, obj, &stub);
+ hr = IPSFactoryBuffer_CreateStub(psfb, riid, iobject, &stub);
IPSFactoryBuffer_Release(psfb);
if (hr != S_OK)
{
ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s\n", debugstr_guid(riid));
+ IUnknown_Release(iobject);
return hr;
}
}
- else /* need to addref object anyway */
- IUnknown_AddRef(obj);
if (mshlflags & MSHLFLAGS_NOPING)
stdobjref->flags = SORF_NOPING;
/* FIXME: what happens if we register an interface twice with different
* marshaling flags? */
- if ((manager = get_stub_manager_from_object(apt, obj)))
+ if ((manager = get_stub_manager_from_object(apt, object)))
TRACE("registering new ifstub on pre-existing manager\n");
else
{
TRACE("constructing new stub manager\n");
- manager = new_stub_manager(apt, obj, mshlflags);
+ manager = new_stub_manager(apt, object, mshlflags);
if (!manager)
{
if (stub) IRpcStubBuffer_Release(stub);
+ IUnknown_Release(iobject);
return E_OUTOFMEMORY;
}
}
tablemarshal = ((mshlflags & MSHLFLAGS_TABLESTRONG) || (mshlflags & MSHLFLAGS_TABLEWEAK));
- ifstub = stub_manager_new_ifstub(manager, stub, obj, riid);
+ ifstub = stub_manager_new_ifstub(manager, stub, iobject, riid);
+ IUnknown_Release(iobject);
+ if (stub) IRpcStubBuffer_Release(stub);
if (!ifstub)
{
- IRpcStubBuffer_Release(stub);
stub_manager_int_release(manager);
/* FIXME: should we do another release to completely destroy the
* stub manager? */
typedef struct _StdMarshalImpl
{
const IMarshalVtbl *lpvtbl;
- DWORD ref;
+ LONG ref;
IID iid;
DWORD dwDestContext;
void* pvDestContext, DWORD mshlflags)
{
STDOBJREF stdobjref;
- IUnknown *pUnk;
ULONG res;
HRESULT hres;
APARTMENT *apt = COM_CurrentApt();
/* make sure this apartment can be reached from other threads / processes */
RPC_StartRemoting(apt);
- hres = IUnknown_QueryInterface((LPUNKNOWN)pv, riid, (LPVOID*)&pUnk);
- if (hres != S_OK)
- {
- ERR("object doesn't expose interface %s, failing with error 0x%08lx\n",
- debugstr_guid(riid), hres);
- return E_NOINTERFACE;
- }
-
- hres = marshal_object(apt, &stdobjref, riid, pUnk, mshlflags);
-
- IUnknown_Release(pUnk);
-
+ hres = marshal_object(apt, &stdobjref, riid, (IUnknown *)pv, mshlflags);
if (hres)
{
ERR("Failed to create ifstub, hres=0x%lx\n", hres);
/*
* Reference count
*/
- ULONG ref;
+ LONG ref;
/*
* Support for the LockBytes object
/******************************************************************************
* CreateILockBytesOnHGlobal [OLE32.@]
+ *
+ * Create a byte array object which is intended to be the compound file foundation.
+ * This object supports a COM implementation of the ILockBytes interface.
+ *
+ * PARAMS
+ * hGlobal [ I] Global memory handle
+ * fDeleteOnRelease [ I] Whether the handle should be freed when the object is released.
+ * ppLkbyt [ O] Address of ILockBytes pointer that receives
+ * the interface pointer to the new byte array object.
+ *
+ * RETURNS
+ * Success: S_OK
+ *
+ * NOTES
+ * The supplied ILockBytes pointer can be used by the StgCreateDocfileOnILockBytes
+ * function to build a compound file on top of this byte array object.
+ * The ILockBytes interface instance calls the GlobalReAlloc function to grow
+ * the memory block as required.
*/
HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal,
BOOL fDeleteOnRelease,
/******************************************************************************
* GetHGlobalFromILockBytes [OLE32.@]
+ *
+ * Retrieve a global memory handle to a byte array object created
+ * using the CreateILockBytesOnHGlobal function.
+ *
+ * PARAMS
+ * plkbyt [ I] Pointer to the ILockBytes interface on byte array object
+ * phglobal [ O] Address to store a global memory handle
+ * RETURNS
+ * S_OK if *phglobal has a correct value
+ * E_INVALIDARG if any parameters are invalid
+ *
*/
HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal)
{
/******************************************************************************
* This is the constructor for the HGLOBALLockBytesImpl class.
*
- * Params:
- * hGlobal - Handle that will support the stream. can be NULL.
- * fDeleteOnRelease - Flag set to TRUE if the HGLOBAL will be released
- * when the IStream object is destroyed.
+ * PARAMS
+ * hGlobal [ I] Handle that will support the stream. can be NULL.
+ * fDeleteOnRelease [ I] Flag set to TRUE if the HGLOBAL will be released
+ * when the IStream object is destroyed.
*/
HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal,
BOOL fDeleteOnRelease)
* since we want to cast this in an ILockBytes pointer
*/
const ILockBytes16Vtbl *lpVtbl;
- ULONG ref;
+ LONG ref;
/*
* Support for the LockBytes object
typedef struct HGLOBALLockBytesImpl16 HGLOBALLockBytesImpl16;
-HGLOBALLockBytesImpl16* HGLOBALLockBytesImpl16_Construct(
- HGLOBAL16 hGlobal,
- BOOL16 fDeleteOnRelease);
-
-void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This);
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
- ILockBytes16* iface,
- REFIID riid, /* [in] */
- void** ppvObject); /* [out][iid_is] */
-
-ULONG WINAPI HGLOBALLockBytesImpl16_AddRef(
- ILockBytes16* iface);
-
-ULONG WINAPI HGLOBALLockBytesImpl16_Release(
- ILockBytes16* iface);
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
- ILockBytes16* iface,
- ULARGE_INTEGER ulOffset, /* [in] */
- void* pv, /* [out][length_is][size_is] */
- ULONG cb, /* [in] */
- ULONG* pcbRead); /* [out] */
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt(
- ILockBytes16* iface,
- ULARGE_INTEGER ulOffset, /* [in] */
- const void* pv, /* [in][size_is] */
- ULONG cb, /* [in] */
- ULONG* pcbWritten); /* [out] */
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_Flush(
- ILockBytes16* iface);
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_SetSize(
- ILockBytes16* iface,
- ULARGE_INTEGER libNewSize); /* [in] */
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_LockRegion(
- ILockBytes16* iface,
- ULARGE_INTEGER libOffset, /* [in] */
- ULARGE_INTEGER cb, /* [in] */
- DWORD dwLockType); /* [in] */
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_UnlockRegion(
- ILockBytes16* iface,
- ULARGE_INTEGER libOffset, /* [in] */
- ULARGE_INTEGER cb, /* [in] */
- DWORD dwLockType); /* [in] */
-
-HRESULT WINAPI HGLOBALLockBytesImpl16_Stat(
- ILockBytes16* iface,
- STATSTG16* pstatstg, /* [out] */
- DWORD grfStatFlag); /* [in] */
-
/******************************************************************************
*
* HGLOBALLockBytesImpl16 implementation
* fDeleteOnRelease - Flag set to TRUE if the HGLOBAL16 will be released
* when the IStream object is destroyed.
*/
-HGLOBALLockBytesImpl16*
+static HGLOBALLockBytesImpl16*
HGLOBALLockBytesImpl16_Construct(HGLOBAL16 hGlobal,
BOOL16 fDeleteOnRelease)
{
* HGLOBALLockBytesImpl16 class. The pointer passed-in to this function will be
* freed and will not be valid anymore.
*/
-void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This)
+static void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This)
{
TRACE("()\n");
/*
HeapFree(GetProcessHeap(), 0, This);
}
+/******************************************************************************
+ * This implements the IUnknown method AddRef for this
+ * class
+ */
+ULONG HGLOBALLockBytesImpl16_AddRef(ILockBytes16* iface)
+{
+ HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
+
+ TRACE("(%p)\n",This);
+
+ return InterlockedIncrement(&This->ref);
+}
+
+
/******************************************************************************
* This implements the IUnknown method QueryInterface for this
* class
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
+HRESULT HGLOBALLockBytesImpl16_QueryInterface(
ILockBytes16* iface, /* [in] SEGPTR */
REFIID riid, /* [in] */
void** ppvObject) /* [out][iid_is] (ptr to SEGPTR!) */
/*
* Check that we obtained an interface.
*/
- if ((*ppvObject)==0)
+ if ((*ppvObject)==0) {
+ FIXME("Unknown IID %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
+ }
/*
* Query Interface always increases the reference count by one when it is
return S_OK;
}
-/******************************************************************************
- * This implements the IUnknown method AddRef for this
- * class
- */
-ULONG WINAPI HGLOBALLockBytesImpl16_AddRef(ILockBytes16* iface)
-{
- HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
-
- TRACE("(%p)\n",This);
-
- return InterlockedIncrement(&This->ref);
-}
-
/******************************************************************************
* This implements the IUnknown method Release for this
* class
*/
-ULONG WINAPI HGLOBALLockBytesImpl16_Release(ILockBytes16* iface)
+ULONG HGLOBALLockBytesImpl16_Release(ILockBytes16* iface)
{
HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
ULONG ref;
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
+HRESULT HGLOBALLockBytesImpl16_ReadAt(
ILockBytes16* iface,
ULARGE_INTEGER ulOffset, /* [in] */
void* pv, /* [out][length_is][size_is] */
return STG_E_READFAULT;
}
+/******************************************************************************
+ * This method is part of the ILockBytes interface.
+ *
+ * It will change the size of the byte array.
+ *
+ * See the documentation of ILockBytes for more info.
+ */
+HRESULT HGLOBALLockBytesImpl16_SetSize(
+ ILockBytes16* iface,
+ ULARGE_INTEGER libNewSize) /* [in] */
+{
+ HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
+ HGLOBAL16 supportHandle;
+
+ TRACE("(%p,%ld)\n",This,libNewSize.u.LowPart);
+ /*
+ * As documented.
+ */
+ if (libNewSize.u.HighPart != 0)
+ return STG_E_INVALIDFUNCTION;
+
+ if (This->byteArraySize.u.LowPart == libNewSize.u.LowPart)
+ return S_OK;
+
+ /*
+ * Re allocate the HGlobal to fit the new size of the stream.
+ */
+ supportHandle = GlobalReAlloc16(This->supportHandle, libNewSize.u.LowPart, 0);
+
+ if (supportHandle == 0)
+ return STG_E_MEDIUMFULL;
+
+ This->supportHandle = supportHandle;
+ This->byteArraySize.u.LowPart = libNewSize.u.LowPart;
+
+ return S_OK;
+}
+
/******************************************************************************
* This method is part of the ILockBytes interface.
*
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt(
+HRESULT HGLOBALLockBytesImpl16_WriteAt(
ILockBytes16* iface,
ULARGE_INTEGER ulOffset, /* [in] */
const void* pv, /* [in][size_is] */
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface)
+HRESULT HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface)
{
TRACE("(%p)\n",iface);
return S_OK;
}
-/******************************************************************************
- * This method is part of the ILockBytes interface.
- *
- * It will change the size of the byte array.
- *
- * See the documentation of ILockBytes for more info.
- */
-HRESULT WINAPI HGLOBALLockBytesImpl16_SetSize(
- ILockBytes16* iface,
- ULARGE_INTEGER libNewSize) /* [in] */
-{
- HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
- HGLOBAL16 supportHandle;
-
- TRACE("(%p,%ld)\n",This,libNewSize.u.LowPart);
- /*
- * As documented.
- */
- if (libNewSize.u.HighPart != 0)
- return STG_E_INVALIDFUNCTION;
-
- if (This->byteArraySize.u.LowPart == libNewSize.u.LowPart)
- return S_OK;
-
- /*
- * Re allocate the HGlobal to fit the new size of the stream.
- */
- supportHandle = GlobalReAlloc16(This->supportHandle, libNewSize.u.LowPart, 0);
-
- if (supportHandle == 0)
- return STG_E_MEDIUMFULL;
-
- This->supportHandle = supportHandle;
- This->byteArraySize.u.LowPart = libNewSize.u.LowPart;
-
- return S_OK;
-}
-
/******************************************************************************
* This method is part of the ILockBytes interface.
*
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_LockRegion(
+HRESULT HGLOBALLockBytesImpl16_LockRegion(
ILockBytes16* iface,
ULARGE_INTEGER libOffset, /* [in] */
ULARGE_INTEGER cb, /* [in] */
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_UnlockRegion(
+HRESULT HGLOBALLockBytesImpl16_UnlockRegion(
ILockBytes16* iface,
ULARGE_INTEGER libOffset, /* [in] */
ULARGE_INTEGER cb, /* [in] */
*
* See the documentation of ILockBytes for more info.
*/
-HRESULT WINAPI HGLOBALLockBytesImpl16_Stat(
+HRESULT HGLOBALLockBytesImpl16_Stat(
ILockBytes16*iface,
STATSTG16* pstatstg, /* [out] */
DWORD grfStatFlag) /* [in] */
typedef struct RunningObjectTableImpl
{
const IRunningObjectTableVtbl *lpVtbl;
- ULONG ref;
+ LONG ref;
struct list rot; /* list of ROT entries */
CRITICAL_SECTION lock;
static inline HRESULT WINAPI
IrotRegister(DWORD *cookie)
{
- static DWORD last_cookie = 1;
+ static LONG last_cookie = 1;
*cookie = InterlockedIncrement(&last_cookie);
return S_OK;
}
typedef struct EnumMonikerImpl
{
const IEnumMonikerVtbl *lpVtbl;
- ULONG ref;
+ LONG ref;
MInterfacePointer **monikers;
ULONG moniker_count;
const IUnknownVtbl *lpVtbl;
const IMarshalVtbl *lpVtblMarshal;
- ULONG ref;
+ LONG ref;
IMoniker *moniker;
} MonikerMarshal;
/******************************************************************************
* IMalloc16_QueryInterface [COMPOBJ.500]
*/
-HRESULT WINAPI IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) {
+HRESULT IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) {
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
/******************************************************************************
* IMalloc16_AddRef [COMPOBJ.501]
*/
-ULONG WINAPI IMalloc16_fnAddRef(IMalloc16* iface) {
+ULONG IMalloc16_fnAddRef(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->AddRef()\n",This);
return 1; /* cannot be freed */
/******************************************************************************
* IMalloc16_Release [COMPOBJ.502]
*/
-ULONG WINAPI IMalloc16_fnRelease(IMalloc16* iface) {
+ULONG IMalloc16_fnRelease(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->Release()\n",This);
return 1; /* cannot be freed */
/******************************************************************************
* IMalloc16_Alloc [COMPOBJ.503]
*/
-SEGPTR WINAPI IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
+SEGPTR IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->Alloc(%ld)\n",This,cb);
return MapLS( HeapAlloc( GetProcessHeap(), 0, cb ) );
/******************************************************************************
* IMalloc16_Free [COMPOBJ.505]
*/
-VOID WINAPI IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
+VOID IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
{
void *ptr = MapSL(pv);
IMalloc16Impl *This = (IMalloc16Impl *)iface;
/******************************************************************************
* IMalloc16_Realloc [COMPOBJ.504]
*/
-SEGPTR WINAPI IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
+SEGPTR IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
{
SEGPTR ret;
IMalloc16Impl *This = (IMalloc16Impl *)iface;
/******************************************************************************
* IMalloc16_GetSize [COMPOBJ.506]
*/
-DWORD WINAPI IMalloc16_fnGetSize(const IMalloc16* iface,SEGPTR pv)
+DWORD IMalloc16_fnGetSize(const IMalloc16* iface,SEGPTR pv)
{
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->GetSize(%08lx)\n",This,pv);
/******************************************************************************
* IMalloc16_DidAlloc [COMPOBJ.507]
*/
-INT16 WINAPI IMalloc16_fnDidAlloc(const IMalloc16* iface,LPVOID pv) {
+INT16 IMalloc16_fnDidAlloc(const IMalloc16* iface,LPVOID pv) {
IMalloc16 *This = (IMalloc16 *)iface;
TRACE("(%p)->DidAlloc(%p)\n",This,pv);
return (INT16)-1;
/******************************************************************************
* IMalloc16_HeapMinimize [COMPOBJ.508]
*/
-LPVOID WINAPI IMalloc16_fnHeapMinimize(IMalloc16* iface) {
+LPVOID IMalloc16_fnHeapMinimize(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->HeapMinimize()\n",This);
return NULL;
if (ret == S_OK)
{
- DWORD buf2len;
+ LONG buf2len;
char *buf2 = HeapAlloc(GetProcessHeap(), 0, 255);
buf2len = 255;
if (RegQueryValueA(xhkey, NULL, buf2, &buf2len))
TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2);
return TRUE;
}
+
+/***********************************************************************
+ * CoMemAlloc [COMPOBJ.151]
+ */
+SEGPTR WINAPI CoMemAlloc(DWORD size, DWORD dwMemContext, DWORD x) {
+ HRESULT hres;
+ SEGPTR segptr;
+
+ /* FIXME: check context handling */
+ TRACE("(%ld, 0x%08lx, 0x%08lx)\n", size, dwMemContext, x);
+ hres = _xmalloc16(size, &segptr);
+ if (hres != S_OK)
+ return (SEGPTR)0;
+ return segptr;
+}
/******************************************************************************
* OleInitializeWOW [OLE32.@]
*/
-HRESULT WINAPI OleInitializeWOW(DWORD x) {
- FIXME("(0x%08lx),stub!\n",x);
+HRESULT WINAPI OleInitializeWOW(DWORD x, DWORD y) {
+ FIXME("(0x%08lx, 0x%08lx),stub!\n",x, y);
return 0;
}
DWORD cbData;
HKEY clsidKey;
LONG hres;
- LPBYTE buffer;
+ LPSTR buffer;
HRESULT retVal;
/*
* Initialize the out parameter.
"",
NULL,
&dwKeyType,
- buffer,
+ (LPBYTE) buffer,
&cbData);
RegCloseKey(clsidKey);
-1 pascal OleBuildVersion() OleBuildVersion\r
-2 pascal OleInitialize(ptr) OleInitialize\r
-3 pascal OleUninitialize() OleUninitialize\r
-4 pascal DllGetClassObject(ptr ptr ptr) DllGetClassObject16\r
-#5 WEP\r
-6 stub OLEQUERYLINKFROMDATA\r
-7 stub OLEQUERYCREATEFROMDATA\r
-8 stub OLECREATEFROMDATA\r
-9 stub OLECREATELINKFROMDATA\r
-10 stub OLECREATE\r
-11 stub OLECREATELINK\r
-12 stub OLELOAD\r
-13 stub OLESAVE\r
-14 stub OLERUN\r
-#15 ___EXPORTEDSTUB\r
-16 stub OLEISRUNNING\r
-17 stub OLELOCKRUNNING\r
-18 stub READCLASSSTG\r
-19 stub WRITECLASSSTG\r
-20 stub READCLASSSTM\r
-21 stub WRITECLASSSTM\r
-22 stub BINDMONIKER\r
-23 stub MKPARSEDISPLAYNAME\r
-24 stub OLESAVETOSTREAM\r
-25 stub OLELOADFROMSTREAM\r
-26 stub CREATEBINDCTX\r
-27 pascal CreateItemMoniker(str str ptr) CreateItemMoniker16\r
-28 pascal CreateFileMoniker(str ptr) CreateFileMoniker16\r
-29 stub CREATEGENERICCOMPOSITE\r
-30 pascal GetRunningObjectTable(long ptr) GetRunningObjectTable16\r
-31 stub OLEGETMALLOC\r
-32 stub RELEASESTGMEDIUM\r
-33 stub READSTRINGSTREAM\r
-34 stub WRITESTRINGSTREAM\r
-35 pascal RegisterDragDrop(word segptr) RegisterDragDrop16\r
-36 pascal RevokeDragDrop(word) RevokeDragDrop16\r
-37 stub DODRAGDROP\r
-38 stub CREATEOLEADVISEHOLDER\r
-39 stub CREATEDATAADVISEHOLDER\r
-40 stub OLECREATEMENUDESCRIPTOR\r
-41 stub OLESETMENUDESCRIPTOR\r
-42 stub OLEDESTROYMENUDESCRIPTOR\r
-43 stub OPENORCREATESTREAM\r
-44 stub CREATEANTIMONIKER\r
-45 stub CREATEPOINTERMONIKER\r
-46 stub MONIKERRELATIVEPATHTO\r
-47 stub MONIKERCOMMONPREFIXWITH\r
-48 stub ISACCELERATOR\r
-49 pascal OleSetClipboard(ptr) OleSetClipboard16\r
-50 pascal OleGetClipboard(ptr) OleGetClipboard16\r
-51 stub OLEDUPLICATEDATA\r
-52 stub OLEGETICONOFFILE\r
-53 stub OLEGETICONOFCLASS\r
-54 pascal CreateILockBytesOnHGlobal(word word ptr) CreateILockBytesOnHGlobal16\r
-55 stub GETHGLOBALFROMILOCKBYTES\r
-56 pascal -ret16 OleMetaFilePictFromIconAndLabel(word str str word) OleMetaFilePictFromIconAndLabel16\r
-57 stub GETCLASSFILE\r
-58 stub OLEDRAW\r
-59 stub OLECREATEDEFAULTHANDLER\r
-60 stub OLECREATEEMBEDDINGHELPER\r
-61 stub OLECONVERTISTORAGETOOLESTREAMEX\r
-62 stub OLECONVERTOLESTREAMTOISTORAGEEX\r
-63 stub SETDOCUMENTBITSTG\r
-64 stub GETDOCUMENTBITSTG\r
-65 stub WRITEOLESTG\r
-66 stub READOLESTG\r
-67 stub OLECREATEFROMFILE\r
-68 stub OLECREATELINKTOFILE\r
-69 stub CREATEDATACACHE\r
-70 stub OLECONVERTISTORAGETOOLESTREAM\r
-71 stub OLECONVERTOLESTREAMTOISTORAGE\r
-74 stub READFMTUSERTYPESTG\r
-75 stub WRITEFMTUSERTYPESTG\r
-76 pascal -ret16 OleFlushClipboard() OleFlushClipboard16\r
-77 stub OLEISCURRENTCLIPBOARD\r
-78 stub OLETRANSLATEACCELERATOR\r
-79 stub OLEDOAUTOCONVERT\r
-80 stub OLEGETAUTOCONVERT\r
-81 stub OLESETAUTOCONVERT\r
-82 stub GETCONVERTSTG\r
-83 stub SETCONVERTSTG\r
-84 stub CREATESTREAMONHGLOBAL\r
-85 stub GETHGLOBALFROMSTREAM\r
-86 stub OLESETCONTAINEDOBJECT\r
-87 stub OLENOTEOBJECTVISIBLE\r
-88 stub OLECREATESTATICFROMDATA\r
-89 stub OLEREGGETUSERTYPE\r
-90 stub OLEREGGETMISCSTATUS\r
-91 stub OLEREGENUMFORMATETC\r
-92 stub OLEREGENUMVERBS\r
-93 stub OLEGETENUMFORMATETC\r
-100 stub MAKEDEBUGSTREAM\r
-104 stub DBGLOGOPEN\r
-105 stub DBGLOGCLOSE\r
-106 stub DBGLOGOUTPUTDEBUGSTRING\r
-107 stub DBGLOGWRITE\r
-108 stub DBGLOGTIMESTAMP\r
-109 stub DBGLOGWRITEBANNER\r
-110 stub DBGDUMPOBJECT\r
-111 stub DBGISOBJECTVALID\r
-112 stub DUMPALLOBJECTS\r
-113 stub VALIDATEALLOBJECTS\r
-114 stub DBGDUMPCLASSNAME\r
-115 stub DBGDUMPEXTERNALOBJECT\r
-120 stub _IID_IENUMUNKNOWN\r
-121 stub _IID_IENUMSTRING\r
-122 stub _IID_IENUMMONIKER\r
-123 stub _IID_IENUMFORMATETC\r
-124 stub _IID_IENUMOLEVERB\r
-125 stub _IID_IENUMSTATDATA\r
-126 stub _IID_IENUMGENERIC\r
-127 stub _IID_IENUMHOLDER\r
-128 stub _IID_IENUMCALLBACK\r
-129 stub _IID_IPERSISTSTREAM\r
-130 stub _IID_IPERSISTSTORAGE\r
-131 stub _IID_IPERSISTFILE\r
-132 stub _IID_IPERSIST\r
-133 stub _IID_IVIEWOBJECT\r
-134 stub _IID_IDATAOBJECT\r
-135 stub _IID_IADVISESINK\r
-136 stub _IID_IDATAADVISEHOLDER\r
-137 stub _IID_IOLEADVISEHOLDER\r
-138 stub _IID_IOLEOBJECT\r
-139 stub _IID_IOLEINPLACEOBJECT\r
-140 stub _IID_IOLEWINDOW\r
-141 stub _IID_IOLEINPLACEUIWINDOW\r
-142 stub _IID_IOLEINPLACEFRAME\r
-143 stub _IID_IOLEINPLACEACTIVEOBJECT\r
-144 stub _IID_IOLECLIENTSITE\r
-145 stub _IID_IOLEINPLACESITE\r
-146 stub _IID_IPARSEDISPLAYNAME\r
-147 stub _IID_IOLECONTAINER\r
-148 stub _IID_IOLEITEMCONTAINER\r
-149 stub _IID_IOLELINK\r
-150 stub _IID_IOLECACHE\r
-151 stub _IID_IOLEMANAGER\r
-152 stub _IID_IOLEPRESOBJ\r
-153 stub _IID_IDROPSOURCE\r
-154 stub _IID_IDROPTARGET\r
-155 stub _IID_IDEBUG\r
-156 stub _IID_IDEBUGSTREAM\r
-157 stub _IID_IADVISESINK2\r
-158 stub _IID_IVIEWOBJECT2\r
-159 stub _IID_IOLECACHE2\r
-160 stub _IID_IOLECACHECONTROL\r
-161 stub _IID_IRUNNABLEOBJECT\r
-\r
-# WINE MemLockBytes implementation.\r
-500 cdecl HGLOBALLockBytesImpl16_QueryInterface(segptr ptr ptr) HGLOBALLockBytesImpl16_QueryInterface\r
-501 cdecl HGLOBALLockBytesImpl16_AddRef(ptr) HGLOBALLockBytesImpl16_AddRef\r
-502 cdecl HGLOBALLockBytesImpl16_Release(ptr) HGLOBALLockBytesImpl16_Release\r
-503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_ReadAt\r
-504 cdecl HGLOBALLockBytesImpl16_WriteAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_WriteAt\r
-505 cdecl HGLOBALLockBytesImpl16_Flush(ptr) HGLOBALLockBytesImpl16_Flush\r
-506 cdecl HGLOBALLockBytesImpl16_SetSize(ptr long long) HGLOBALLockBytesImpl16_SetSize\r
-507 cdecl HGLOBALLockBytesImpl16_LockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_LockRegion\r
-508 cdecl HGLOBALLockBytesImpl16_UnlockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_UnlockRegion\r
-509 cdecl HGLOBALLockBytesImpl16_Stat(ptr ptr long) HGLOBALLockBytesImpl16_Stat\r
+1 pascal OleBuildVersion() OleBuildVersion
+2 pascal OleInitialize(ptr) OleInitialize
+3 pascal OleUninitialize() OleUninitialize
+4 pascal DllGetClassObject(ptr ptr ptr) DllGetClassObject16
+#5 WEP
+6 stub OLEQUERYLINKFROMDATA
+7 stub OLEQUERYCREATEFROMDATA
+8 stub OLECREATEFROMDATA
+9 stub OLECREATELINKFROMDATA
+10 stub OLECREATE
+11 stub OLECREATELINK
+12 stub OLELOAD
+13 stub OLESAVE
+14 stub OLERUN
+#15 ___EXPORTEDSTUB
+16 stub OLEISRUNNING
+17 stub OLELOCKRUNNING
+18 stub READCLASSSTG
+19 stub WRITECLASSSTG
+20 stub READCLASSSTM
+21 stub WRITECLASSSTM
+22 stub BINDMONIKER
+23 stub MKPARSEDISPLAYNAME
+24 stub OLESAVETOSTREAM
+25 stub OLELOADFROMSTREAM
+26 stub CREATEBINDCTX
+27 pascal CreateItemMoniker(str str ptr) CreateItemMoniker16
+28 pascal CreateFileMoniker(str ptr) CreateFileMoniker16
+29 stub CREATEGENERICCOMPOSITE
+30 pascal GetRunningObjectTable(long ptr) GetRunningObjectTable16
+31 stub OLEGETMALLOC
+32 stub RELEASESTGMEDIUM
+33 stub READSTRINGSTREAM
+34 stub WRITESTRINGSTREAM
+35 pascal RegisterDragDrop(word segptr) RegisterDragDrop16
+36 pascal RevokeDragDrop(word) RevokeDragDrop16
+37 stub DODRAGDROP
+38 stub CREATEOLEADVISEHOLDER
+39 stub CREATEDATAADVISEHOLDER
+40 stub OLECREATEMENUDESCRIPTOR
+41 pascal OleSetMenuDescriptor(word word word ptr ptr) OleSetMenuDescriptor16
+42 stub OLEDESTROYMENUDESCRIPTOR
+43 stub OPENORCREATESTREAM
+44 stub CREATEANTIMONIKER
+45 stub CREATEPOINTERMONIKER
+46 stub MONIKERRELATIVEPATHTO
+47 stub MONIKERCOMMONPREFIXWITH
+48 stub ISACCELERATOR
+49 pascal OleSetClipboard(ptr) OleSetClipboard16
+50 pascal OleGetClipboard(ptr) OleGetClipboard16
+51 stub OLEDUPLICATEDATA
+52 stub OLEGETICONOFFILE
+53 stub OLEGETICONOFCLASS
+54 pascal CreateILockBytesOnHGlobal(word word ptr) CreateILockBytesOnHGlobal16
+55 stub GETHGLOBALFROMILOCKBYTES
+56 pascal -ret16 OleMetaFilePictFromIconAndLabel(word str str word) OleMetaFilePictFromIconAndLabel16
+57 stub GETCLASSFILE
+58 stub OLEDRAW
+59 stub OLECREATEDEFAULTHANDLER
+60 stub OLECREATEEMBEDDINGHELPER
+61 stub OLECONVERTISTORAGETOOLESTREAMEX
+62 stub OLECONVERTOLESTREAMTOISTORAGEEX
+63 stub SETDOCUMENTBITSTG
+64 stub GETDOCUMENTBITSTG
+65 stub WRITEOLESTG
+66 stub READOLESTG
+67 stub OLECREATEFROMFILE
+68 stub OLECREATELINKTOFILE
+69 stub CREATEDATACACHE
+70 stub OLECONVERTISTORAGETOOLESTREAM
+71 stub OLECONVERTOLESTREAMTOISTORAGE
+74 stub READFMTUSERTYPESTG
+75 stub WRITEFMTUSERTYPESTG
+76 pascal -ret16 OleFlushClipboard() OleFlushClipboard16
+77 stub OLEISCURRENTCLIPBOARD
+78 stub OLETRANSLATEACCELERATOR
+79 stub OLEDOAUTOCONVERT
+80 stub OLEGETAUTOCONVERT
+81 stub OLESETAUTOCONVERT
+82 stub GETCONVERTSTG
+83 stub SETCONVERTSTG
+84 stub CREATESTREAMONHGLOBAL
+85 stub GETHGLOBALFROMSTREAM
+86 stub OLESETCONTAINEDOBJECT
+87 stub OLENOTEOBJECTVISIBLE
+88 stub OLECREATESTATICFROMDATA
+89 stub OLEREGGETUSERTYPE
+90 stub OLEREGGETMISCSTATUS
+91 stub OLEREGENUMFORMATETC
+92 stub OLEREGENUMVERBS
+93 stub OLEGETENUMFORMATETC
+100 stub MAKEDEBUGSTREAM
+104 stub DBGLOGOPEN
+105 stub DBGLOGCLOSE
+106 stub DBGLOGOUTPUTDEBUGSTRING
+107 stub DBGLOGWRITE
+108 stub DBGLOGTIMESTAMP
+109 stub DBGLOGWRITEBANNER
+110 stub DBGDUMPOBJECT
+111 stub DBGISOBJECTVALID
+112 stub DUMPALLOBJECTS
+113 stub VALIDATEALLOBJECTS
+114 stub DBGDUMPCLASSNAME
+115 stub DBGDUMPEXTERNALOBJECT
+120 stub _IID_IENUMUNKNOWN
+121 stub _IID_IENUMSTRING
+122 stub _IID_IENUMMONIKER
+123 stub _IID_IENUMFORMATETC
+124 stub _IID_IENUMOLEVERB
+125 stub _IID_IENUMSTATDATA
+126 stub _IID_IENUMGENERIC
+127 stub _IID_IENUMHOLDER
+128 stub _IID_IENUMCALLBACK
+129 stub _IID_IPERSISTSTREAM
+130 stub _IID_IPERSISTSTORAGE
+131 stub _IID_IPERSISTFILE
+132 stub _IID_IPERSIST
+133 stub _IID_IVIEWOBJECT
+134 stub _IID_IDATAOBJECT
+135 stub _IID_IADVISESINK
+136 stub _IID_IDATAADVISEHOLDER
+137 stub _IID_IOLEADVISEHOLDER
+138 stub _IID_IOLEOBJECT
+139 stub _IID_IOLEINPLACEOBJECT
+140 stub _IID_IOLEWINDOW
+141 stub _IID_IOLEINPLACEUIWINDOW
+142 stub _IID_IOLEINPLACEFRAME
+143 stub _IID_IOLEINPLACEACTIVEOBJECT
+144 stub _IID_IOLECLIENTSITE
+145 stub _IID_IOLEINPLACESITE
+146 stub _IID_IPARSEDISPLAYNAME
+147 stub _IID_IOLECONTAINER
+148 stub _IID_IOLEITEMCONTAINER
+149 stub _IID_IOLELINK
+150 stub _IID_IOLECACHE
+151 stub _IID_IOLEMANAGER
+152 stub _IID_IOLEPRESOBJ
+153 stub _IID_IDROPSOURCE
+154 stub _IID_IDROPTARGET
+155 stub _IID_IDEBUG
+156 stub _IID_IDEBUGSTREAM
+157 stub _IID_IADVISESINK2
+158 stub _IID_IVIEWOBJECT2
+159 stub _IID_IOLECACHE2
+160 stub _IID_IOLECACHECONTROL
+161 stub _IID_IRUNNABLEOBJECT
+
+# WINE MemLockBytes implementation.
+500 cdecl HGLOBALLockBytesImpl16_QueryInterface(segptr ptr ptr) HGLOBALLockBytesImpl16_QueryInterface
+501 cdecl HGLOBALLockBytesImpl16_AddRef(ptr) HGLOBALLockBytesImpl16_AddRef
+502 cdecl HGLOBALLockBytesImpl16_Release(ptr) HGLOBALLockBytesImpl16_Release
+503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_ReadAt
+504 cdecl HGLOBALLockBytesImpl16_WriteAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_WriteAt
+505 cdecl HGLOBALLockBytesImpl16_Flush(ptr) HGLOBALLockBytesImpl16_Flush
+506 cdecl HGLOBALLockBytesImpl16_SetSize(ptr long long) HGLOBALLockBytesImpl16_SetSize
+507 cdecl HGLOBALLockBytesImpl16_LockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_LockRegion
+508 cdecl HGLOBALLockBytesImpl16_UnlockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_UnlockRegion
+509 cdecl HGLOBALLockBytesImpl16_Stat(ptr ptr long) HGLOBALLockBytesImpl16_Stat
FIXME("(%s,%p),stub!\n",lpszPathName,ppmk);
return E_NOTIMPL;
}
+
+/******************************************************************************
+ * OleSetMenuDescriptor (OLE2.41)
+ */
+HRESULT WINAPI OleSetMenuDescriptor16(
+ HOLEMENU hOleMenu, /* FIXME: HOLEMENU16 likely */
+ HWND16 hwndFrame,
+ HWND16 hwndActiveObject,
+ LPOLEINPLACEFRAME lpFrame,
+ LPOLEINPLACEACTIVEOBJECT lpActiveObject)
+{
+ FIXME("(%p, %x, %x, %p, %p), stub!\n", hOleMenu, hwndFrame, hwndActiveObject, lpFrame, lpActiveObject);
+ return E_NOTIMPL;
+}
+
+/******************************************************************************
+ * IsValidInterface [COMPOBJ.23]
+ *
+ * Determines whether a pointer is a valid interface.
+ *
+ * PARAMS
+ * punk [I] Interface to be tested.
+ *
+ * RETURNS
+ * TRUE, if the passed pointer is a valid interface, or FALSE otherwise.
+ */
+BOOL WINAPI IsValidInterface16(SEGPTR punk)
+{
+ DWORD **ptr;
+
+ if (IsBadReadPtr16(punk,4))
+ return FALSE;
+ ptr = MapSL(punk);
+ if (IsBadReadPtr16((SEGPTR)ptr[0],4)) /* check vtable ptr */
+ return FALSE;
+ ptr = MapSL((SEGPTR)ptr[0]); /* ptr to first method */
+ if (IsBadReadPtr16((SEGPTR)ptr[0],2))
+ return FALSE;
+ return TRUE;
+}
-1 stub GETFILTERINFO\r
-2 stub IMPORTGR\r
-3 stub GETFILTERPREF\r
-4 stub IMPORTEMBEDDEDGR\r
-5 stub QD2GDI\r
-6 stub STATUSPROC\r
-7 stub ENUMFONTFUNC\r
-#8 WEP\r
-#9 ___EXPORTEDSTUB\r
+1 stub GETFILTERINFO
+2 stub IMPORTGR
+3 stub GETFILTERPREF
+4 stub IMPORTEMBEDDEDGR
+5 stub QD2GDI
+6 stub STATUSPROC
+7 stub ENUMFONTFUNC
+#8 WEP
+#9 ___EXPORTEDSTUB
-1 pascal GetUserDefaultLCID() GetUserDefaultLCID16\r
-2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID16\r
-3 pascal -ret16 GetUserDefaultLangID() GetUserDefaultLangID16\r
-4 pascal -ret16 GetSystemDefaultLangID() GetSystemDefaultLangID16\r
-5 pascal GetLocaleInfoA(long long ptr word) GetLocaleInfo16\r
-6 pascal -ret16 LCMapStringA(word long ptr word ptr word) LCMapString16\r
-7 pascal -ret16 GetStringTypeA(long long str word ptr) GetStringType16\r
-8 pascal -ret16 CompareStringA(long long str word str word) CompareString16\r
-9 pascal -ret16 RegisterNLSInfoChanged(ptr) RegisterNLSInfoChanged16\r
-#10 stub WEP\r
-11 stub LIBMAIN\r
-12 stub NOTIFYWINDOWPROC\r
+1 pascal GetUserDefaultLCID() GetUserDefaultLCID16
+2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID16
+3 pascal -ret16 GetUserDefaultLangID() GetUserDefaultLangID16
+4 pascal -ret16 GetSystemDefaultLangID() GetSystemDefaultLangID16
+5 pascal GetLocaleInfoA(long long ptr word) GetLocaleInfo16
+6 pascal -ret16 LCMapStringA(word long ptr word ptr word) LCMapString16
+7 pascal -ret16 GetStringTypeA(long long str word ptr) GetStringType16
+8 pascal -ret16 CompareStringA(long long str word str word) CompareString16
+9 pascal -ret16 RegisterNLSInfoChanged(ptr) RegisterNLSInfoChanged16
+#10 stub WEP
+11 stub LIBMAIN
+12 stub NOTIFYWINDOWPROC
-1 stub DLLGETCLASSOBJECT\r
-#2 WEP\r
-#3 ___EXPORTEDSTUB\r
+1 stub DLLGETCLASSOBJECT
+#2 WEP
+#3 ___EXPORTEDSTUB
-#1 stub WEP\r
-2 stub ROT16_ISRUNNING16\r
-3 stub ISWIN32SHANDLE\r
-4 stub ___EXPORTEDSTUB\r
-5 stub COTHKCOMMON\r
-6 stub ROT16_GETTIMEOFLASTCHANGE16\r
-7 stub ROT16_GETOBJECT16\r
+#1 stub WEP
+2 stub ROT16_ISRUNNING16
+3 stub ISWIN32SHANDLE
+4 stub ___EXPORTEDSTUB
+5 stub COTHKCOMMON
+6 stub ROT16_GETTIMEOFLASTCHANGE16
+7 stub ROT16_GETOBJECT16
-@ stdcall BindMoniker(ptr long ptr ptr)\r
-@ stub CLIPFORMAT_UserFree\r
-@ stub CLIPFORMAT_UserMarshal\r
-@ stub CLIPFORMAT_UserSize\r
-@ stub CLIPFORMAT_UserUnmarshal\r
-@ stdcall CLSIDFromProgID(wstr ptr)\r
-@ stdcall CLSIDFromString(wstr ptr)\r
-@ stdcall CoAddRefServerProcess()\r
-@ stdcall CoBuildVersion()\r
-@ stdcall CoCopyProxy(ptr ptr)\r
-@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)\r
-@ stdcall CoCreateGuid(ptr)\r
-@ stdcall CoCreateInstance(ptr ptr long ptr ptr)\r
-@ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr)\r
-@ stdcall CoDisconnectObject(ptr long)\r
-@ stdcall CoDosDateTimeToFileTime(long long ptr) kernel32.DosDateTimeToFileTime\r
-@ stdcall CoFileTimeNow(ptr)\r
-@ stdcall CoFileTimeToDosDateTime(ptr ptr ptr) kernel32.FileTimeToDosDateTime\r
-@ stdcall CoFreeAllLibraries()\r
-@ stdcall CoFreeLibrary(long)\r
-@ stdcall CoFreeUnusedLibraries()\r
-@ stub CoGetCallContext #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED\r
-@ stub CoGetCallerTID\r
-@ stdcall CoGetClassObject(ptr long ptr ptr ptr)\r
-@ stub CoGetCurrentLogicalThreadId\r
-@ stdcall CoGetCurrentProcess()\r
-@ stub CoGetInstanceFromFile #@ stdcall (ptr ptr ptr long wstr long ptr) return 0,ERR_NOTIMPLEMENTED\r
-@ stub CoGetInstanceFromIStorage #@ stdcall (ptr ptr ptr long ptr long ptr) return 0,ERR_NOTIMPLEMENTED\r
-@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr)\r
-@ stdcall CoGetMalloc(long ptr)\r
-@ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long)\r
-@ stub CoGetObject\r
-@ stdcall CoGetPSClsid(ptr ptr)\r
-@ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr)\r
-@ stdcall CoGetState(ptr)\r
-@ stub CoGetTIDFromIPID\r
-@ stdcall CoGetTreatAsClass(ptr ptr)\r
-@ stub CoImpersonateClient\r
-@ stdcall CoInitialize(ptr)\r
-@ stdcall CoInitializeEx(ptr long)\r
-@ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr)\r
-@ stdcall CoInitializeWOW(long long)\r
-@ stdcall CoIsHandlerConnected(ptr)\r
-@ stdcall CoIsOle1Class (ptr)\r
-@ stdcall CoLoadLibrary(wstr long)\r
-@ stdcall CoLockObjectExternal(ptr long long)\r
-@ stdcall CoMarshalHresult(ptr long)\r
-@ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr)\r
-@ stdcall CoMarshalInterface(ptr ptr ptr long ptr long)\r
-@ stub CoQueryAuthenticationServices\r
-@ stub CoQueryClientBlanket\r
-@ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr)\r
-@ stub CoQueryReleaseObject\r
-@ stub CoRegisterChannelHook\r
-@ stdcall CoRegisterClassObject(ptr ptr long long ptr)\r
-@ stdcall CoRegisterMallocSpy (ptr)\r
-@ stdcall CoRegisterMessageFilter(ptr ptr)\r
-@ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED\r
-@ stub CoRegisterSurrogate\r
-@ stdcall CoReleaseMarshalData(ptr)\r
-@ stdcall CoReleaseServerProcess()\r
-@ stdcall CoResumeClassObjects()\r
-@ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED\r
-@ stdcall CoRevokeClassObject(long)\r
-@ stdcall CoRevokeMallocSpy()\r
-@ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long)\r
-@ stdcall CoSetState(ptr)\r
-@ stdcall CoSuspendClassObjects()\r
-@ stub CoSwitchCallContext\r
-@ stdcall CoTaskMemAlloc(long)\r
-@ stdcall CoTaskMemFree(ptr)\r
-@ stdcall CoTaskMemRealloc(ptr long)\r
-@ stdcall CoTreatAsClass(ptr ptr)\r
-@ stdcall CoUninitialize()\r
-@ stub CoUnloadingWOW\r
-@ stdcall CoUnmarshalHresult(ptr ptr)\r
-@ stdcall CoUnmarshalInterface(ptr ptr ptr)\r
-@ stdcall CreateAntiMoniker(ptr)\r
-@ stdcall CreateBindCtx(long ptr)\r
-@ stdcall CreateClassMoniker(ptr ptr)\r
-@ stdcall CreateDataAdviseHolder(ptr)\r
-@ stdcall CreateDataCache(ptr ptr ptr ptr)\r
-@ stdcall CreateErrorInfo(ptr)\r
-@ stdcall CreateFileMoniker(wstr ptr)\r
-@ stdcall CreateGenericComposite(ptr ptr ptr)\r
-@ stdcall CreateILockBytesOnHGlobal(ptr long ptr)\r
-@ stdcall CreateItemMoniker(wstr wstr ptr)\r
-@ stub CreateObjrefMoniker\r
-@ stdcall CreateOleAdviseHolder(ptr)\r
-@ stub CreatePointerMoniker #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED\r
-@ stdcall CreateStreamOnHGlobal(ptr long ptr)\r
-@ stdcall DllDebugObjectRPCHook(long ptr)\r
-@ stdcall -private DllGetClassObject (ptr ptr ptr) OLE32_DllGetClassObject\r
-@ stub DllGetClassObjectWOW\r
-@ stdcall -private DllRegisterServer()\r
-@ stdcall -private DllUnregisterServer()\r
-@ stdcall DoDragDrop(ptr ptr long ptr)\r
-@ stub EnableHookObject\r
-@ stdcall FmtIdToPropStgName(ptr wstr)\r
-@ stdcall FreePropVariantArray(long ptr)\r
-@ stdcall GetClassFile(wstr ptr)\r
-@ stdcall GetConvertStg(ptr)\r
-@ stub GetDocumentBitStg\r
-@ stdcall GetErrorInfo(long ptr)\r
-@ stdcall GetHGlobalFromILockBytes(ptr ptr)\r
-@ stdcall GetHGlobalFromStream(ptr ptr)\r
-@ stub GetHookInterface\r
-@ stdcall GetRunningObjectTable(long ptr)\r
-@ stub HACCEL_UserFree\r
-@ stub HACCEL_UserMarshal\r
-@ stub HACCEL_UserSize\r
-@ stub HACCEL_UserUnmarshal\r
-@ stub HBITMAP_UserFree\r
-@ stub HBITMAP_UserMarshal\r
-@ stub HBITMAP_UserSize\r
-@ stub HBITMAP_UserUnmarshal\r
-@ stub HBRUSH_UserFree\r
-@ stub HBRUSH_UserMarshal\r
-@ stub HBRUSH_UserSize\r
-@ stub HBRUSH_UserUnmarshal\r
-@ stub HENHMETAFILE_UserFree\r
-@ stub HENHMETAFILE_UserMarshal\r
-@ stub HENHMETAFILE_UserSize\r
-@ stub HENHMETAFILE_UserUnmarshal\r
-@ stub HGLOBAL_UserFree\r
-@ stub HGLOBAL_UserMarshal\r
-@ stub HGLOBAL_UserSize\r
-@ stub HGLOBAL_UserUnmarshal\r
-@ stub HMENU_UserFree\r
-@ stub HMENU_UserMarshal\r
-@ stub HMENU_UserSize\r
-@ stub HMENU_UserUnmarshal\r
-@ stub HMETAFILEPICT_UserFree\r
-@ stub HMETAFILEPICT_UserMarshal\r
-@ stub HMETAFILEPICT_UserSize\r
-@ stub HMETAFILEPICT_UserUnmarshal\r
-@ stub HMETAFILE_UserFree\r
-@ stub HMETAFILE_UserMarshal\r
-@ stub HMETAFILE_UserSize\r
-@ stub HMETAFILE_UserUnmarshal\r
-@ stub HPALETTE_UserFree\r
-@ stub HPALETTE_UserMarshal\r
-@ stub HPALETTE_UserSize\r
-@ stub HPALETTE_UserUnmarshal\r
-@ stub HWND_UserFree\r
-@ stub HWND_UserMarshal\r
-@ stub HWND_UserSize\r
-@ stub HWND_UserUnmarshal\r
-@ stdcall IIDFromString(wstr ptr) CLSIDFromString\r
-@ stub I_RemoteMain\r
-@ stdcall IsAccelerator(long long ptr long)\r
-@ stdcall IsEqualGUID(ptr ptr)\r
-@ stub IsValidIid\r
-@ stdcall IsValidInterface(ptr)\r
-@ stub IsValidPtrIn\r
-@ stub IsValidPtrOut\r
-@ stdcall MkParseDisplayName(ptr ptr ptr ptr)\r
-@ stdcall MonikerCommonPrefixWith(ptr ptr ptr)\r
-@ stub MonikerRelativePathTo\r
-@ stdcall OleBuildVersion()\r
-@ stdcall OleConvertIStorageToOLESTREAM(ptr ptr)\r
-@ stub OleConvertIStorageToOLESTREAMEx\r
-@ stdcall OleConvertOLESTREAMToIStorage(ptr ptr ptr)\r
-@ stub OleConvertOLESTREAMToIStorageEx\r
-@ stdcall OleCreate(ptr ptr long ptr ptr ptr ptr)\r
-@ stdcall OleCreateDefaultHandler(ptr ptr ptr ptr)\r
-@ stub OleCreateEmbeddingHelper\r
-@ stub OleCreateEx\r
-@ stdcall OleCreateFromData(ptr ptr long ptr ptr ptr ptr)\r
-@ stub OleCreateFromDataEx\r
-@ stdcall OleCreateFromFile(ptr ptr ptr long ptr ptr ptr ptr)\r
-@ stub OleCreateFromFileEx\r
-@ stdcall OleCreateLink(ptr ptr long ptr ptr ptr ptr)\r
-@ stub OleCreateLinkEx\r
-@ stdcall OleCreateLinkFromData(ptr ptr long ptr ptr ptr ptr)\r
-@ stub OleCreateLinkFromDataEx\r
-@ stdcall OleCreateLinkToFile(ptr ptr long ptr ptr ptr ptr)\r
-@ stub OleCreateLinkToFileEx\r
-@ stdcall OleCreateMenuDescriptor(long ptr)\r
-@ stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr)\r
-@ stdcall OleDestroyMenuDescriptor(long)\r
-@ stdcall OleDoAutoConvert(ptr ptr)\r
-@ stdcall OleDraw(ptr long long ptr)\r
-@ stdcall OleDuplicateData(long long long)\r
-@ stdcall OleFlushClipboard()\r
-@ stdcall OleGetAutoConvert(ptr ptr)\r
-@ stdcall OleGetClipboard(ptr)\r
-@ stdcall OleGetIconOfClass(ptr ptr long)\r
-@ stub OleGetIconOfFile\r
-@ stdcall OleInitialize(ptr)\r
-@ stdcall OleInitializeWOW(long)\r
-@ stdcall OleIsCurrentClipboard(ptr)\r
-@ stdcall OleIsRunning(ptr)\r
-@ stdcall OleLoad(ptr ptr ptr ptr)\r
-@ stdcall OleLoadFromStream(ptr ptr ptr)\r
-@ stdcall OleLockRunning(ptr long long)\r
-@ stdcall OleMetafilePictFromIconAndLabel(long ptr ptr long)\r
-@ stub OleNoteObjectVisible\r
-@ stdcall OleQueryCreateFromData(ptr)\r
-@ stdcall OleQueryLinkFromData(ptr)\r
-@ stdcall OleRegEnumFormatEtc(ptr long ptr)\r
-@ stdcall OleRegEnumVerbs(long ptr)\r
-@ stdcall OleRegGetMiscStatus(ptr long ptr)\r
-@ stdcall OleRegGetUserType(long long ptr)\r
-@ stdcall OleRun(ptr)\r
-@ stdcall OleSave(ptr ptr long)\r
-@ stdcall OleSaveToStream(ptr ptr)\r
-@ stdcall OleSetAutoConvert(ptr ptr)\r
-@ stdcall OleSetClipboard(ptr)\r
-@ stdcall OleSetContainedObject(ptr long)\r
-@ stdcall OleSetMenuDescriptor(long long long ptr ptr)\r
-@ stdcall OleTranslateAccelerator(ptr ptr ptr)\r
-@ stdcall OleUninitialize()\r
-@ stub OpenOrCreateStream\r
-@ stdcall ProgIDFromCLSID(ptr ptr)\r
-@ stdcall PropStgNameToFmtId(wstr ptr)\r
-@ stdcall PropSysAllocString(wstr)\r
-@ stdcall PropSysFreeString(wstr)\r
-@ stdcall PropVariantClear(ptr)\r
-@ stdcall PropVariantCopy(ptr ptr)\r
-@ stdcall ReadClassStg(ptr ptr)\r
-@ stdcall ReadClassStm(ptr ptr)\r
-@ stdcall ReadFmtUserTypeStg(ptr ptr ptr)\r
-@ stub ReadOleStg\r
-@ stub ReadStringStream\r
-@ stdcall RegisterDragDrop(long ptr)\r
-@ stdcall ReleaseStgMedium(ptr)\r
-@ stdcall RevokeDragDrop(long)\r
-@ stub SNB_UserFree\r
-@ stub SNB_UserMarshal\r
-@ stub SNB_UserSize\r
-@ stub SNB_UserUnmarshal\r
-@ stub STGMEDIUM_UserFree\r
-@ stub STGMEDIUM_UserMarshal\r
-@ stub STGMEDIUM_UserSize\r
-@ stub STGMEDIUM_UserUnmarshal\r
-@ stdcall SetConvertStg(ptr long)\r
-@ stub SetDocumentBitStg\r
-@ stdcall SetErrorInfo(long ptr)\r
-@ stdcall StgCreateDocfile(wstr long long ptr)\r
-@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)\r
-@ stdcall StgCreatePropSetStg(ptr long ptr)\r
-@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)\r
-@ stub StgGetIFillLockBytesOnFile\r
-@ stub StgGetIFillLockBytesOnILockBytes\r
-@ stdcall StgIsStorageFile(wstr)\r
-@ stdcall StgIsStorageILockBytes(ptr)\r
-@ stub StgOpenAsyncDocfileOnIFillLockBytes\r
-@ stdcall StgOpenStorage(wstr ptr long ptr long ptr)\r
-@ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr)\r
-@ stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr)\r
-@ stdcall StgSetTimes(wstr ptr ptr ptr )\r
-@ stdcall StringFromCLSID(ptr ptr)\r
-@ stdcall StringFromGUID2(ptr ptr long)\r
-@ stdcall StringFromIID(ptr ptr) StringFromCLSID\r
-@ stub UpdateDCOMSettings\r
-@ stub UtConvertDvtd16toDvtd32\r
-@ stub UtConvertDvtd32toDvtd16\r
-@ stub UtGetDvtd16Info\r
-@ stub UtGetDvtd32Info\r
-@ stub WdtpInterfacePointer_UserFree\r
-@ stub WdtpInterfacePointer_UserMarshal\r
-@ stub WdtpInterfacePointer_UserSize\r
-@ stub WdtpInterfacePointer_UserUnmarshal\r
-@ stdcall WriteClassStg(ptr ptr)\r
-@ stdcall WriteClassStm(ptr ptr)\r
-@ stdcall WriteFmtUserTypeStg(ptr long ptr)\r
-@ stub WriteOleStg\r
-@ stub WriteStringStream\r
+@ stdcall BindMoniker(ptr long ptr ptr)
+@ stub CLIPFORMAT_UserFree
+@ stub CLIPFORMAT_UserMarshal
+@ stub CLIPFORMAT_UserSize
+@ stub CLIPFORMAT_UserUnmarshal
+@ stdcall CLSIDFromProgID(wstr ptr)
+@ stdcall CLSIDFromString(wstr ptr)
+@ stdcall CoAddRefServerProcess()
+@ stdcall CoBuildVersion()
+@ stdcall CoCopyProxy(ptr ptr)
+@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
+@ stdcall CoCreateGuid(ptr)
+@ stdcall CoCreateInstance(ptr ptr long ptr ptr)
+@ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr)
+@ stdcall CoDisconnectObject(ptr long)
+@ stdcall CoDosDateTimeToFileTime(long long ptr) kernel32.DosDateTimeToFileTime
+@ stdcall CoFileTimeNow(ptr)
+@ stdcall CoFileTimeToDosDateTime(ptr ptr ptr) kernel32.FileTimeToDosDateTime
+@ stdcall CoFreeAllLibraries()
+@ stdcall CoFreeLibrary(long)
+@ stdcall CoFreeUnusedLibraries()
+@ stub CoGetCallContext #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+@ stub CoGetCallerTID
+@ stdcall CoGetClassObject(ptr long ptr ptr ptr)
+@ stub CoGetCurrentLogicalThreadId
+@ stdcall CoGetCurrentProcess()
+@ stub CoGetInstanceFromFile #@ stdcall (ptr ptr ptr long wstr long ptr) return 0,ERR_NOTIMPLEMENTED
+@ stub CoGetInstanceFromIStorage #@ stdcall (ptr ptr ptr long ptr long ptr) return 0,ERR_NOTIMPLEMENTED
+@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr)
+@ stdcall CoGetMalloc(long ptr)
+@ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long)
+@ stub CoGetObject
+@ stdcall CoGetPSClsid(ptr ptr)
+@ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr)
+@ stdcall CoGetState(ptr)
+@ stub CoGetTIDFromIPID
+@ stdcall CoGetTreatAsClass(ptr ptr)
+@ stub CoImpersonateClient
+@ stdcall CoInitialize(ptr)
+@ stdcall CoInitializeEx(ptr long)
+@ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr)
+@ stdcall CoInitializeWOW(long long)
+@ stdcall CoIsHandlerConnected(ptr)
+@ stdcall CoIsOle1Class (ptr)
+@ stdcall CoLoadLibrary(wstr long)
+@ stdcall CoLockObjectExternal(ptr long long)
+@ stdcall CoMarshalHresult(ptr long)
+@ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr)
+@ stdcall CoMarshalInterface(ptr ptr ptr long ptr long)
+@ stub CoQueryAuthenticationServices
+@ stub CoQueryClientBlanket
+@ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr)
+@ stub CoQueryReleaseObject
+@ stub CoRegisterChannelHook
+@ stdcall CoRegisterClassObject(ptr ptr long long ptr)
+@ stdcall CoRegisterMallocSpy (ptr)
+@ stdcall CoRegisterMessageFilter(ptr ptr)
+@ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+@ stub CoRegisterSurrogate
+@ stdcall CoReleaseMarshalData(ptr)
+@ stdcall CoReleaseServerProcess()
+@ stdcall CoResumeClassObjects()
+@ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED
+@ stdcall CoRevokeClassObject(long)
+@ stdcall CoRevokeMallocSpy()
+@ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long)
+@ stdcall CoSetState(ptr)
+@ stdcall CoSuspendClassObjects()
+@ stub CoSwitchCallContext
+@ stdcall CoTaskMemAlloc(long)
+@ stdcall CoTaskMemFree(ptr)
+@ stdcall CoTaskMemRealloc(ptr long)
+@ stdcall CoTreatAsClass(ptr ptr)
+@ stdcall CoUninitialize()
+@ stub CoUnloadingWOW
+@ stdcall CoUnmarshalHresult(ptr ptr)
+@ stdcall CoUnmarshalInterface(ptr ptr ptr)
+@ stdcall CreateAntiMoniker(ptr)
+@ stdcall CreateBindCtx(long ptr)
+@ stdcall CreateClassMoniker(ptr ptr)
+@ stdcall CreateDataAdviseHolder(ptr)
+@ stdcall CreateDataCache(ptr ptr ptr ptr)
+@ stdcall CreateErrorInfo(ptr)
+@ stdcall CreateFileMoniker(wstr ptr)
+@ stdcall CreateGenericComposite(ptr ptr ptr)
+@ stdcall CreateILockBytesOnHGlobal(ptr long ptr)
+@ stdcall CreateItemMoniker(wstr wstr ptr)
+@ stub CreateObjrefMoniker
+@ stdcall CreateOleAdviseHolder(ptr)
+@ stub CreatePointerMoniker #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+@ stdcall CreateStreamOnHGlobal(ptr long ptr)
+@ stdcall DllDebugObjectRPCHook(long ptr)
+@ stdcall -private DllGetClassObject (ptr ptr ptr) OLE32_DllGetClassObject
+@ stub DllGetClassObjectWOW
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
+@ stdcall DoDragDrop(ptr ptr long ptr)
+@ stub EnableHookObject
+@ stdcall FmtIdToPropStgName(ptr wstr)
+@ stdcall FreePropVariantArray(long ptr)
+@ stdcall GetClassFile(wstr ptr)
+@ stdcall GetConvertStg(ptr)
+@ stub GetDocumentBitStg
+@ stdcall GetErrorInfo(long ptr)
+@ stdcall GetHGlobalFromILockBytes(ptr ptr)
+@ stdcall GetHGlobalFromStream(ptr ptr)
+@ stub GetHookInterface
+@ stdcall GetRunningObjectTable(long ptr)
+@ stub HACCEL_UserFree
+@ stub HACCEL_UserMarshal
+@ stub HACCEL_UserSize
+@ stub HACCEL_UserUnmarshal
+@ stub HBITMAP_UserFree
+@ stub HBITMAP_UserMarshal
+@ stub HBITMAP_UserSize
+@ stub HBITMAP_UserUnmarshal
+@ stub HBRUSH_UserFree
+@ stub HBRUSH_UserMarshal
+@ stub HBRUSH_UserSize
+@ stub HBRUSH_UserUnmarshal
+@ stub HENHMETAFILE_UserFree
+@ stub HENHMETAFILE_UserMarshal
+@ stub HENHMETAFILE_UserSize
+@ stub HENHMETAFILE_UserUnmarshal
+@ stub HGLOBAL_UserFree
+@ stub HGLOBAL_UserMarshal
+@ stub HGLOBAL_UserSize
+@ stub HGLOBAL_UserUnmarshal
+@ stub HMENU_UserFree
+@ stub HMENU_UserMarshal
+@ stub HMENU_UserSize
+@ stub HMENU_UserUnmarshal
+@ stub HMETAFILEPICT_UserFree
+@ stub HMETAFILEPICT_UserMarshal
+@ stub HMETAFILEPICT_UserSize
+@ stub HMETAFILEPICT_UserUnmarshal
+@ stub HMETAFILE_UserFree
+@ stub HMETAFILE_UserMarshal
+@ stub HMETAFILE_UserSize
+@ stub HMETAFILE_UserUnmarshal
+@ stub HPALETTE_UserFree
+@ stub HPALETTE_UserMarshal
+@ stub HPALETTE_UserSize
+@ stub HPALETTE_UserUnmarshal
+@ stub HWND_UserFree
+@ stub HWND_UserMarshal
+@ stub HWND_UserSize
+@ stub HWND_UserUnmarshal
+@ stdcall IIDFromString(wstr ptr) CLSIDFromString
+@ stub I_RemoteMain
+@ stdcall IsAccelerator(long long ptr long)
+@ stdcall IsEqualGUID(ptr ptr)
+@ stub IsValidIid
+@ stdcall IsValidInterface(ptr)
+@ stub IsValidPtrIn
+@ stub IsValidPtrOut
+@ stdcall MkParseDisplayName(ptr ptr ptr ptr)
+@ stdcall MonikerCommonPrefixWith(ptr ptr ptr)
+@ stub MonikerRelativePathTo
+@ stdcall OleBuildVersion()
+@ stdcall OleConvertIStorageToOLESTREAM(ptr ptr)
+@ stub OleConvertIStorageToOLESTREAMEx
+@ stdcall OleConvertOLESTREAMToIStorage(ptr ptr ptr)
+@ stub OleConvertOLESTREAMToIStorageEx
+@ stdcall OleCreate(ptr ptr long ptr ptr ptr ptr)
+@ stdcall OleCreateDefaultHandler(ptr ptr ptr ptr)
+@ stub OleCreateEmbeddingHelper
+@ stub OleCreateEx
+@ stdcall OleCreateFromData(ptr ptr long ptr ptr ptr ptr)
+@ stub OleCreateFromDataEx
+@ stdcall OleCreateFromFile(ptr ptr ptr long ptr ptr ptr ptr)
+@ stub OleCreateFromFileEx
+@ stdcall OleCreateLink(ptr ptr long ptr ptr ptr ptr)
+@ stub OleCreateLinkEx
+@ stdcall OleCreateLinkFromData(ptr ptr long ptr ptr ptr ptr)
+@ stub OleCreateLinkFromDataEx
+@ stdcall OleCreateLinkToFile(ptr ptr long ptr ptr ptr ptr)
+@ stub OleCreateLinkToFileEx
+@ stdcall OleCreateMenuDescriptor(long ptr)
+@ stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr)
+@ stdcall OleDestroyMenuDescriptor(long)
+@ stdcall OleDoAutoConvert(ptr ptr)
+@ stdcall OleDraw(ptr long long ptr)
+@ stdcall OleDuplicateData(long long long)
+@ stdcall OleFlushClipboard()
+@ stdcall OleGetAutoConvert(ptr ptr)
+@ stdcall OleGetClipboard(ptr)
+@ stdcall OleGetIconOfClass(ptr ptr long)
+@ stub OleGetIconOfFile
+@ stdcall OleInitialize(ptr)
+@ stdcall OleInitializeWOW(long long)
+@ stdcall OleIsCurrentClipboard(ptr)
+@ stdcall OleIsRunning(ptr)
+@ stdcall OleLoad(ptr ptr ptr ptr)
+@ stdcall OleLoadFromStream(ptr ptr ptr)
+@ stdcall OleLockRunning(ptr long long)
+@ stdcall OleMetafilePictFromIconAndLabel(long ptr ptr long)
+@ stub OleNoteObjectVisible
+@ stdcall OleQueryCreateFromData(ptr)
+@ stdcall OleQueryLinkFromData(ptr)
+@ stdcall OleRegEnumFormatEtc(ptr long ptr)
+@ stdcall OleRegEnumVerbs(long ptr)
+@ stdcall OleRegGetMiscStatus(ptr long ptr)
+@ stdcall OleRegGetUserType(long long ptr)
+@ stdcall OleRun(ptr)
+@ stdcall OleSave(ptr ptr long)
+@ stdcall OleSaveToStream(ptr ptr)
+@ stdcall OleSetAutoConvert(ptr ptr)
+@ stdcall OleSetClipboard(ptr)
+@ stdcall OleSetContainedObject(ptr long)
+@ stdcall OleSetMenuDescriptor(long long long ptr ptr)
+@ stdcall OleTranslateAccelerator(ptr ptr ptr)
+@ stdcall OleUninitialize()
+@ stub OpenOrCreateStream
+@ stdcall ProgIDFromCLSID(ptr ptr)
+@ stdcall PropStgNameToFmtId(wstr ptr)
+@ stdcall PropSysAllocString(wstr)
+@ stdcall PropSysFreeString(wstr)
+@ stdcall PropVariantClear(ptr)
+@ stdcall PropVariantCopy(ptr ptr)
+@ stdcall ReadClassStg(ptr ptr)
+@ stdcall ReadClassStm(ptr ptr)
+@ stdcall ReadFmtUserTypeStg(ptr ptr ptr)
+@ stub ReadOleStg
+@ stub ReadStringStream
+@ stdcall RegisterDragDrop(long ptr)
+@ stdcall ReleaseStgMedium(ptr)
+@ stdcall RevokeDragDrop(long)
+@ stub SNB_UserFree
+@ stub SNB_UserMarshal
+@ stub SNB_UserSize
+@ stub SNB_UserUnmarshal
+@ stub STGMEDIUM_UserFree
+@ stub STGMEDIUM_UserMarshal
+@ stub STGMEDIUM_UserSize
+@ stub STGMEDIUM_UserUnmarshal
+@ stdcall SetConvertStg(ptr long)
+@ stub SetDocumentBitStg
+@ stdcall SetErrorInfo(long ptr)
+@ stdcall StgCreateDocfile(wstr long long ptr)
+@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)
+@ stdcall StgCreatePropSetStg(ptr long ptr)
+@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)
+@ stub StgGetIFillLockBytesOnFile
+@ stub StgGetIFillLockBytesOnILockBytes
+@ stdcall StgIsStorageFile(wstr)
+@ stdcall StgIsStorageILockBytes(ptr)
+@ stub StgOpenAsyncDocfileOnIFillLockBytes
+@ stdcall StgOpenStorage(wstr ptr long ptr long ptr)
+@ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr)
+@ stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr)
+@ stdcall StgSetTimes(wstr ptr ptr ptr )
+@ stdcall StringFromCLSID(ptr ptr)
+@ stdcall StringFromGUID2(ptr ptr long)
+@ stdcall StringFromIID(ptr ptr) StringFromCLSID
+@ stub UpdateDCOMSettings
+@ stub UtConvertDvtd16toDvtd32
+@ stub UtConvertDvtd32toDvtd16
+@ stub UtGetDvtd16Info
+@ stub UtGetDvtd32Info
+@ stub WdtpInterfacePointer_UserFree
+@ stub WdtpInterfacePointer_UserMarshal
+@ stub WdtpInterfacePointer_UserSize
+@ stub WdtpInterfacePointer_UserUnmarshal
+@ stdcall WriteClassStg(ptr ptr)
+@ stdcall WriteClassStm(ptr ptr)
+@ stdcall WriteFmtUserTypeStg(ptr long ptr)
+@ stub WriteOleStg
+@ stub WriteStringStream
{
const IOleAdviseHolderVtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
DWORD maxSinks;
IAdviseSink** arrayOfSinks;
{
const IDataAdviseHolderVtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
DWORD maxCons;
DataAdviseConnection* Connections;
} DataAdviseHolder;
*/
typedef struct _CFStub {
const IRpcStubBufferVtbl *lpvtbl;
- DWORD ref;
+ LONG ref;
LPUNKNOWN pUnkServer;
} CFStub;
ULONG ref;
ref = InterlockedDecrement(&This->ref);
- if (!ref) HeapFree(GetProcessHeap(),0,This);
+ if (!ref) {
+ IRpcStubBuffer_Disconnect(iface);
+ HeapFree(GetProcessHeap(),0,This);
+ }
return ref;
}
CFStub_Disconnect(LPRPCSTUBBUFFER iface) {
CFStub *This = (CFStub *)iface;
- IUnknown_Release(This->pUnkServer);
- This->pUnkServer = NULL;
+ if (This->pUnkServer) {
+ IUnknown_Release(This->pUnkServer);
+ This->pUnkServer = NULL;
+ }
}
+
static HRESULT WINAPI
CFStub_Invoke(
LPRPCSTUBBUFFER iface,RPCOLEMESSAGE* msg,IRpcChannelBuffer* chanbuf
typedef struct _CFProxy {
const IClassFactoryVtbl *lpvtbl_cf;
const IRpcProxyBufferVtbl *lpvtbl_proxy;
- DWORD ref;
+ LONG ref;
IRpcChannelBuffer *chanbuf;
IUnknown *outer_unknown;
typedef struct
{
const IRpcStubBufferVtbl *lpVtbl;
- ULONG refs;
+ LONG refs;
IRemUnknown *iface;
} RemUnkStub;
hr = IRemUnknown_RemQueryInterface(This->iface, &ipid, cRefs, cIids, iids, &pQIResults);
/* out */
- pMsg->cbBuffer = cIids * sizeof(REMQIRESULT);
+ pMsg->cbBuffer = cIids * sizeof(REMQIRESULT) + sizeof(HRESULT);
I_RpcGetBuffer((RPC_MESSAGE *)pMsg);
- if (hr) return hr;
buf = pMsg->Buffer;
+ *(HRESULT *)buf = hr;
+ buf += sizeof(HRESULT);
+
+ if (hr) return hr;
/* FIXME: pQIResults is a unique pointer so pQIResults can be NULL! */
memcpy(buf, pQIResults, cIids * sizeof(REMQIRESULT));
RemUnkStub *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
if (!This) return E_OUTOFMEMORY;
This->lpVtbl = &RemUnkStub_VTable;
- This->refs = 0;
+ This->refs = 1;
This->iface = NULL;
*ppStub = (IRpcStubBuffer*)This;
return S_OK;
typedef struct _RemUnkProxy {
const IRemUnknownVtbl *lpvtbl_remunk;
const IRpcProxyBufferVtbl *lpvtbl_proxy;
- DWORD refs;
+ LONG refs;
IRpcChannelBuffer *chan;
IUnknown *outer_unknown;
hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status);
+ buf = msg.Buffer;
+
+ if (SUCCEEDED(hr)) {
+ hr = *(HRESULT *)buf;
+ buf += sizeof(HRESULT);
+ }
+
if (SUCCEEDED(hr)) {
- buf = msg.Buffer;
*ppQIResults = CoTaskMemAlloc(cIids*sizeof(REMQIRESULT));
memcpy(*ppQIResults, buf, cIids*sizeof(REMQIRESULT));
}
typedef struct
{
const IRpcChannelBufferVtbl *lpVtbl;
- DWORD refs;
+ LONG refs;
} RpcChannelBuffer;
typedef struct
static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus)
{
HRESULT hr = S_OK;
+ RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg;
RPC_STATUS status;
DWORD index;
struct dispatch_params *params;
DWORD tid;
-
+ IRpcStubBuffer *stub;
+ APARTMENT *apt;
+ IPID ipid;
+
TRACE("(%p) iMethod=%ld\n", olemsg, olemsg->iMethod);
params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*params));
params->msg = olemsg;
params->status = RPC_S_OK;
- /* we use a separate thread here because we need to be able to
- * pump the message loop in the application thread: if we do not,
- * any windows created by this thread will hang and RPCs that try
- * and re-enter this STA from an incoming server thread will
- * deadlock. InstallShield is an example of that.
- */
- params->handle = CreateThread(NULL, 0, rpc_sendreceive_thread, params, 0, &tid);
- if (!params->handle)
+ /* Note: this is an optimization in the Microsoft OLE runtime that we need
+ * to copy, as shown by the test_no_couninitialize_client test. without
+ * short-circuiting the RPC runtime in the case below, the test will
+ * deadlock on the loader lock due to the RPC runtime needing to create
+ * a thread to process the RPC when this function is called indirectly
+ * from DllMain */
+
+ RpcBindingInqObject(msg->Handle, &ipid);
+ stub = ipid_to_apt_and_stubbuffer(&ipid, &apt);
+ if (apt && (apt->model & COINIT_APARTMENTTHREADED))
{
- ERR("Could not create RpcSendReceive thread, error %lx\n", GetLastError());
- hr = E_UNEXPECTED;
+ params->stub = stub;
+ params->chan = NULL; /* FIXME: pass server channel */
+ params->handle = CreateEventW(NULL, FALSE, FALSE, NULL);
+
+ TRACE("Calling apartment thread 0x%08lx...\n", apt->tid);
+
+ PostMessageW(apt->win, DM_EXECUTERPC, 0, (LPARAM)params);
+ }
+ else
+ {
+ if (stub) IRpcStubBuffer_Release(stub);
+
+ /* we use a separate thread here because we need to be able to
+ * pump the message loop in the application thread: if we do not,
+ * any windows created by this thread will hang and RPCs that try
+ * and re-enter this STA from an incoming server thread will
+ * deadlock. InstallShield is an example of that.
+ */
+ params->handle = CreateThread(NULL, 0, rpc_sendreceive_thread, params, 0, &tid);
+ if (!params->handle)
+ {
+ ERR("Could not create RpcSendReceive thread, error %lx\n", GetLastError());
+ hr = E_UNEXPECTED;
+ }
}
+ if (apt) apartment_release(apt);
if (hr == S_OK)
hr = CoWaitForMultipleHandles(0, INFINITE, 1, ¶ms->handle, &index);
if (!apt || !stub)
{
if (apt) apartment_release(apt);
- /* ipid_to_apt_and_stubbuffer will already have logged the error */
+ ERR("no apartment found for ipid %s\n", debugstr_guid(&ipid));
return RpcRaiseException(RPC_E_DISCONNECTED);
}
typedef struct tagPropertyStorage_impl
{
const IPropertyStorageVtbl *vtbl;
- DWORD ref;
+ LONG ref;
CRITICAL_SECTION cs;
IStream *stm;
BOOL dirty;
{
/* IUnknown fields */
const IStream16Vtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
/* IStream16 fields */
SEGPTR thisptr; /* pointer to this struct as segmented */
struct storage_pps_entry stde;
/******************************************************************************
* IStream16_QueryInterface [STORAGE.518]
*/
-HRESULT WINAPI IStream16_fnQueryInterface(
+HRESULT IStream16_fnQueryInterface(
IStream16* iface,REFIID refiid,LPVOID *obj
) {
IStream16Impl *This = (IStream16Impl *)iface;
/******************************************************************************
* IStream16_AddRef [STORAGE.519]
*/
-ULONG WINAPI IStream16_fnAddRef(IStream16* iface) {
+ULONG IStream16_fnAddRef(IStream16* iface) {
IStream16Impl *This = (IStream16Impl *)iface;
return InterlockedIncrement(&This->ref);
}
/******************************************************************************
* IStream16_Release [STORAGE.520]
*/
-ULONG WINAPI IStream16_fnRelease(IStream16* iface) {
+ULONG IStream16_fnRelease(IStream16* iface) {
IStream16Impl *This = (IStream16Impl *)iface;
ULONG ref;
FlushFileBuffers(This->hf);
* FIXME
* Does not handle 64 bits
*/
-HRESULT WINAPI IStream16_fnSeek(
+HRESULT IStream16_fnSeek(
IStream16* iface,LARGE_INTEGER offset,DWORD whence,ULARGE_INTEGER *newpos
) {
IStream16Impl *This = (IStream16Impl *)iface;
/******************************************************************************
* IStream16_Read [STORAGE.521]
*/
-HRESULT WINAPI IStream16_fnRead(
+HRESULT IStream16_fnRead(
IStream16* iface,void *pv,ULONG cb,ULONG *pcbRead
) {
IStream16Impl *This = (IStream16Impl *)iface;
/******************************************************************************
* IStream16_Write [STORAGE.522]
*/
-HRESULT WINAPI IStream16_fnWrite(
+HRESULT IStream16_fnWrite(
IStream16* iface,const void *pv,ULONG cb,ULONG *pcbWrite
) {
IStream16Impl *This = (IStream16Impl *)iface;
{
/* IUnknown fields */
const IStreamVtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
/* IStream32 fields */
struct storage_pps_entry stde;
int ppsent;
{
/* IUnknown fields */
const IStorage16Vtbl *lpVtbl;
- DWORD ref;
+ LONG ref;
/* IStorage16 fields */
SEGPTR thisptr; /* pointer to this struct as segmented */
struct storage_pps_entry stde;
/******************************************************************************
* IStorage16_QueryInterface [STORAGE.500]
*/
-HRESULT WINAPI IStorage16_fnQueryInterface(
+HRESULT IStorage16_fnQueryInterface(
IStorage16* iface,REFIID refiid,LPVOID *obj
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_AddRef [STORAGE.501]
*/
-ULONG WINAPI IStorage16_fnAddRef(IStorage16* iface) {
+ULONG IStorage16_fnAddRef(IStorage16* iface) {
IStorage16Impl *This = (IStorage16Impl *)iface;
return InterlockedIncrement(&This->ref);
}
/******************************************************************************
* IStorage16_Release [STORAGE.502]
*/
-ULONG WINAPI IStorage16_fnRelease(IStorage16* iface) {
+ULONG IStorage16_fnRelease(IStorage16* iface) {
IStorage16Impl *This = (IStorage16Impl *)iface;
ULONG ref;
ref = InterlockedDecrement(&This->ref);
/******************************************************************************
* IStorage16_Stat [STORAGE.517]
*/
-HRESULT WINAPI IStorage16_fnStat(
+HRESULT IStorage16_fnStat(
LPSTORAGE16 iface,STATSTG16 *pstatstg, DWORD grfStatFlag
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_Commit [STORAGE.509]
*/
-HRESULT WINAPI IStorage16_fnCommit(
+HRESULT IStorage16_fnCommit(
LPSTORAGE16 iface,DWORD commitflags
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_CopyTo [STORAGE.507]
*/
-HRESULT WINAPI IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiidExclude,SNB16 SNB16Exclude,IStorage16 *pstgDest) {
+HRESULT IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID *rgiidExclude,SNB16 SNB16Exclude,IStorage16 *pstgDest) {
IStorage16Impl *This = (IStorage16Impl *)iface;
FIXME("IStorage16(%p)->(0x%08lx,%s,%p,%p),stub!\n",
This,ciidExclude,debugstr_guid(rgiidExclude),SNB16Exclude,pstgDest
/******************************************************************************
* IStorage16_CreateStorage [STORAGE.505]
*/
-HRESULT WINAPI IStorage16_fnCreateStorage(
+HRESULT IStorage16_fnCreateStorage(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD dwStgFormat,DWORD reserved2, IStorage16 **ppstg
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_CreateStream [STORAGE.503]
*/
-HRESULT WINAPI IStorage16_fnCreateStream(
+HRESULT IStorage16_fnCreateStream(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved1,DWORD reserved2, IStream16 **ppstm
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_OpenStorage [STORAGE.506]
*/
-HRESULT WINAPI IStorage16_fnOpenStorage(
+HRESULT IStorage16_fnOpenStorage(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName, IStorage16 *pstgPrio, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16 **ppstg
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
/******************************************************************************
* IStorage16_OpenStream [STORAGE.504]
*/
-HRESULT WINAPI IStorage16_fnOpenStream(
+HRESULT IStorage16_fnOpenStream(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream16 **ppstm
) {
IStorage16Impl *This = (IStorage16Impl *)iface;
-# Compound Storage DLL.\r
-# (FIXME: some methods are commented out. Commenting them in _WILL_\r
-# result in dataloss. Do it at your own risk.)\r
-\r
-1 pascal StgCreateDocFileA(str long long ptr) StgCreateDocFile16\r
-2 stub StgCreateDocFileOnILockBytes\r
-# 2 pascal StgCreateDocFileOnILockBytes(ptr long long ptr) StgCreateDocFileOnILockBytes16\r
-3 pascal StgOpenStorage(str ptr long ptr long ptr) StgOpenStorage16\r
-4 pascal StgOpenStorageOnILockBytes(ptr ptr long long long ptr) StgOpenStorageOnILockBytes16\r
-5 pascal StgIsStorageFile(str) StgIsStorageFile16\r
-6 pascal StgIsStorageILockBytes(segptr) StgIsStorageILockBytes16\r
-7 stub StgSetTimes\r
-#8 WEP\r
-#9 ___EXPORTEDSTUB\r
-103 stub DllGetClassObject\r
-\r
-# Storage Interface functions. Starting at 500\r
-# these are not exported in the real storage.dll, we use them\r
-# as 16->32 relays. They use the cdecl calling convention.\r
-\r
-# IStorage\r
-500 cdecl IStorage16_QueryInterface(ptr ptr ptr) IStorage16_fnQueryInterface\r
-501 cdecl IStorage16_AddRef(ptr) IStorage16_fnAddRef\r
-502 cdecl IStorage16_Release(ptr) IStorage16_fnRelease\r
-#503 cdecl IStorage16_CreateStream(ptr str long long long ptr) IStorage16_fnCreateStream\r
-503 stub IStorage16_CreateStream\r
-\r
-504 cdecl IStorage16_OpenStream(ptr str ptr long long ptr) IStorage16_fnOpenStream\r
-#505 cdecl IStorage16_CreateStorage(ptr str long long long ptr) IStorage16_fnCreateStorage\r
-505 stub IStorage16_CreateStorage\r
-506 cdecl IStorage16_OpenStorage(ptr str ptr long ptr long ptr) IStorage16_fnOpenStorage\r
-507 cdecl IStorage16_CopyTo(ptr long ptr ptr ptr) IStorage16_fnCopyTo\r
-508 stub IStorage16_MoveElementTo\r
-509 cdecl IStorage16_Commit(ptr long) IStorage16_fnCommit\r
-510 stub IStorage16_Revert\r
-511 stub IStorage16_EnumElements\r
-512 stub IStorage16_DestroyElement\r
-513 stub IStorage16_RenameElement\r
-514 stub IStorage16_SetElementTimes\r
-515 stub IStorage16_SetClass\r
-516 stub IStorage16_SetStateBits\r
-517 cdecl IStorage16_Stat(ptr ptr long) IStorage16_fnStat\r
-\r
-# IStream\r
-518 cdecl IStream16_QueryInterface(ptr ptr ptr) IStream16_fnQueryInterface\r
-519 cdecl IStream16_AddRef(ptr) IStream16_fnAddRef\r
-520 cdecl IStream16_Release(ptr) IStream16_fnRelease\r
-521 cdecl IStream16_Read(ptr ptr long ptr) IStream16_fnRead\r
-#522 cdecl IStream16_Write(ptr ptr long ptr) IStream16_fnWrite\r
-522 stub IStream16_Write\r
-523 cdecl IStream16_Seek(ptr long long long ptr) IStream16_fnSeek\r
-524 stub IStream16_SetSize\r
-525 stub IStream16_CopyTo\r
-526 stub IStream16_Commit\r
-527 stub IStream16_Revert\r
-528 stub IStream16_LockRegion\r
-529 stub IStream16_UnlockRegion\r
-530 stub IStream16_Stat\r
-531 stub IStream16_Clone\r
+# Compound Storage DLL.
+# (FIXME: some methods are commented out. Commenting them in _WILL_
+# result in dataloss. Do it at your own risk.)
+
+1 pascal StgCreateDocFileA(str long long ptr) StgCreateDocFile16
+2 stub StgCreateDocFileOnILockBytes
+# 2 pascal StgCreateDocFileOnILockBytes(ptr long long ptr) StgCreateDocFileOnILockBytes16
+3 pascal StgOpenStorage(str ptr long ptr long ptr) StgOpenStorage16
+4 pascal StgOpenStorageOnILockBytes(ptr ptr long long long ptr) StgOpenStorageOnILockBytes16
+5 pascal StgIsStorageFile(str) StgIsStorageFile16
+6 pascal StgIsStorageILockBytes(segptr) StgIsStorageILockBytes16
+7 stub StgSetTimes
+#8 WEP
+#9 ___EXPORTEDSTUB
+103 stub DllGetClassObject
+
+# Storage Interface functions. Starting at 500
+# these are not exported in the real storage.dll, we use them
+# as 16->32 relays. They use the cdecl calling convention.
+
+# IStorage
+500 cdecl IStorage16_QueryInterface(ptr ptr ptr) IStorage16_fnQueryInterface
+501 cdecl IStorage16_AddRef(ptr) IStorage16_fnAddRef
+502 cdecl IStorage16_Release(ptr) IStorage16_fnRelease
+#503 cdecl IStorage16_CreateStream(ptr str long long long ptr) IStorage16_fnCreateStream
+503 stub IStorage16_CreateStream
+
+504 cdecl IStorage16_OpenStream(ptr str ptr long long ptr) IStorage16_fnOpenStream
+#505 cdecl IStorage16_CreateStorage(ptr str long long long ptr) IStorage16_fnCreateStorage
+505 stub IStorage16_CreateStorage
+506 cdecl IStorage16_OpenStorage(ptr str ptr long ptr long ptr) IStorage16_fnOpenStorage
+507 cdecl IStorage16_CopyTo(ptr long ptr ptr ptr) IStorage16_fnCopyTo
+508 stub IStorage16_MoveElementTo
+509 cdecl IStorage16_Commit(ptr long) IStorage16_fnCommit
+510 stub IStorage16_Revert
+511 stub IStorage16_EnumElements
+512 stub IStorage16_DestroyElement
+513 stub IStorage16_RenameElement
+514 stub IStorage16_SetElementTimes
+515 stub IStorage16_SetClass
+516 stub IStorage16_SetStateBits
+517 cdecl IStorage16_Stat(ptr ptr long) IStorage16_fnStat
+
+# IStream
+518 cdecl IStream16_QueryInterface(ptr ptr ptr) IStream16_fnQueryInterface
+519 cdecl IStream16_AddRef(ptr) IStream16_fnAddRef
+520 cdecl IStream16_Release(ptr) IStream16_fnRelease
+521 cdecl IStream16_Read(ptr ptr long ptr) IStream16_fnRead
+#522 cdecl IStream16_Write(ptr ptr long ptr) IStream16_fnWrite
+522 stub IStream16_Write
+523 cdecl IStream16_Seek(ptr long long long ptr) IStream16_fnSeek
+524 stub IStream16_SetSize
+525 stub IStream16_CopyTo
+526 stub IStream16_Commit
+527 stub IStream16_Revert
+528 stub IStream16_LockRegion
+529 stub IStream16_UnlockRegion
+530 stub IStream16_Stat
+531 stub IStream16_Clone
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * NOTES
+ * The compound file implementation of IStorage used for create
+ * and manage substorages and streams within a storage object
+ * residing in a compound file object.
+ *
+ * MSDN
+ * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/istorage_compound_file_implementation.asp
*/
#include <assert.h>
/*************************************************************************
* Commit (IStorage)
+ *
+ * Ensures that any changes made to a storage object open in transacted mode
+ * are reflected in the parent storage
+ *
+ * NOTES
+ * Wine doesn't implement transacted mode, which seems to be a basic
+ * optimization, so we can ignore this stub for now.
*/
HRESULT WINAPI StorageImpl_Commit(
IStorage* iface,
/*************************************************************************
* Revert (IStorage)
+ *
+ * Discard all changes that have been made since the last commit operation
*/
HRESULT WINAPI StorageImpl_Revert(
IStorage* iface)
*
* Memory allocated for pData must be freed by the caller
*/
-HRESULT OLECONVERT_LoadOLE10(LPOLESTREAM pOleStream, OLECONVERT_OLESTREAM_DATA *pData, BOOL bStrem1)
+static HRESULT OLECONVERT_LoadOLE10(LPOLESTREAM pOleStream, OLECONVERT_OLESTREAM_DATA *pData, BOOL bStrem1)
{
DWORD dwSize;
HRESULT hRes = S_OK;
* This function is used by OleConvertIStorageToOLESTREAM only.
*
*/
-HRESULT OLECONVERT_SaveOLE10(OLECONVERT_OLESTREAM_DATA *pData, LPOLESTREAM pOleStream)
+static HRESULT OLECONVERT_SaveOLE10(OLECONVERT_OLESTREAM_DATA *pData, LPOLESTREAM pOleStream)
{
DWORD dwSize;
HRESULT hRes = S_OK;
*
*
*/
-void OLECONVERT_GetOLE20FromOLE10(LPSTORAGE pDestStorage, BYTE *pBuffer, DWORD nBufferLength)
+static void OLECONVERT_GetOLE20FromOLE10(LPSTORAGE pDestStorage, BYTE *pBuffer, DWORD nBufferLength)
{
HRESULT hRes;
HANDLE hFile;
* Used by OleConvertIStorageToOLESTREAM only.
*
*/
-DWORD OLECONVERT_WriteOLE20ToBuffer(LPSTORAGE pStorage, BYTE **pData)
+static DWORD OLECONVERT_WriteOLE20ToBuffer(LPSTORAGE pStorage, BYTE **pData)
{
HANDLE hFile;
HRESULT hRes;
* This function is used by OleConvertOLESTREAMToIStorage only.
*
*/
-void OLECONVERT_CreateOlePresStream(LPSTORAGE pStorage, DWORD dwExtentX, DWORD dwExtentY , BYTE *pData, DWORD dwDataLength)
+static void OLECONVERT_CreateOlePresStream(LPSTORAGE pStorage, DWORD dwExtentX, DWORD dwExtentY , BYTE *pData, DWORD dwDataLength)
{
HRESULT hRes;
IStream *pStream;
* Might need to verify the data and return appropriate error message
*
*/
-void OLECONVERT_CreateOle10NativeStream(LPSTORAGE pStorage, BYTE *pData, DWORD dwDataLength)
+static void OLECONVERT_CreateOle10NativeStream(LPSTORAGE pStorage, BYTE *pData, DWORD dwDataLength)
{
HRESULT hRes;
IStream *pStream;
*
*
*/
-HRESULT OLECONVERT_GetOLE10ProgID(LPSTORAGE pStorage, char *strProgID, DWORD *dwSize)
+static HRESULT OLECONVERT_GetOLE10ProgID(LPSTORAGE pStorage, char *strProgID, DWORD *dwSize)
{
HRESULT hRes;
IStream *pStream;
*
*
*/
-void OLECONVERT_GetOle10PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData)
+static void OLECONVERT_GetOle10PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData)
{
HRESULT hRes;
*
* Memory allocated for pData must be freed by the caller
*/
-void OLECONVERT_GetOle20PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData)
+static void OLECONVERT_GetOle20PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData)
{
HRESULT hRes;
IStream *pStream;
/*
* Reference count of this object
*/
- ULONG ref;
+ LONG ref;
/*
* Ancestor storage (top level)
const IEnumSTATSTGVtbl *lpVtbl; /* Needs to be the first item in the struct
* since we want to cast this in an IEnumSTATSTG pointer */
- ULONG ref; /* Reference count */
+ LONG ref; /* Reference count */
StorageImpl* parentStorage; /* Reference to the parent storage */
ULONG firstPropertyNode; /* Index of the root of the storage to enumerate */
/*
* Reference count
*/
- ULONG ref;
+ LONG ref;
/*
* Storage that is the parent(owner) of the stream
return sm;
}
-/* m->apt->cs must be held on entry to this function */
+/* caller must remove stub manager from apartment prior to calling this function */
static void stub_manager_delete(struct stub_manager *m)
{
struct list *cursor;
TRACE("destroying %p (oid=%s)\n", m, wine_dbgstr_longlong(m->oid));
- list_remove(&m->entry);
-
/* release every ifstub */
while ((cursor = list_head(&m->ifstubs)))
{
TRACE("after %ld\n", refs);
+ /* remove from apartment so no other thread can access it... */
if (!refs)
- stub_manager_delete(This);
+ list_remove(&This->entry);
+
LeaveCriticalSection(&apt->cs);
+ /* ... so now we can delete it without being inside the apartment critsec */
+ if (!refs)
+ stub_manager_delete(This);
+
return refs;
}
*stub_apt = apartment_findfromtid(ipid->Data2);
if (!*stub_apt)
{
- ERR("Couldn't find apartment corresponding to TID 0x%04x\n", ipid->Data2);
+ TRACE("Couldn't find apartment corresponding to TID 0x%04x\n", ipid->Data2);
return RPC_E_INVALID_OBJECT;
}
*stubmgr_ret = get_stub_manager_from_ipid(*stub_apt, ipid);
stub->stubbuffer = sb;
if (sb) IRpcStubBuffer_AddRef(sb);
- /* no need to ref this, same object as sb */
+ IUnknown_AddRef(iptr);
stub->iface = iptr;
stub->iid = *iid;
default:
WARN("object OID %s already unmarshaled\n",
wine_dbgstr_longlong(m->oid));
- ret = FALSE;
+ ret = TRUE; /* FIXME: the state management should be per-ifstub, so
+ * it is disabled at the moment so that InstallShield
+ * works again */
break;
}
break;
}
- stub_manager_ext_release(m, refs);
-
LeaveCriticalSection(&m->lock);
+
+ stub_manager_ext_release(m, refs);
}
/* is an ifstub table marshaled? */
typedef struct rem_unknown
{
const IRemUnknownVtbl *lpVtbl;
- ULONG refs;
+ LONG refs;
} RemUnknown;
static const IRemUnknownVtbl RemUnknown_Vtbl;