Sync to Wine-20050725:

Robert Shearman <rob@codeweavers.com>
- Marshal return value from IRemUnknown_RemQueryInterface.
- We should be starting with 1 reference.
- IRpcStubBuffer_Disconnect can be called more than once.
- Silence now noisy error messages caused by changes in the way we call
  ipid_to_stubmanager. Move the error message to the one place it is
  needed.
- By-pass the RPC runtime if possible when calling an STA by posting a
  message directly to the apartment window for it to process. Fixes a
  deadlock in InstallShield caused by having to create a thread when
  freeing an object that comes from an STA apartment. Added tests that
  fail without this fix.
- Hack around broken state management so InstallShield works.
- Delete the stub manager outside of the apartment critical section
  because the deletion may require the object to re-enter the
  apartment.
- Always query for the correct stub interface, otherwise we will be
  pointing to the completely wrong object when a proxy does a
  queryinterface.
- Remove assumption that the stub buffer will handle the lifetime of
  the object.
Alex Villacis Lasso <a_villacis@palosanto.com>
- Initialize RegisteredClass properly in CoRegisterClassObject to
  prevent crash in CoRevokeClassObject when accessing (uninitialized)
  pMarshalledData.
Mike McCormack <mike@codeweavers.com>
- Fix gcc 4.0 -Wpointer-sign warnings.
Vitaly Lipatov <lav@etersoft.ru>
- Added some documentation.
Stefan Huehner <stefan@huehner.org>
- Fix some missing-declarations warnings.
Marcus Meissner <meissner@suse.de>
- 16bit interfaces are cdecl, so drop the WINAPI.
- 16bit COM interfaces are cdecl, not WINAPI.
- OleInitializeWOW gets 2 arguments.
- Added OleSetMenuDescriptor16 stub.
Marcus Meissner <marcus@jet.franken.de>
- Implemented IsValidInterface16, CoMemAlloc.
  Added debug to HGLOBALLockBytes16_QueryInterface.

svn path=/trunk/; revision=17332
This commit is contained in:
Gé van Geldorp 2005-08-12 17:19:46 +00:00
parent 5b9aceccd3
commit 7835b350bb
38 changed files with 1139 additions and 1034 deletions

View file

@ -49,7 +49,7 @@ typedef struct AntiMonikerImpl{
*/ */
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/ const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/
ULONG ref; /* reference counter for this object */ LONG ref; /* reference counter for this object */
} AntiMonikerImpl; } AntiMonikerImpl;

View file

@ -52,7 +52,7 @@ typedef struct BindCtxImpl{
const IBindCtxVtbl *lpVtbl; /* VTable relative to the IBindCtx interface.*/ 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*/ BindCtxObject* bindCtxTable; /* this is a table in which all bounded objects are stored*/
DWORD bindCtxTableLastIndex; /* first free index in the table */ DWORD bindCtxTableLastIndex; /* first free index in the table */

View file

@ -122,7 +122,7 @@ struct OLEClipbrd
/* /*
* Reference count of this object * Reference count of this object
*/ */
ULONG ref; LONG ref;
}; };
typedef struct OLEClipbrd OLEClipbrd; typedef struct OLEClipbrd OLEClipbrd;
@ -145,7 +145,7 @@ typedef struct
/* /*
* Reference count of this object * Reference count of this object
*/ */
DWORD ref; LONG ref;
/* /*
* IUnknown implementation of the parent data object. * IUnknown implementation of the parent data object.

View file

@ -1403,6 +1403,8 @@ HRESULT WINAPI CoRegisterClassObject(
newClass->classIdentifier = *rclsid; newClass->classIdentifier = *rclsid;
newClass->runContext = dwClsContext; newClass->runContext = dwClsContext;
newClass->connectFlags = flags; newClass->connectFlags = flags;
newClass->pMarshaledData = NULL;
/* /*
* Use the address of the chain node as the cookie since we are sure it's * Use the address of the chain node as the cookie since we are sure it's
* unique. FIXME: not on 64-bit platforms. * unique. FIXME: not on 64-bit platforms.

View file

@ -1,218 +1,218 @@
1 pascal CoBuildVersion() CoBuildVersion 1 pascal CoBuildVersion() CoBuildVersion
2 pascal CoInitialize(long) CoInitialize16 2 pascal CoInitialize(long) CoInitialize16
3 pascal CoUninitialize() CoUninitialize16 3 pascal CoUninitialize() CoUninitialize16
4 pascal CoGetMalloc(long ptr) CoGetMalloc16 4 pascal CoGetMalloc(long ptr) CoGetMalloc16
5 pascal CoRegisterClassObject(ptr ptr long long ptr) CoRegisterClassObject16 5 pascal CoRegisterClassObject(ptr ptr long long ptr) CoRegisterClassObject16
6 pascal CoRevokeClassObject(long) CoRevokeClassObject16 6 pascal CoRevokeClassObject(long) CoRevokeClassObject16
7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject 7 pascal CoGetClassObject(ptr long ptr ptr ptr) CoGetClassObject
8 stub COMARSHALINTERFACE 8 stub COMARSHALINTERFACE
9 stub COUNMARSHALINTERFACE 9 stub COUNMARSHALINTERFACE
10 stub COLOADLIBRARY 10 stub COLOADLIBRARY
11 stub COFREELIBRARY 11 stub COFREELIBRARY
12 stub COFREEALLLIBRARIES 12 stub COFREEALLLIBRARIES
13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance 13 pascal CoCreateInstance(ptr ptr long ptr ptr) CoCreateInstance
14 stub STRINGFROMIID 14 stub STRINGFROMIID
15 pascal CoDisconnectObject(ptr long) CoDisconnectObject 15 pascal CoDisconnectObject(ptr long) CoDisconnectObject
16 stub CORELEASEMARSHALDATA 16 stub CORELEASEMARSHALDATA
17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries 17 pascal -ret16 CoFreeUnusedLibraries() CoFreeUnusedLibraries
18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID16 18 pascal -ret16 IsEqualGUID(ptr ptr) IsEqualGUID16
19 pascal StringFromCLSID(ptr ptr) StringFromCLSID16 19 pascal StringFromCLSID(ptr ptr) StringFromCLSID16
20 pascal CLSIDFromString(str ptr) CLSIDFromString16 20 pascal CLSIDFromString(str ptr) CLSIDFromString16
21 stub ISVALIDPTRIN 21 stub ISVALIDPTRIN
22 stub ISVALIDPTROUT 22 stub ISVALIDPTROUT
23 stub ISVALIDINTERFACE 23 pascal IsValidInterface(segptr) IsValidInterface16
24 stub ISVALIDIID 24 stub ISVALIDIID
25 stub RESULTFROMSCODE 25 stub RESULTFROMSCODE
26 stub GETSCODE 26 stub GETSCODE
27 pascal CoRegisterMessageFilter(ptr ptr) CoRegisterMessageFilter16 27 pascal CoRegisterMessageFilter(ptr ptr) CoRegisterMessageFilter16
28 stub COISHANDLERCONNECTED 28 stub COISHANDLERCONNECTED
29 stub SHRADDREF 29 stub SHRADDREF
30 pascal -ret16 CoFileTimeToDosDateTime(ptr ptr ptr) CoFileTimeToDosDateTime16 30 pascal -ret16 CoFileTimeToDosDateTime(ptr ptr ptr) CoFileTimeToDosDateTime16
31 pascal -ret16 CoDosDateTimeToFileTime(word word ptr) CoDosDateTimeToFileTime16 31 pascal -ret16 CoDosDateTimeToFileTime(word word ptr) CoDosDateTimeToFileTime16
32 stub COMARSHALHRESULT 32 stub COMARSHALHRESULT
33 stub COUNMARSHALHRESULT 33 stub COUNMARSHALHRESULT
34 pascal CoGetCurrentProcess() CoGetCurrentProcess 34 pascal CoGetCurrentProcess() CoGetCurrentProcess
35 stub SHRCREATE 35 stub SHRCREATE
36 stub COISOLE1CLASS 36 stub COISOLE1CLASS
37 stub _GUID_NULL 37 stub _GUID_NULL
38 stub _IID_IUNKNOWN 38 stub _IID_IUNKNOWN
39 stub _IID_ICLASSFACTORY 39 stub _IID_ICLASSFACTORY
40 stub _IID_IMALLOC 40 stub _IID_IMALLOC
41 stub _IID_IMARSHAL 41 stub _IID_IMARSHAL
42 stub _IID_IRPCCHANNEL 42 stub _IID_IRPCCHANNEL
43 stub _IID_IRPCSTUB 43 stub _IID_IRPCSTUB
44 stub _IID_ISTUBMANAGER 44 stub _IID_ISTUBMANAGER
45 stub _IID_IRPCPROXY 45 stub _IID_IRPCPROXY
46 stub _IID_IPROXYMANAGER 46 stub _IID_IPROXYMANAGER
47 stub _IID_IPSFACTORY 47 stub _IID_IPSFACTORY
48 stub _IID_ILOCKBYTES 48 stub _IID_ILOCKBYTES
49 stub _IID_ISTORAGE 49 stub _IID_ISTORAGE
50 stub _IID_ISTREAM 50 stub _IID_ISTREAM
51 stub _IID_IENUMSTATSTG 51 stub _IID_IENUMSTATSTG
52 stub _IID_IBINDCTX 52 stub _IID_IBINDCTX
53 stub _IID_IMONIKER 53 stub _IID_IMONIKER
54 stub _IID_IRUNNINGOBJECTTABLE 54 stub _IID_IRUNNINGOBJECTTABLE
55 stub _IID_IINTERNALMONIKER 55 stub _IID_IINTERNALMONIKER
56 stub _IID_IROOTSTORAGE 56 stub _IID_IROOTSTORAGE
57 stub _IID_IDFRESERVED1 57 stub _IID_IDFRESERVED1
58 stub _IID_IDFRESERVED2 58 stub _IID_IDFRESERVED2
59 stub _IID_IDFRESERVED3 59 stub _IID_IDFRESERVED3
60 stub _IID_IMESSAGEFILTER 60 stub _IID_IMESSAGEFILTER
61 pascal CLSIDFromProgID(str ptr) CLSIDFromProgID16 61 pascal CLSIDFromProgID(str ptr) CLSIDFromProgID16
62 pascal ProgIDFromCLSID(ptr ptr) ProgIDFromCLSID16 62 pascal ProgIDFromCLSID(ptr ptr) ProgIDFromCLSID16
63 pascal CoLockObjectExternal(segptr word word) CoLockObjectExternal16 63 pascal CoLockObjectExternal(segptr word word) CoLockObjectExternal16
64 stub _CLSID_STDMARSHAL 64 stub _CLSID_STDMARSHAL
65 stub COGETTREATASCLASS 65 stub COGETTREATASCLASS
66 stub COTREATASCLASS 66 stub COTREATASCLASS
67 stub COGETSTANDARDMARSHAL 67 stub COGETSTANDARDMARSHAL
68 stub PROPAGATERESULT 68 stub PROPAGATERESULT
69 stub IIDFROMSTRING 69 stub IIDFROMSTRING
70 stub _IID_ISTDMARSHALINFO 70 stub _IID_ISTDMARSHALINFO
71 pascal CoCreateStandardMalloc(long ptr) CoCreateStandardMalloc16 71 pascal CoCreateStandardMalloc(long ptr) CoCreateStandardMalloc16
72 stub _IID_IEXTERNALCONNECTION 72 stub _IID_IEXTERNALCONNECTION
73 stub COCREATEGUID 73 stub COCREATEGUID
75 stub FNASSERT 75 stub FNASSERT
76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2 76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2
77 stub COGETCLASSEXT 77 stub COGETCLASSEXT
78 stub OLE1CLASSFROMCLSID2 78 stub OLE1CLASSFROMCLSID2
79 stub CLSIDFROMOLE1CLASS 79 stub CLSIDFROMOLE1CLASS
80 stub COOPENCLASSKEY 80 stub COOPENCLASSKEY
81 stub GUIDFROMSTRING 81 stub GUIDFROMSTRING
82 pascal CoFileTimeNow(ptr) CoFileTimeNow 82 pascal CoFileTimeNow(ptr) CoFileTimeNow
83 stub REMALLOCOID 83 stub REMALLOCOID
84 stub REMFREEOID 84 stub REMFREEOID
85 stub REMCREATEREMOTEHANDLER 85 stub REMCREATEREMOTEHANDLER
86 stub REMCONNECTTOOBJECT 86 stub REMCONNECTTOOBJECT
87 stub REMGETINFOFORCID 87 stub REMGETINFOFORCID
88 stub LRPCCALL 88 stub LRPCCALL
89 stub LRPCDISPATCH 89 stub LRPCDISPATCH
90 stub LRPCREGISTERMONITOR 90 stub LRPCREGISTERMONITOR
91 stub LRPCREVOKEMONITOR 91 stub LRPCREVOKEMONITOR
92 stub LRPCGETTHREADWINDOW 92 stub LRPCGETTHREADWINDOW
93 stub TIMERCALLBACKPROC 93 stub TIMERCALLBACKPROC
94 pascal LookupETask(ptr ptr) LookupETask16 94 pascal LookupETask(ptr ptr) LookupETask16
95 pascal -ret16 SetETask(word ptr) SetETask16 95 pascal -ret16 SetETask(word ptr) SetETask16
96 stub LRPCFREEMONITORDATA 96 stub LRPCFREEMONITORDATA
97 stub REMLOOKUPSHUNK 97 stub REMLOOKUPSHUNK
98 stub SHRGETSIZE 98 stub SHRGETSIZE
99 stub CALLTHKMGRUNINITIALIZE 99 stub CALLTHKMGRUNINITIALIZE
100 stub ??0CARRAYFVALUE@@REC@KI@Z 100 stub ??0CARRAYFVALUE@@REC@KI@Z
101 stub ??1CARRAYFVALUE@@REC@XZ 101 stub ??1CARRAYFVALUE@@REC@XZ
102 stub ?ASSERTVALID@CARRAYFVALUE@@RFCXXZ 102 stub ?ASSERTVALID@CARRAYFVALUE@@RFCXXZ
103 stub ?FREEEXTRA@CARRAYFVALUE@@RECXXZ 103 stub ?FREEEXTRA@CARRAYFVALUE@@RECXXZ
104 stub ?_GETAT@CARRAYFVALUE@@RFCPEXH@Z 104 stub ?_GETAT@CARRAYFVALUE@@RFCPEXH@Z
105 stub ?GETSIZE@CARRAYFVALUE@@RFCHXZ 105 stub ?GETSIZE@CARRAYFVALUE@@RFCHXZ
106 stub ?REMOVEALL@CARRAYFVALUE@@RECXXZ 106 stub ?REMOVEALL@CARRAYFVALUE@@RECXXZ
107 stub SHRDESTROY 107 stub SHRDESTROY
108 stub ?INDEXOF@CARRAYFVALUE@@RECHPEXII@Z 108 stub ?INDEXOF@CARRAYFVALUE@@RECHPEXII@Z
109 stub ?INSERTAT@CARRAYFVALUE@@RECHHPEXH@Z 109 stub ?INSERTAT@CARRAYFVALUE@@RECHHPEXH@Z
110 stub COSETSTATE 110 stub COSETSTATE
111 stub ?REMOVEAT@CARRAYFVALUE@@RECXHH@Z 111 stub ?REMOVEAT@CARRAYFVALUE@@RECXHH@Z
112 stub ?SETAT@CARRAYFVALUE@@RECXHPEX@Z 112 stub ?SETAT@CARRAYFVALUE@@RECXHPEX@Z
113 stub ?SETATGROW@CARRAYFVALUE@@RECHHPEX@Z 113 stub ?SETATGROW@CARRAYFVALUE@@RECHHPEX@Z
114 stub ?SETSIZE@CARRAYFVALUE@@RECHHH@Z 114 stub ?SETSIZE@CARRAYFVALUE@@RECHHH@Z
115 pascal CoGetState(ptr) CoGetState16 115 pascal CoGetState(ptr) CoGetState16
116 pascal DllEntryPoint(long word word word long word) COMPOBJ_DllEntryPoint 116 pascal DllEntryPoint(long word word word long word) COMPOBJ_DllEntryPoint
117 stub ?RELEASE@CSTDMALLOC@@VEAKXZ 117 stub ?RELEASE@CSTDMALLOC@@VEAKXZ
118 stub ?ALLOC@CSTDMALLOC@@VEAPEXK@Z 118 stub ?ALLOC@CSTDMALLOC@@VEAPEXK@Z
119 stub SHRRELEASE 119 stub SHRRELEASE
120 stub ?GETASSOCAT@CMAPKEYTOVALUE@@BFCPEUCASSOC@1@PEXIAEI@Z 120 stub ?GETASSOCAT@CMAPKEYTOVALUE@@BFCPEUCASSOC@1@PEXIAEI@Z
121 stub ?SETASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z 121 stub ?SETASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z
122 stub ??1CMAPKEYTOVALUE@@REC@XZ 122 stub ??1CMAPKEYTOVALUE@@REC@XZ
123 stub ?GETASSOCKEYPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEXPEI@Z 123 stub ?GETASSOCKEYPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEXPEI@Z
124 stub ?NEWASSOC@CMAPKEYTOVALUE@@BECPEUCASSOC@1@IPEXI0@Z 124 stub ?NEWASSOC@CMAPKEYTOVALUE@@BECPEUCASSOC@1@IPEXI0@Z
125 stub ?SIZEASSOC@CMAPKEYTOVALUE@@BFCIXZ 125 stub ?SIZEASSOC@CMAPKEYTOVALUE@@BFCIXZ
126 stub ?FREEASSOC@CMAPKEYTOVALUE@@BECXPEUCASSOC@1@@Z 126 stub ?FREEASSOC@CMAPKEYTOVALUE@@BECXPEUCASSOC@1@@Z
127 stub ?GETSTARTPOSITION@CMAPKEYTOVALUE@@RFCPEXXZ 127 stub ?GETSTARTPOSITION@CMAPKEYTOVALUE@@RFCPEXXZ
128 stub ?GETNEXTASSOC@CMAPKEYTOVALUE@@RFCXPEPEXPEXPEI1@Z 128 stub ?GETNEXTASSOC@CMAPKEYTOVALUE@@RFCXPEPEXPEXPEI1@Z
129 stub ?COMPAREASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z 129 stub ?COMPAREASSOCKEY@CMAPKEYTOVALUE@@BFCHPEUCASSOC@1@PEXI@Z
130 stub ?REMOVEHKEY@CMAPKEYTOVALUE@@RECHK@Z 130 stub ?REMOVEHKEY@CMAPKEYTOVALUE@@RECHK@Z
131 stub ?GETHKEY@CMAPKEYTOVALUE@@RFCKPEXI@Z 131 stub ?GETHKEY@CMAPKEYTOVALUE@@RFCKPEXI@Z
132 stub ?GETCOUNT@CMAPKEYTOVALUE@@RFCHXZ 132 stub ?GETCOUNT@CMAPKEYTOVALUE@@RFCHXZ
133 stub ?LOOKUP@CMAPKEYTOVALUE@@RFCHPEXI0@Z 133 stub ?LOOKUP@CMAPKEYTOVALUE@@RFCHPEXI0@Z
134 stub ?GETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z 134 stub ?GETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z
135 stub ?REMOVEKEY@CMAPKEYTOVALUE@@RECHPEXI@Z 135 stub ?REMOVEKEY@CMAPKEYTOVALUE@@RECHPEXI@Z
136 stub ?REMOVEALL@CMAPKEYTOVALUE@@RECXXZ 136 stub ?REMOVEALL@CMAPKEYTOVALUE@@RECXXZ
137 stub SHRALLOC 137 stub SHRALLOC
138 stub ?FREEASSOCKEY@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@@Z 138 stub ?FREEASSOCKEY@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@@Z
139 stub ?SETAT@CMAPKEYTOVALUE@@RECHPEXI0@Z 139 stub ?SETAT@CMAPKEYTOVALUE@@RECHPEXI0@Z
140 stub ?LOOKUPHKEY@CMAPKEYTOVALUE@@RFCHKPEX@Z 140 stub ?LOOKUPHKEY@CMAPKEYTOVALUE@@RFCHKPEX@Z
141 stub ?ASSERTVALID@CMAPKEYTOVALUE@@RFCXXZ 141 stub ?ASSERTVALID@CMAPKEYTOVALUE@@RFCXXZ
142 stub ?SETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z 142 stub ?SETASSOCVALUE@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEX@Z
143 stub ?SETATHKEY@CMAPKEYTOVALUE@@RECHKPEX@Z 143 stub ?SETATHKEY@CMAPKEYTOVALUE@@RECHKPEX@Z
144 stub ??0CMAPKEYTOVALUE@@REC@KIIHP7CIPEXI@ZI@Z 144 stub ??0CMAPKEYTOVALUE@@REC@KIIHP7CIPEXI@ZI@Z
145 stub ?INITHASHTABLE@CMAPKEYTOVALUE@@BECHXZ 145 stub ?INITHASHTABLE@CMAPKEYTOVALUE@@BECHXZ
146 stub ?GETASSOCVALUEPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEX@Z 146 stub ?GETASSOCVALUEPTR@CMAPKEYTOVALUE@@BFCXPEUCASSOC@1@PEPEX@Z
147 stub ?LOOKUPADD@CMAPKEYTOVALUE@@RFCHPEXI0@Z 147 stub ?LOOKUPADD@CMAPKEYTOVALUE@@RFCHPEXI0@Z
148 stub MKVDEFAULTHASHKEY 148 stub MKVDEFAULTHASHKEY
149 stub DELETE16 149 stub DELETE16
150 stub COMEMCTXOF 150 stub COMEMCTXOF
151 stub COMEMALLOC 151 pascal CoMemAlloc(long long long)
152 stub COMEMFREE 152 stub COMEMFREE
153 stub SHRREALLOC 153 stub SHRREALLOC
154 stub ___EXPORTEDSTUB 154 stub ___EXPORTEDSTUB
155 stub LRPCREGISTERWIN32SMONITOR 155 stub LRPCREGISTERWIN32SMONITOR
156 stub MYREMGETINFOFORCID 156 stub MYREMGETINFOFORCID
157 stub SHRFREE 157 stub SHRFREE
158 stub OPNEW16 158 stub OPNEW16
159 stub ADDCOINFO 159 stub ADDCOINFO
160 stub CORUNMODALLOOP 160 stub CORUNMODALLOOP
161 stub COHANDLEINCOMINGCALL 161 stub COHANDLEINCOMINGCALL
162 stub COSETACKSTATE 162 stub COSETACKSTATE
163 stub SHRDIDALLOC 163 stub SHRDIDALLOC
164 stub ?GETAT@CARRAYFVALUE@@RFCPEXH@Z 164 stub ?GETAT@CARRAYFVALUE@@RFCPEXH@Z
165 stub ?GETUPPERBOUND@CARRAYFVALUE@@RFCHXZ 165 stub ?GETUPPERBOUND@CARRAYFVALUE@@RFCHXZ
166 stub OPDELETE16 166 stub OPDELETE16
167 stub ?GETSIZEVALUE@CARRAYFVALUE@@RFCHXZ 167 stub ?GETSIZEVALUE@CARRAYFVALUE@@RFCHXZ
168 stub ?PROXY1632ADDREF@@ZAKPEVCPROXY1632@@@Z 168 stub ?PROXY1632ADDREF@@ZAKPEVCPROXY1632@@@Z
# FIXME: 169 is a duplicate of 97 # FIXME: 169 is a duplicate of 97
169 stub REMLOOKUPSHUNK_dup 169 stub REMLOOKUPSHUNK_dup
170 stub ?ISEMPTY@CMAPKEYTOVALUE@@RFCHXZ 170 stub ?ISEMPTY@CMAPKEYTOVALUE@@RFCHXZ
171 stub ?FREE@CSTDMALLOC@@VEAXPEX@Z 171 stub ?FREE@CSTDMALLOC@@VEAXPEX@Z
172 stub CALLTHKMGRINITIALIZE 172 stub CALLTHKMGRINITIALIZE
173 stub ?REALLOC@CSTDMALLOC@@VEAPEXPEXK@Z 173 stub ?REALLOC@CSTDMALLOC@@VEAPEXPEXK@Z
174 stub ?SM16RHQI@@ZAPEXPEVCSM16RELEASEHANDLER@@AFUGUID@@PEPEX@Z 174 stub ?SM16RHQI@@ZAPEXPEVCSM16RELEASEHANDLER@@AFUGUID@@PEPEX@Z
175 stub ?PROXY1632METHOD10@@ZAKPEVCPROXY1632@@@Z 175 stub ?PROXY1632METHOD10@@ZAKPEVCPROXY1632@@@Z
# FIXME: 176 is a duplicate of 154 # FIXME: 176 is a duplicate of 154
176 stub ___EXPORTEDSTUB_dup 176 stub ___EXPORTEDSTUB_dup
177 stub ?PROXY1632METHOD20@@ZAKPEVCPROXY1632@@@Z 177 stub ?PROXY1632METHOD20@@ZAKPEVCPROXY1632@@@Z
178 stub ?PROXY1632METHOD11@@ZAKPEVCPROXY1632@@@Z 178 stub ?PROXY1632METHOD11@@ZAKPEVCPROXY1632@@@Z
179 stub ?PROXY1632METHOD30@@ZAKPEVCPROXY1632@@@Z 179 stub ?PROXY1632METHOD30@@ZAKPEVCPROXY1632@@@Z
180 stub ?PROXY1632METHOD21@@ZAKPEVCPROXY1632@@@Z 180 stub ?PROXY1632METHOD21@@ZAKPEVCPROXY1632@@@Z
181 stub ?PROXY1632METHOD12@@ZAKPEVCPROXY1632@@@Z 181 stub ?PROXY1632METHOD12@@ZAKPEVCPROXY1632@@@Z
182 stub ?PROXY1632METHOD31@@ZAKPEVCPROXY1632@@@Z 182 stub ?PROXY1632METHOD31@@ZAKPEVCPROXY1632@@@Z
183 stub ?PROXY1632METHOD22@@ZAKPEVCPROXY1632@@@Z 183 stub ?PROXY1632METHOD22@@ZAKPEVCPROXY1632@@@Z
184 stub ?PROXY1632METHOD13@@ZAKPEVCPROXY1632@@@Z 184 stub ?PROXY1632METHOD13@@ZAKPEVCPROXY1632@@@Z
185 stub ?GETSIZE@CSTDMALLOC@@VEAKPEX@Z 185 stub ?GETSIZE@CSTDMALLOC@@VEAKPEX@Z
186 stub ?PROXY1632METHOD23@@ZAKPEVCPROXY1632@@@Z 186 stub ?PROXY1632METHOD23@@ZAKPEVCPROXY1632@@@Z
187 stub ?PROXY1632METHOD14@@ZAKPEVCPROXY1632@@@Z 187 stub ?PROXY1632METHOD14@@ZAKPEVCPROXY1632@@@Z
188 stub ?PROXY1632METHOD24@@ZAKPEVCPROXY1632@@@Z 188 stub ?PROXY1632METHOD24@@ZAKPEVCPROXY1632@@@Z
189 stub ?PROXY1632METHOD15@@ZAKPEVCPROXY1632@@@Z 189 stub ?PROXY1632METHOD15@@ZAKPEVCPROXY1632@@@Z
190 stub ?PROXY1632METHOD25@@ZAKPEVCPROXY1632@@@Z 190 stub ?PROXY1632METHOD25@@ZAKPEVCPROXY1632@@@Z
191 stub ?PROXY1632METHOD16@@ZAKPEVCPROXY1632@@@Z 191 stub ?PROXY1632METHOD16@@ZAKPEVCPROXY1632@@@Z
192 stub ?PROXY1632METHOD26@@ZAKPEVCPROXY1632@@@Z 192 stub ?PROXY1632METHOD26@@ZAKPEVCPROXY1632@@@Z
193 stub ?PROXY1632METHOD17@@ZAKPEVCPROXY1632@@@Z 193 stub ?PROXY1632METHOD17@@ZAKPEVCPROXY1632@@@Z
194 stub ?PROXY1632METHOD27@@ZAKPEVCPROXY1632@@@Z 194 stub ?PROXY1632METHOD27@@ZAKPEVCPROXY1632@@@Z
195 stub ?PROXY1632METHOD18@@ZAKPEVCPROXY1632@@@Z 195 stub ?PROXY1632METHOD18@@ZAKPEVCPROXY1632@@@Z
196 stub ?PROXY1632METHOD28@@ZAKPEVCPROXY1632@@@Z 196 stub ?PROXY1632METHOD28@@ZAKPEVCPROXY1632@@@Z
197 stub ?ADDREF@CSTDMALLOC@@VEAKXZ 197 stub ?ADDREF@CSTDMALLOC@@VEAKXZ
198 stub ?PROXY1632METHOD19@@ZAKPEVCPROXY1632@@@Z 198 stub ?PROXY1632METHOD19@@ZAKPEVCPROXY1632@@@Z
199 stub ?PROXY1632METHOD29@@ZAKPEVCPROXY1632@@@Z 199 stub ?PROXY1632METHOD29@@ZAKPEVCPROXY1632@@@Z
200 stub CALL32INITIALIZE 200 stub CALL32INITIALIZE
201 pascal CALLOBJECTINWOW(ptr ptr) CallObjectInWOW 201 pascal CALLOBJECTINWOW(ptr ptr) CallObjectInWOW
203 stub CALLOBJECTINWOWCHECKINIT 203 stub CALLOBJECTINWOWCHECKINIT
204 stub CALLOBJECTINWOWCHECKTHKMGR 204 stub CALLOBJECTINWOWCHECKTHKMGR
205 stub CONVERTHR1632 205 stub CONVERTHR1632
206 stub CONVERTHR3216 206 stub CONVERTHR3216
207 stub ADDAPPCOMPATFLAG 207 stub ADDAPPCOMPATFLAG
# WINE internal relays (for Win16 interfaces) # WINE internal relays (for Win16 interfaces)
500 cdecl IMalloc16_QueryInterface(ptr ptr ptr) IMalloc16_fnQueryInterface 500 cdecl IMalloc16_QueryInterface(ptr ptr ptr) IMalloc16_fnQueryInterface
501 cdecl IMalloc16_AddRef(ptr) IMalloc16_fnAddRef 501 cdecl IMalloc16_AddRef(ptr) IMalloc16_fnAddRef
502 cdecl IMalloc16_Release(ptr) IMalloc16_fnRelease 502 cdecl IMalloc16_Release(ptr) IMalloc16_fnRelease
503 cdecl IMalloc16_Alloc(ptr long) IMalloc16_fnAlloc 503 cdecl IMalloc16_Alloc(ptr long) IMalloc16_fnAlloc
504 cdecl IMalloc16_Realloc(ptr segptr long) IMalloc16_fnRealloc 504 cdecl IMalloc16_Realloc(ptr segptr long) IMalloc16_fnRealloc
505 cdecl IMalloc16_Free(ptr segptr) IMalloc16_fnFree 505 cdecl IMalloc16_Free(ptr segptr) IMalloc16_fnFree
506 cdecl IMalloc16_GetSize(ptr segptr) IMalloc16_fnGetSize 506 cdecl IMalloc16_GetSize(ptr segptr) IMalloc16_fnGetSize
507 cdecl IMalloc16_DidAlloc(ptr segptr) IMalloc16_fnDidAlloc 507 cdecl IMalloc16_DidAlloc(ptr segptr) IMalloc16_fnDidAlloc
508 cdecl IMalloc16_HeapMinimize(ptr) IMalloc16_fnHeapMinimize 508 cdecl IMalloc16_HeapMinimize(ptr) IMalloc16_fnHeapMinimize

View file

@ -112,7 +112,7 @@ struct proxy_manager
OXID oxid; /* object exported ID (RO) */ OXID oxid; /* object exported ID (RO) */
OID oid; /* object ID (RO) */ OID oid; /* object ID (RO) */
struct list interfaces; /* imported interfaces (CS cs) */ 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 */ CRITICAL_SECTION cs; /* thread safety for this object and children */
ULONG sorflags; /* STDOBJREF flags (RO) */ ULONG sorflags; /* STDOBJREF flags (RO) */
IRemUnknown *remunk; /* proxy to IRemUnknown used for lifecycle management (CS cs) */ IRemUnknown *remunk; /* proxy to IRemUnknown used for lifecycle management (CS cs) */
@ -124,12 +124,12 @@ struct apartment
{ {
struct list entry; struct list entry;
DWORD refs; /* refcount of the apartment (LOCK) */ LONG refs; /* refcount of the apartment (LOCK) */
DWORD model; /* threading model (RO) */ DWORD model; /* threading model (RO) */
DWORD tid; /* thread id (RO) */ DWORD tid; /* thread id (RO) */
HANDLE thread; /* thread handle (RO) */ HANDLE thread; /* thread handle (RO) */
OXID oxid; /* object exporter ID (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) */ HWND win; /* message window (RO) */
CRITICAL_SECTION cs; /* thread safety */ CRITICAL_SECTION cs; /* thread safety */
LPMESSAGEFILTER filter; /* message filter (CS cs) */ LPMESSAGEFILTER filter; /* message filter (CS cs) */

View file

@ -54,7 +54,7 @@ typedef struct CompositeMonikerImpl{
*/ */
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData interface.*/ 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 */ IMoniker** tabMoniker; /* dynamaic table containing all components (monikers) of this composite moniker */
@ -70,7 +70,7 @@ typedef struct EnumMonikerImpl{
const IEnumMonikerVtbl *lpVtbl; /* VTable relative to the IEnumMoniker interface.*/ 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 */ IMoniker** tabMoniker; /* dynamic table containing the enumerated monikers */

View file

@ -103,7 +103,7 @@ struct DataCache
/* /*
* Reference count of this object * Reference count of this object
*/ */
ULONG ref; LONG ref;
/* /*
* IUnknown implementation of the outer object. * IUnknown implementation of the outer object.

View file

@ -78,7 +78,7 @@ struct DefaultHandler
/* /*
* Reference count of this object * Reference count of this object
*/ */
ULONG ref; LONG ref;
/* /*
* IUnknown implementation of the outer object. * IUnknown implementation of the outer object.

View file

@ -131,7 +131,7 @@ typedef struct ErrorInfoImpl
const IErrorInfoVtbl *lpvtei; const IErrorInfoVtbl *lpvtei;
const ICreateErrorInfoVtbl *lpvtcei; const ICreateErrorInfoVtbl *lpvtcei;
const ISupportErrorInfoVtbl *lpvtsei; const ISupportErrorInfoVtbl *lpvtsei;
DWORD ref; LONG ref;
GUID m_Guid; GUID m_Guid;
BSTR bstrSource; BSTR bstrSource;

View file

@ -53,7 +53,7 @@ typedef struct FileMonikerImpl{
*/ */
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData 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 filePathName; /* path string identified by this filemoniker */ LPOLESTR filePathName; /* path string identified by this filemoniker */

View file

@ -38,7 +38,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole);
typedef struct _FTMarshalImpl { typedef struct _FTMarshalImpl {
const IUnknownVtbl *lpVtbl; const IUnknownVtbl *lpVtbl;
DWORD ref; LONG ref;
const IMarshalVtbl *lpvtblFTM; const IMarshalVtbl *lpvtblFTM;
IUnknown *pUnkOuter; IUnknown *pUnkOuter;

View file

@ -60,7 +60,7 @@ struct HGLOBALStreamImpl
/* /*
* Reference count * Reference count
*/ */
ULONG ref; LONG ref;
/* /*
* Support for the stream * Support for the stream

View file

@ -366,7 +366,7 @@ static const IMallocSpyVtbl VT_IMallocSpy;
typedef struct { typedef struct {
const IMallocSpyVtbl *lpVtbl; const IMallocSpyVtbl *lpVtbl;
DWORD ref; LONG ref;
} _MallocSpy; } _MallocSpy;
/* this is the static object instance */ /* this is the static object instance */

View file

@ -29,6 +29,11 @@ typedef CHAR OLECHAR16;
typedef LPSTR LPOLESTR16; typedef LPSTR LPOLESTR16;
typedef LPCSTR LPCOLESTR16; typedef LPCSTR LPCOLESTR16;
#define STDMETHOD16CALLTYPE __cdecl
#define STDMETHOD16(m) HRESULT (STDMETHOD16CALLTYPE *m)
#define STDMETHOD16_(t,m) t (STDMETHOD16CALLTYPE *m)
/*********************************************************************** /***********************************************************************
* IMalloc16 interface * IMalloc16 interface
*/ */
@ -38,16 +43,16 @@ typedef LPCSTR LPCOLESTR16;
DECLARE_INTERFACE_(IMalloc16,IUnknown) DECLARE_INTERFACE_(IMalloc16,IUnknown)
{ {
/*** IUnknown methods ***/ /*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** IMalloc16 methods ***/ /*** IMalloc16 methods ***/
STDMETHOD_(LPVOID,Alloc)(THIS_ DWORD cb) PURE; STDMETHOD16_(LPVOID,Alloc)(THIS_ DWORD cb) PURE;
STDMETHOD_(LPVOID,Realloc)(THIS_ LPVOID pv, DWORD cb) PURE; STDMETHOD16_(LPVOID,Realloc)(THIS_ LPVOID pv, DWORD cb) PURE;
STDMETHOD_(void,Free)(THIS_ LPVOID pv) PURE; STDMETHOD16_(void,Free)(THIS_ LPVOID pv) PURE;
STDMETHOD_(DWORD,GetSize)(THIS_ LPVOID pv) PURE; STDMETHOD16_(DWORD,GetSize)(THIS_ LPVOID pv) PURE;
STDMETHOD_(INT16,DidAlloc)(THIS_ LPVOID pv) PURE; STDMETHOD16_(INT16,DidAlloc)(THIS_ LPVOID pv) PURE;
STDMETHOD_(LPVOID,HeapMinimize)(THIS) PURE; STDMETHOD16_(LPVOID,HeapMinimize)(THIS) PURE;
}; };
#undef INTERFACE #undef INTERFACE
@ -63,17 +68,17 @@ extern LPMALLOC16 IMalloc16_Constructor(void);
DECLARE_INTERFACE_(ILockBytes16,IUnknown) DECLARE_INTERFACE_(ILockBytes16,IUnknown)
{ {
/*** IUnknown methods ***/ /*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** ILockBytes16 methods ***/ /*** ILockBytes16 methods ***/
STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead) PURE; STDMETHOD16(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; STDMETHOD16(WriteAt)(THIS_ ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten) PURE;
STDMETHOD(Flush)(THIS) PURE; STDMETHOD16(Flush)(THIS) PURE;
STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER cb) PURE; STDMETHOD16(SetSize)(THIS_ ULARGE_INTEGER cb) PURE;
STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; STDMETHOD16(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; STDMETHOD16(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
STDMETHOD(Stat)(THIS_ STATSTG *pstatstg, DWORD grfStatFlag) PURE; STDMETHOD16(Stat)(THIS_ STATSTG *pstatstg, DWORD grfStatFlag) PURE;
}; };
#undef INTERFACE #undef INTERFACE
@ -98,22 +103,22 @@ typedef struct tagSTATSTG16
DECLARE_INTERFACE_(IStream16,ISequentialStream) DECLARE_INTERFACE_(IStream16,ISequentialStream)
{ {
/*** IUnknown methods ***/ /*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** ISequentialStream methods ***/ /*** ISequentialStream methods ***/
STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; STDMETHOD16_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE;
STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; STDMETHOD16_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE;
/*** IStream16 methods ***/ /*** IStream16 methods ***/
STDMETHOD(Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE; STDMETHOD16(Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE;
STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE; STDMETHOD16(SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE;
STDMETHOD(CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE; STDMETHOD16(CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE;
STDMETHOD(Commit)(THIS_ DWORD grfCommitFlags) PURE; STDMETHOD16(Commit)(THIS_ DWORD grfCommitFlags) PURE;
STDMETHOD(Revert)(THIS) PURE; STDMETHOD16(Revert)(THIS) PURE;
STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; STDMETHOD16(LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; STDMETHOD16(UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE;
STDMETHOD(Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; STDMETHOD16(Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
STDMETHOD(Clone)(THIS_ IStream16** ppstm) PURE; STDMETHOD16(Clone)(THIS_ IStream16** ppstm) PURE;
}; };
#undef INTERFACE #undef INTERFACE
@ -125,25 +130,25 @@ typedef OLECHAR16 **SNB16;
DECLARE_INTERFACE_(IStorage16,IUnknown) DECLARE_INTERFACE_(IStorage16,IUnknown)
{ {
/*** IUnknown methods ***/ /*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; STDMETHOD16_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD16_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD16_(ULONG,Release)(THIS) PURE;
/*** IStorage16 methods ***/ /*** IStorage16 methods ***/
STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream16** ppstm) PURE; STDMETHOD16_(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; STDMETHOD16_(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; STDMETHOD16_(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; STDMETHOD16_(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; STDMETHOD16_(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; STDMETHOD16_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgDest, LPCOLESTR16 pwcsNewName, DWORD grfFlags) PURE;
STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; STDMETHOD16_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE;
STDMETHOD_(HRESULT,Revert)(THIS) PURE; STDMETHOD16_(HRESULT,Revert)(THIS) PURE;
STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE; STDMETHOD16_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE;
STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE; STDMETHOD16_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE;
STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE; STDMETHOD16_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE;
STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; STDMETHOD16_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE;
STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; STDMETHOD16_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE;
STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE; STDMETHOD16_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE;
STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; STDMETHOD16_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
}; };
#undef INTERFACE #undef INTERFACE

View file

@ -52,7 +52,7 @@ typedef struct ItemMonikerImpl{
*/ */
const IROTDataVtbl* lpvtbl2; /* VTable relative to the IROTData 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 */ LPOLESTR itemName; /* item name identified by this ItemMoniker */

View file

@ -85,18 +85,27 @@ inline static HRESULT get_facbuf_for_iid(REFIID riid, IPSFactoryBuffer **facbuf)
} }
/* creates a new stub manager */ /* 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 stub_manager *manager;
struct ifstub *ifstub; struct ifstub *ifstub;
BOOL tablemarshal; BOOL tablemarshal;
IRpcStubBuffer *stub = NULL; IRpcStubBuffer *stub = NULL;
HRESULT hr; HRESULT hr;
IUnknown *iobject = NULL; /* object of type riid */
hr = apartment_getoxid(apt, &stdobjref->oxid); hr = apartment_getoxid(apt, &stdobjref->oxid);
if (hr != S_OK) if (hr != S_OK)
return hr; 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 /* IUnknown doesn't require a stub buffer, because it never goes out on
* the wire */ * the wire */
if (!IsEqualIID(riid, &IID_IUnknown)) if (!IsEqualIID(riid, &IID_IUnknown))
@ -107,19 +116,19 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno
if (hr != S_OK) if (hr != S_OK)
{ {
ERR("couldn't get IPSFactory buffer for interface %s\n", debugstr_guid(riid)); ERR("couldn't get IPSFactory buffer for interface %s\n", debugstr_guid(riid));
IUnknown_Release(iobject);
return hr; return hr;
} }
hr = IPSFactoryBuffer_CreateStub(psfb, riid, obj, &stub); hr = IPSFactoryBuffer_CreateStub(psfb, riid, iobject, &stub);
IPSFactoryBuffer_Release(psfb); IPSFactoryBuffer_Release(psfb);
if (hr != S_OK) if (hr != S_OK)
{ {
ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s\n", debugstr_guid(riid)); ERR("Failed to create an IRpcStubBuffer from IPSFactory for %s\n", debugstr_guid(riid));
IUnknown_Release(iobject);
return hr; return hr;
} }
} }
else /* need to addref object anyway */
IUnknown_AddRef(obj);
if (mshlflags & MSHLFLAGS_NOPING) if (mshlflags & MSHLFLAGS_NOPING)
stdobjref->flags = SORF_NOPING; stdobjref->flags = SORF_NOPING;
@ -128,16 +137,17 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno
/* FIXME: what happens if we register an interface twice with different /* FIXME: what happens if we register an interface twice with different
* marshaling flags? */ * 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"); TRACE("registering new ifstub on pre-existing manager\n");
else else
{ {
TRACE("constructing new stub manager\n"); TRACE("constructing new stub manager\n");
manager = new_stub_manager(apt, obj, mshlflags); manager = new_stub_manager(apt, object, mshlflags);
if (!manager) if (!manager)
{ {
if (stub) IRpcStubBuffer_Release(stub); if (stub) IRpcStubBuffer_Release(stub);
IUnknown_Release(iobject);
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }
} }
@ -145,10 +155,11 @@ HRESULT marshal_object(APARTMENT *apt, STDOBJREF *stdobjref, REFIID riid, IUnkno
tablemarshal = ((mshlflags & MSHLFLAGS_TABLESTRONG) || (mshlflags & MSHLFLAGS_TABLEWEAK)); 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) if (!ifstub)
{ {
IRpcStubBuffer_Release(stub);
stub_manager_int_release(manager); stub_manager_int_release(manager);
/* FIXME: should we do another release to completely destroy the /* FIXME: should we do another release to completely destroy the
* stub manager? */ * stub manager? */
@ -763,7 +774,7 @@ HRESULT apartment_disconnectproxies(struct apartment *apt)
typedef struct _StdMarshalImpl typedef struct _StdMarshalImpl
{ {
const IMarshalVtbl *lpvtbl; const IMarshalVtbl *lpvtbl;
DWORD ref; LONG ref;
IID iid; IID iid;
DWORD dwDestContext; DWORD dwDestContext;
@ -826,7 +837,6 @@ StdMarshalImpl_MarshalInterface(
void* pvDestContext, DWORD mshlflags) void* pvDestContext, DWORD mshlflags)
{ {
STDOBJREF stdobjref; STDOBJREF stdobjref;
IUnknown *pUnk;
ULONG res; ULONG res;
HRESULT hres; HRESULT hres;
APARTMENT *apt = COM_CurrentApt(); APARTMENT *apt = COM_CurrentApt();
@ -842,18 +852,7 @@ StdMarshalImpl_MarshalInterface(
/* make sure this apartment can be reached from other threads / processes */ /* make sure this apartment can be reached from other threads / processes */
RPC_StartRemoting(apt); RPC_StartRemoting(apt);
hres = IUnknown_QueryInterface((LPUNKNOWN)pv, riid, (LPVOID*)&pUnk); hres = marshal_object(apt, &stdobjref, riid, (IUnknown *)pv, mshlflags);
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);
if (hres) if (hres)
{ {
ERR("Failed to create ifstub, hres=0x%lx\n", hres); ERR("Failed to create ifstub, hres=0x%lx\n", hres);

View file

@ -57,7 +57,7 @@ struct HGLOBALLockBytesImpl
/* /*
* Reference count * Reference count
*/ */
ULONG ref; LONG ref;
/* /*
* Support for the LockBytes object * Support for the LockBytes object
@ -155,6 +155,24 @@ static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl =
/****************************************************************************** /******************************************************************************
* CreateILockBytesOnHGlobal [OLE32.@] * 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, HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal,
BOOL fDeleteOnRelease, BOOL fDeleteOnRelease,
@ -176,6 +194,17 @@ HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL hGlobal,
/****************************************************************************** /******************************************************************************
* GetHGlobalFromILockBytes [OLE32.@] * 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) HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal)
{ {
@ -224,10 +253,10 @@ HRESULT WINAPI GetHGlobalFromILockBytes(ILockBytes* plkbyt, HGLOBAL* phglobal)
/****************************************************************************** /******************************************************************************
* This is the constructor for the HGLOBALLockBytesImpl class. * This is the constructor for the HGLOBALLockBytesImpl class.
* *
* Params: * PARAMS
* hGlobal - Handle that will support the stream. can be NULL. * hGlobal [ I] Handle that will support the stream. can be NULL.
* fDeleteOnRelease - Flag set to TRUE if the HGLOBAL will be released * fDeleteOnRelease [ I] Flag set to TRUE if the HGLOBAL will be released
* when the IStream object is destroyed. * when the IStream object is destroyed.
*/ */
HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal, HGLOBALLockBytesImpl* HGLOBALLockBytesImpl_Construct(HGLOBAL hGlobal,
BOOL fDeleteOnRelease) BOOL fDeleteOnRelease)

View file

@ -53,7 +53,7 @@ struct HGLOBALLockBytesImpl16
* since we want to cast this in an ILockBytes pointer * since we want to cast this in an ILockBytes pointer
*/ */
const ILockBytes16Vtbl *lpVtbl; const ILockBytes16Vtbl *lpVtbl;
ULONG ref; LONG ref;
/* /*
* Support for the LockBytes object * Support for the LockBytes object
@ -73,61 +73,6 @@ struct HGLOBALLockBytesImpl16
typedef struct HGLOBALLockBytesImpl16 HGLOBALLockBytesImpl16; 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 * HGLOBALLockBytesImpl16 implementation
@ -142,7 +87,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_Stat(
* fDeleteOnRelease - Flag set to TRUE if the HGLOBAL16 will be released * fDeleteOnRelease - Flag set to TRUE if the HGLOBAL16 will be released
* when the IStream object is destroyed. * when the IStream object is destroyed.
*/ */
HGLOBALLockBytesImpl16* static HGLOBALLockBytesImpl16*
HGLOBALLockBytesImpl16_Construct(HGLOBAL16 hGlobal, HGLOBALLockBytesImpl16_Construct(HGLOBAL16 hGlobal,
BOOL16 fDeleteOnRelease) BOOL16 fDeleteOnRelease)
{ {
@ -207,7 +152,7 @@ HGLOBALLockBytesImpl16_Construct(HGLOBAL16 hGlobal,
* HGLOBALLockBytesImpl16 class. The pointer passed-in to this function will be * HGLOBALLockBytesImpl16 class. The pointer passed-in to this function will be
* freed and will not be valid anymore. * freed and will not be valid anymore.
*/ */
void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This) static void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This)
{ {
TRACE("()\n"); TRACE("()\n");
/* /*
@ -225,11 +170,25 @@ void HGLOBALLockBytesImpl16_Destroy(HGLOBALLockBytesImpl16* This)
HeapFree(GetProcessHeap(), 0, This); 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 * This implements the IUnknown method QueryInterface for this
* class * class
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface( HRESULT HGLOBALLockBytesImpl16_QueryInterface(
ILockBytes16* iface, /* [in] SEGPTR */ ILockBytes16* iface, /* [in] SEGPTR */
REFIID riid, /* [in] */ REFIID riid, /* [in] */
void** ppvObject) /* [out][iid_is] (ptr to SEGPTR!) */ void** ppvObject) /* [out][iid_is] (ptr to SEGPTR!) */
@ -258,8 +217,10 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
/* /*
* Check that we obtained an interface. * Check that we obtained an interface.
*/ */
if ((*ppvObject)==0) if ((*ppvObject)==0) {
FIXME("Unknown IID %s\n", debugstr_guid(riid));
return E_NOINTERFACE; return E_NOINTERFACE;
}
/* /*
* Query Interface always increases the reference count by one when it is * Query Interface always increases the reference count by one when it is
@ -270,24 +231,11 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_QueryInterface(
return S_OK; 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 * This implements the IUnknown method Release for this
* class * class
*/ */
ULONG WINAPI HGLOBALLockBytesImpl16_Release(ILockBytes16* iface) ULONG HGLOBALLockBytesImpl16_Release(ILockBytes16* iface)
{ {
HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface; HGLOBALLockBytesImpl16* const This=(HGLOBALLockBytesImpl16*)iface;
ULONG ref; ULONG ref;
@ -312,7 +260,7 @@ ULONG WINAPI HGLOBALLockBytesImpl16_Release(ILockBytes16* iface)
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt( HRESULT HGLOBALLockBytesImpl16_ReadAt(
ILockBytes16* iface, ILockBytes16* iface,
ULARGE_INTEGER ulOffset, /* [in] */ ULARGE_INTEGER ulOffset, /* [in] */
void* pv, /* [out][length_is][size_is] */ void* pv, /* [out][length_is][size_is] */
@ -377,6 +325,44 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
return STG_E_READFAULT; 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. * This method is part of the ILockBytes interface.
* *
@ -385,7 +371,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_ReadAt(
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt( HRESULT HGLOBALLockBytesImpl16_WriteAt(
ILockBytes16* iface, ILockBytes16* iface,
ULARGE_INTEGER ulOffset, /* [in] */ ULARGE_INTEGER ulOffset, /* [in] */
const void* pv, /* [in][size_is] */ const void* pv, /* [in][size_is] */
@ -447,50 +433,12 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_WriteAt(
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface) HRESULT HGLOBALLockBytesImpl16_Flush(ILockBytes16* iface)
{ {
TRACE("(%p)\n",iface); TRACE("(%p)\n",iface);
return S_OK; 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. * This method is part of the ILockBytes interface.
* *
@ -498,7 +446,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_SetSize(
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_LockRegion( HRESULT HGLOBALLockBytesImpl16_LockRegion(
ILockBytes16* iface, ILockBytes16* iface,
ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER libOffset, /* [in] */
ULARGE_INTEGER cb, /* [in] */ ULARGE_INTEGER cb, /* [in] */
@ -514,7 +462,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_LockRegion(
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_UnlockRegion( HRESULT HGLOBALLockBytesImpl16_UnlockRegion(
ILockBytes16* iface, ILockBytes16* iface,
ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER libOffset, /* [in] */
ULARGE_INTEGER cb, /* [in] */ ULARGE_INTEGER cb, /* [in] */
@ -531,7 +479,7 @@ HRESULT WINAPI HGLOBALLockBytesImpl16_UnlockRegion(
* *
* See the documentation of ILockBytes for more info. * See the documentation of ILockBytes for more info.
*/ */
HRESULT WINAPI HGLOBALLockBytesImpl16_Stat( HRESULT HGLOBALLockBytesImpl16_Stat(
ILockBytes16*iface, ILockBytes16*iface,
STATSTG16* pstatstg, /* [out] */ STATSTG16* pstatstg, /* [out] */
DWORD grfStatFlag) /* [in] */ DWORD grfStatFlag) /* [in] */

View file

@ -60,7 +60,7 @@ struct rot_entry
typedef struct RunningObjectTableImpl typedef struct RunningObjectTableImpl
{ {
const IRunningObjectTableVtbl *lpVtbl; const IRunningObjectTableVtbl *lpVtbl;
ULONG ref; LONG ref;
struct list rot; /* list of ROT entries */ struct list rot; /* list of ROT entries */
CRITICAL_SECTION lock; CRITICAL_SECTION lock;
@ -73,7 +73,7 @@ static RunningObjectTableImpl* runningObjectTableInstance = NULL;
static inline HRESULT WINAPI static inline HRESULT WINAPI
IrotRegister(DWORD *cookie) IrotRegister(DWORD *cookie)
{ {
static DWORD last_cookie = 1; static LONG last_cookie = 1;
*cookie = InterlockedIncrement(&last_cookie); *cookie = InterlockedIncrement(&last_cookie);
return S_OK; return S_OK;
} }
@ -82,7 +82,7 @@ IrotRegister(DWORD *cookie)
typedef struct EnumMonikerImpl typedef struct EnumMonikerImpl
{ {
const IEnumMonikerVtbl *lpVtbl; const IEnumMonikerVtbl *lpVtbl;
ULONG ref; LONG ref;
MInterfacePointer **monikers; MInterfacePointer **monikers;
ULONG moniker_count; ULONG moniker_count;
@ -988,7 +988,7 @@ typedef struct MonikerMarshal
const IUnknownVtbl *lpVtbl; const IUnknownVtbl *lpVtbl;
const IMarshalVtbl *lpVtblMarshal; const IMarshalVtbl *lpVtblMarshal;
ULONG ref; LONG ref;
IMoniker *moniker; IMoniker *moniker;
} MonikerMarshal; } MonikerMarshal;

View file

@ -69,7 +69,7 @@ typedef struct
/****************************************************************************** /******************************************************************************
* IMalloc16_QueryInterface [COMPOBJ.500] * 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; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj); TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
@ -85,7 +85,7 @@ HRESULT WINAPI IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID
/****************************************************************************** /******************************************************************************
* IMalloc16_AddRef [COMPOBJ.501] * IMalloc16_AddRef [COMPOBJ.501]
*/ */
ULONG WINAPI IMalloc16_fnAddRef(IMalloc16* iface) { ULONG IMalloc16_fnAddRef(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->AddRef()\n",This); TRACE("(%p)->AddRef()\n",This);
return 1; /* cannot be freed */ return 1; /* cannot be freed */
@ -94,7 +94,7 @@ ULONG WINAPI IMalloc16_fnAddRef(IMalloc16* iface) {
/****************************************************************************** /******************************************************************************
* IMalloc16_Release [COMPOBJ.502] * IMalloc16_Release [COMPOBJ.502]
*/ */
ULONG WINAPI IMalloc16_fnRelease(IMalloc16* iface) { ULONG IMalloc16_fnRelease(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->Release()\n",This); TRACE("(%p)->Release()\n",This);
return 1; /* cannot be freed */ return 1; /* cannot be freed */
@ -103,7 +103,7 @@ ULONG WINAPI IMalloc16_fnRelease(IMalloc16* iface) {
/****************************************************************************** /******************************************************************************
* IMalloc16_Alloc [COMPOBJ.503] * IMalloc16_Alloc [COMPOBJ.503]
*/ */
SEGPTR WINAPI IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) { SEGPTR IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->Alloc(%ld)\n",This,cb); TRACE("(%p)->Alloc(%ld)\n",This,cb);
return MapLS( HeapAlloc( GetProcessHeap(), 0, cb ) ); return MapLS( HeapAlloc( GetProcessHeap(), 0, cb ) );
@ -112,7 +112,7 @@ SEGPTR WINAPI IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) {
/****************************************************************************** /******************************************************************************
* IMalloc16_Free [COMPOBJ.505] * IMalloc16_Free [COMPOBJ.505]
*/ */
VOID WINAPI IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv) VOID IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
{ {
void *ptr = MapSL(pv); void *ptr = MapSL(pv);
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
@ -124,7 +124,7 @@ VOID WINAPI IMalloc16_fnFree(IMalloc16* iface,SEGPTR pv)
/****************************************************************************** /******************************************************************************
* IMalloc16_Realloc [COMPOBJ.504] * 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; SEGPTR ret;
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
@ -144,7 +144,7 @@ SEGPTR WINAPI IMalloc16_fnRealloc(IMalloc16* iface,SEGPTR pv,DWORD cb)
/****************************************************************************** /******************************************************************************
* IMalloc16_GetSize [COMPOBJ.506] * 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; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->GetSize(%08lx)\n",This,pv); TRACE("(%p)->GetSize(%08lx)\n",This,pv);
@ -154,7 +154,7 @@ DWORD WINAPI IMalloc16_fnGetSize(const IMalloc16* iface,SEGPTR pv)
/****************************************************************************** /******************************************************************************
* IMalloc16_DidAlloc [COMPOBJ.507] * 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; IMalloc16 *This = (IMalloc16 *)iface;
TRACE("(%p)->DidAlloc(%p)\n",This,pv); TRACE("(%p)->DidAlloc(%p)\n",This,pv);
return (INT16)-1; return (INT16)-1;
@ -163,7 +163,7 @@ INT16 WINAPI IMalloc16_fnDidAlloc(const IMalloc16* iface,LPVOID pv) {
/****************************************************************************** /******************************************************************************
* IMalloc16_HeapMinimize [COMPOBJ.508] * IMalloc16_HeapMinimize [COMPOBJ.508]
*/ */
LPVOID WINAPI IMalloc16_fnHeapMinimize(IMalloc16* iface) { LPVOID IMalloc16_fnHeapMinimize(IMalloc16* iface) {
IMalloc16Impl *This = (IMalloc16Impl *)iface; IMalloc16Impl *This = (IMalloc16Impl *)iface;
TRACE("(%p)->HeapMinimize()\n",This); TRACE("(%p)->HeapMinimize()\n",This);
return NULL; return NULL;
@ -370,7 +370,7 @@ HRESULT WINAPI ProgIDFromCLSID16(
if (ret == S_OK) if (ret == S_OK)
{ {
DWORD buf2len; LONG buf2len;
char *buf2 = HeapAlloc(GetProcessHeap(), 0, 255); char *buf2 = HeapAlloc(GetProcessHeap(), 0, 255);
buf2len = 255; buf2len = 255;
if (RegQueryValueA(xhkey, NULL, buf2, &buf2len)) if (RegQueryValueA(xhkey, NULL, buf2, &buf2len))
@ -506,3 +506,18 @@ BOOL WINAPI COMPOBJ_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ds, WORD
TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2); TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2);
return TRUE; 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;
}

View file

@ -294,8 +294,8 @@ void WINAPI OleUninitialize(void)
/****************************************************************************** /******************************************************************************
* OleInitializeWOW [OLE32.@] * OleInitializeWOW [OLE32.@]
*/ */
HRESULT WINAPI OleInitializeWOW(DWORD x) { HRESULT WINAPI OleInitializeWOW(DWORD x, DWORD y) {
FIXME("(0x%08lx),stub!\n",x); FIXME("(0x%08lx, 0x%08lx),stub!\n",x, y);
return 0; return 0;
} }
@ -394,7 +394,7 @@ HRESULT WINAPI OleRegGetUserType(
DWORD cbData; DWORD cbData;
HKEY clsidKey; HKEY clsidKey;
LONG hres; LONG hres;
LPBYTE buffer; LPSTR buffer;
HRESULT retVal; HRESULT retVal;
/* /*
* Initialize the out parameter. * Initialize the out parameter.
@ -464,7 +464,7 @@ HRESULT WINAPI OleRegGetUserType(
"", "",
NULL, NULL,
&dwKeyType, &dwKeyType,
buffer, (LPBYTE) buffer,
&cbData); &cbData);
RegCloseKey(clsidKey); RegCloseKey(clsidKey);

View file

@ -1,158 +1,158 @@
1 pascal OleBuildVersion() OleBuildVersion 1 pascal OleBuildVersion() OleBuildVersion
2 pascal OleInitialize(ptr) OleInitialize 2 pascal OleInitialize(ptr) OleInitialize
3 pascal OleUninitialize() OleUninitialize 3 pascal OleUninitialize() OleUninitialize
4 pascal DllGetClassObject(ptr ptr ptr) DllGetClassObject16 4 pascal DllGetClassObject(ptr ptr ptr) DllGetClassObject16
#5 WEP #5 WEP
6 stub OLEQUERYLINKFROMDATA 6 stub OLEQUERYLINKFROMDATA
7 stub OLEQUERYCREATEFROMDATA 7 stub OLEQUERYCREATEFROMDATA
8 stub OLECREATEFROMDATA 8 stub OLECREATEFROMDATA
9 stub OLECREATELINKFROMDATA 9 stub OLECREATELINKFROMDATA
10 stub OLECREATE 10 stub OLECREATE
11 stub OLECREATELINK 11 stub OLECREATELINK
12 stub OLELOAD 12 stub OLELOAD
13 stub OLESAVE 13 stub OLESAVE
14 stub OLERUN 14 stub OLERUN
#15 ___EXPORTEDSTUB #15 ___EXPORTEDSTUB
16 stub OLEISRUNNING 16 stub OLEISRUNNING
17 stub OLELOCKRUNNING 17 stub OLELOCKRUNNING
18 stub READCLASSSTG 18 stub READCLASSSTG
19 stub WRITECLASSSTG 19 stub WRITECLASSSTG
20 stub READCLASSSTM 20 stub READCLASSSTM
21 stub WRITECLASSSTM 21 stub WRITECLASSSTM
22 stub BINDMONIKER 22 stub BINDMONIKER
23 stub MKPARSEDISPLAYNAME 23 stub MKPARSEDISPLAYNAME
24 stub OLESAVETOSTREAM 24 stub OLESAVETOSTREAM
25 stub OLELOADFROMSTREAM 25 stub OLELOADFROMSTREAM
26 stub CREATEBINDCTX 26 stub CREATEBINDCTX
27 pascal CreateItemMoniker(str str ptr) CreateItemMoniker16 27 pascal CreateItemMoniker(str str ptr) CreateItemMoniker16
28 pascal CreateFileMoniker(str ptr) CreateFileMoniker16 28 pascal CreateFileMoniker(str ptr) CreateFileMoniker16
29 stub CREATEGENERICCOMPOSITE 29 stub CREATEGENERICCOMPOSITE
30 pascal GetRunningObjectTable(long ptr) GetRunningObjectTable16 30 pascal GetRunningObjectTable(long ptr) GetRunningObjectTable16
31 stub OLEGETMALLOC 31 stub OLEGETMALLOC
32 stub RELEASESTGMEDIUM 32 stub RELEASESTGMEDIUM
33 stub READSTRINGSTREAM 33 stub READSTRINGSTREAM
34 stub WRITESTRINGSTREAM 34 stub WRITESTRINGSTREAM
35 pascal RegisterDragDrop(word segptr) RegisterDragDrop16 35 pascal RegisterDragDrop(word segptr) RegisterDragDrop16
36 pascal RevokeDragDrop(word) RevokeDragDrop16 36 pascal RevokeDragDrop(word) RevokeDragDrop16
37 stub DODRAGDROP 37 stub DODRAGDROP
38 stub CREATEOLEADVISEHOLDER 38 stub CREATEOLEADVISEHOLDER
39 stub CREATEDATAADVISEHOLDER 39 stub CREATEDATAADVISEHOLDER
40 stub OLECREATEMENUDESCRIPTOR 40 stub OLECREATEMENUDESCRIPTOR
41 stub OLESETMENUDESCRIPTOR 41 pascal OleSetMenuDescriptor(word word word ptr ptr) OleSetMenuDescriptor16
42 stub OLEDESTROYMENUDESCRIPTOR 42 stub OLEDESTROYMENUDESCRIPTOR
43 stub OPENORCREATESTREAM 43 stub OPENORCREATESTREAM
44 stub CREATEANTIMONIKER 44 stub CREATEANTIMONIKER
45 stub CREATEPOINTERMONIKER 45 stub CREATEPOINTERMONIKER
46 stub MONIKERRELATIVEPATHTO 46 stub MONIKERRELATIVEPATHTO
47 stub MONIKERCOMMONPREFIXWITH 47 stub MONIKERCOMMONPREFIXWITH
48 stub ISACCELERATOR 48 stub ISACCELERATOR
49 pascal OleSetClipboard(ptr) OleSetClipboard16 49 pascal OleSetClipboard(ptr) OleSetClipboard16
50 pascal OleGetClipboard(ptr) OleGetClipboard16 50 pascal OleGetClipboard(ptr) OleGetClipboard16
51 stub OLEDUPLICATEDATA 51 stub OLEDUPLICATEDATA
52 stub OLEGETICONOFFILE 52 stub OLEGETICONOFFILE
53 stub OLEGETICONOFCLASS 53 stub OLEGETICONOFCLASS
54 pascal CreateILockBytesOnHGlobal(word word ptr) CreateILockBytesOnHGlobal16 54 pascal CreateILockBytesOnHGlobal(word word ptr) CreateILockBytesOnHGlobal16
55 stub GETHGLOBALFROMILOCKBYTES 55 stub GETHGLOBALFROMILOCKBYTES
56 pascal -ret16 OleMetaFilePictFromIconAndLabel(word str str word) OleMetaFilePictFromIconAndLabel16 56 pascal -ret16 OleMetaFilePictFromIconAndLabel(word str str word) OleMetaFilePictFromIconAndLabel16
57 stub GETCLASSFILE 57 stub GETCLASSFILE
58 stub OLEDRAW 58 stub OLEDRAW
59 stub OLECREATEDEFAULTHANDLER 59 stub OLECREATEDEFAULTHANDLER
60 stub OLECREATEEMBEDDINGHELPER 60 stub OLECREATEEMBEDDINGHELPER
61 stub OLECONVERTISTORAGETOOLESTREAMEX 61 stub OLECONVERTISTORAGETOOLESTREAMEX
62 stub OLECONVERTOLESTREAMTOISTORAGEEX 62 stub OLECONVERTOLESTREAMTOISTORAGEEX
63 stub SETDOCUMENTBITSTG 63 stub SETDOCUMENTBITSTG
64 stub GETDOCUMENTBITSTG 64 stub GETDOCUMENTBITSTG
65 stub WRITEOLESTG 65 stub WRITEOLESTG
66 stub READOLESTG 66 stub READOLESTG
67 stub OLECREATEFROMFILE 67 stub OLECREATEFROMFILE
68 stub OLECREATELINKTOFILE 68 stub OLECREATELINKTOFILE
69 stub CREATEDATACACHE 69 stub CREATEDATACACHE
70 stub OLECONVERTISTORAGETOOLESTREAM 70 stub OLECONVERTISTORAGETOOLESTREAM
71 stub OLECONVERTOLESTREAMTOISTORAGE 71 stub OLECONVERTOLESTREAMTOISTORAGE
74 stub READFMTUSERTYPESTG 74 stub READFMTUSERTYPESTG
75 stub WRITEFMTUSERTYPESTG 75 stub WRITEFMTUSERTYPESTG
76 pascal -ret16 OleFlushClipboard() OleFlushClipboard16 76 pascal -ret16 OleFlushClipboard() OleFlushClipboard16
77 stub OLEISCURRENTCLIPBOARD 77 stub OLEISCURRENTCLIPBOARD
78 stub OLETRANSLATEACCELERATOR 78 stub OLETRANSLATEACCELERATOR
79 stub OLEDOAUTOCONVERT 79 stub OLEDOAUTOCONVERT
80 stub OLEGETAUTOCONVERT 80 stub OLEGETAUTOCONVERT
81 stub OLESETAUTOCONVERT 81 stub OLESETAUTOCONVERT
82 stub GETCONVERTSTG 82 stub GETCONVERTSTG
83 stub SETCONVERTSTG 83 stub SETCONVERTSTG
84 stub CREATESTREAMONHGLOBAL 84 stub CREATESTREAMONHGLOBAL
85 stub GETHGLOBALFROMSTREAM 85 stub GETHGLOBALFROMSTREAM
86 stub OLESETCONTAINEDOBJECT 86 stub OLESETCONTAINEDOBJECT
87 stub OLENOTEOBJECTVISIBLE 87 stub OLENOTEOBJECTVISIBLE
88 stub OLECREATESTATICFROMDATA 88 stub OLECREATESTATICFROMDATA
89 stub OLEREGGETUSERTYPE 89 stub OLEREGGETUSERTYPE
90 stub OLEREGGETMISCSTATUS 90 stub OLEREGGETMISCSTATUS
91 stub OLEREGENUMFORMATETC 91 stub OLEREGENUMFORMATETC
92 stub OLEREGENUMVERBS 92 stub OLEREGENUMVERBS
93 stub OLEGETENUMFORMATETC 93 stub OLEGETENUMFORMATETC
100 stub MAKEDEBUGSTREAM 100 stub MAKEDEBUGSTREAM
104 stub DBGLOGOPEN 104 stub DBGLOGOPEN
105 stub DBGLOGCLOSE 105 stub DBGLOGCLOSE
106 stub DBGLOGOUTPUTDEBUGSTRING 106 stub DBGLOGOUTPUTDEBUGSTRING
107 stub DBGLOGWRITE 107 stub DBGLOGWRITE
108 stub DBGLOGTIMESTAMP 108 stub DBGLOGTIMESTAMP
109 stub DBGLOGWRITEBANNER 109 stub DBGLOGWRITEBANNER
110 stub DBGDUMPOBJECT 110 stub DBGDUMPOBJECT
111 stub DBGISOBJECTVALID 111 stub DBGISOBJECTVALID
112 stub DUMPALLOBJECTS 112 stub DUMPALLOBJECTS
113 stub VALIDATEALLOBJECTS 113 stub VALIDATEALLOBJECTS
114 stub DBGDUMPCLASSNAME 114 stub DBGDUMPCLASSNAME
115 stub DBGDUMPEXTERNALOBJECT 115 stub DBGDUMPEXTERNALOBJECT
120 stub _IID_IENUMUNKNOWN 120 stub _IID_IENUMUNKNOWN
121 stub _IID_IENUMSTRING 121 stub _IID_IENUMSTRING
122 stub _IID_IENUMMONIKER 122 stub _IID_IENUMMONIKER
123 stub _IID_IENUMFORMATETC 123 stub _IID_IENUMFORMATETC
124 stub _IID_IENUMOLEVERB 124 stub _IID_IENUMOLEVERB
125 stub _IID_IENUMSTATDATA 125 stub _IID_IENUMSTATDATA
126 stub _IID_IENUMGENERIC 126 stub _IID_IENUMGENERIC
127 stub _IID_IENUMHOLDER 127 stub _IID_IENUMHOLDER
128 stub _IID_IENUMCALLBACK 128 stub _IID_IENUMCALLBACK
129 stub _IID_IPERSISTSTREAM 129 stub _IID_IPERSISTSTREAM
130 stub _IID_IPERSISTSTORAGE 130 stub _IID_IPERSISTSTORAGE
131 stub _IID_IPERSISTFILE 131 stub _IID_IPERSISTFILE
132 stub _IID_IPERSIST 132 stub _IID_IPERSIST
133 stub _IID_IVIEWOBJECT 133 stub _IID_IVIEWOBJECT
134 stub _IID_IDATAOBJECT 134 stub _IID_IDATAOBJECT
135 stub _IID_IADVISESINK 135 stub _IID_IADVISESINK
136 stub _IID_IDATAADVISEHOLDER 136 stub _IID_IDATAADVISEHOLDER
137 stub _IID_IOLEADVISEHOLDER 137 stub _IID_IOLEADVISEHOLDER
138 stub _IID_IOLEOBJECT 138 stub _IID_IOLEOBJECT
139 stub _IID_IOLEINPLACEOBJECT 139 stub _IID_IOLEINPLACEOBJECT
140 stub _IID_IOLEWINDOW 140 stub _IID_IOLEWINDOW
141 stub _IID_IOLEINPLACEUIWINDOW 141 stub _IID_IOLEINPLACEUIWINDOW
142 stub _IID_IOLEINPLACEFRAME 142 stub _IID_IOLEINPLACEFRAME
143 stub _IID_IOLEINPLACEACTIVEOBJECT 143 stub _IID_IOLEINPLACEACTIVEOBJECT
144 stub _IID_IOLECLIENTSITE 144 stub _IID_IOLECLIENTSITE
145 stub _IID_IOLEINPLACESITE 145 stub _IID_IOLEINPLACESITE
146 stub _IID_IPARSEDISPLAYNAME 146 stub _IID_IPARSEDISPLAYNAME
147 stub _IID_IOLECONTAINER 147 stub _IID_IOLECONTAINER
148 stub _IID_IOLEITEMCONTAINER 148 stub _IID_IOLEITEMCONTAINER
149 stub _IID_IOLELINK 149 stub _IID_IOLELINK
150 stub _IID_IOLECACHE 150 stub _IID_IOLECACHE
151 stub _IID_IOLEMANAGER 151 stub _IID_IOLEMANAGER
152 stub _IID_IOLEPRESOBJ 152 stub _IID_IOLEPRESOBJ
153 stub _IID_IDROPSOURCE 153 stub _IID_IDROPSOURCE
154 stub _IID_IDROPTARGET 154 stub _IID_IDROPTARGET
155 stub _IID_IDEBUG 155 stub _IID_IDEBUG
156 stub _IID_IDEBUGSTREAM 156 stub _IID_IDEBUGSTREAM
157 stub _IID_IADVISESINK2 157 stub _IID_IADVISESINK2
158 stub _IID_IVIEWOBJECT2 158 stub _IID_IVIEWOBJECT2
159 stub _IID_IOLECACHE2 159 stub _IID_IOLECACHE2
160 stub _IID_IOLECACHECONTROL 160 stub _IID_IOLECACHECONTROL
161 stub _IID_IRUNNABLEOBJECT 161 stub _IID_IRUNNABLEOBJECT
# WINE MemLockBytes implementation. # WINE MemLockBytes implementation.
500 cdecl HGLOBALLockBytesImpl16_QueryInterface(segptr ptr ptr) HGLOBALLockBytesImpl16_QueryInterface 500 cdecl HGLOBALLockBytesImpl16_QueryInterface(segptr ptr ptr) HGLOBALLockBytesImpl16_QueryInterface
501 cdecl HGLOBALLockBytesImpl16_AddRef(ptr) HGLOBALLockBytesImpl16_AddRef 501 cdecl HGLOBALLockBytesImpl16_AddRef(ptr) HGLOBALLockBytesImpl16_AddRef
502 cdecl HGLOBALLockBytesImpl16_Release(ptr) HGLOBALLockBytesImpl16_Release 502 cdecl HGLOBALLockBytesImpl16_Release(ptr) HGLOBALLockBytesImpl16_Release
503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_ReadAt 503 cdecl HGLOBALLockBytesImpl16_ReadAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_ReadAt
504 cdecl HGLOBALLockBytesImpl16_WriteAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_WriteAt 504 cdecl HGLOBALLockBytesImpl16_WriteAt(ptr long long ptr long ptr) HGLOBALLockBytesImpl16_WriteAt
505 cdecl HGLOBALLockBytesImpl16_Flush(ptr) HGLOBALLockBytesImpl16_Flush 505 cdecl HGLOBALLockBytesImpl16_Flush(ptr) HGLOBALLockBytesImpl16_Flush
506 cdecl HGLOBALLockBytesImpl16_SetSize(ptr long long) HGLOBALLockBytesImpl16_SetSize 506 cdecl HGLOBALLockBytesImpl16_SetSize(ptr long long) HGLOBALLockBytesImpl16_SetSize
507 cdecl HGLOBALLockBytesImpl16_LockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_LockRegion 507 cdecl HGLOBALLockBytesImpl16_LockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_LockRegion
508 cdecl HGLOBALLockBytesImpl16_UnlockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_UnlockRegion 508 cdecl HGLOBALLockBytesImpl16_UnlockRegion(ptr long long long long long) HGLOBALLockBytesImpl16_UnlockRegion
509 cdecl HGLOBALLockBytesImpl16_Stat(ptr ptr long) HGLOBALLockBytesImpl16_Stat 509 cdecl HGLOBALLockBytesImpl16_Stat(ptr ptr long) HGLOBALLockBytesImpl16_Stat

View file

@ -152,3 +152,43 @@ HRESULT WINAPI CreateFileMoniker16(LPCOLESTR16 lpszPathName,LPMONIKER* ppmk)
FIXME("(%s,%p),stub!\n",lpszPathName,ppmk); FIXME("(%s,%p),stub!\n",lpszPathName,ppmk);
return E_NOTIMPL; 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;
}

View file

@ -1,9 +1,9 @@
1 stub GETFILTERINFO 1 stub GETFILTERINFO
2 stub IMPORTGR 2 stub IMPORTGR
3 stub GETFILTERPREF 3 stub GETFILTERPREF
4 stub IMPORTEMBEDDEDGR 4 stub IMPORTEMBEDDEDGR
5 stub QD2GDI 5 stub QD2GDI
6 stub STATUSPROC 6 stub STATUSPROC
7 stub ENUMFONTFUNC 7 stub ENUMFONTFUNC
#8 WEP #8 WEP
#9 ___EXPORTEDSTUB #9 ___EXPORTEDSTUB

View file

@ -1,12 +1,12 @@
1 pascal GetUserDefaultLCID() GetUserDefaultLCID16 1 pascal GetUserDefaultLCID() GetUserDefaultLCID16
2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID16 2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID16
3 pascal -ret16 GetUserDefaultLangID() GetUserDefaultLangID16 3 pascal -ret16 GetUserDefaultLangID() GetUserDefaultLangID16
4 pascal -ret16 GetSystemDefaultLangID() GetSystemDefaultLangID16 4 pascal -ret16 GetSystemDefaultLangID() GetSystemDefaultLangID16
5 pascal GetLocaleInfoA(long long ptr word) GetLocaleInfo16 5 pascal GetLocaleInfoA(long long ptr word) GetLocaleInfo16
6 pascal -ret16 LCMapStringA(word long ptr word ptr word) LCMapString16 6 pascal -ret16 LCMapStringA(word long ptr word ptr word) LCMapString16
7 pascal -ret16 GetStringTypeA(long long str word ptr) GetStringType16 7 pascal -ret16 GetStringTypeA(long long str word ptr) GetStringType16
8 pascal -ret16 CompareStringA(long long str word str word) CompareString16 8 pascal -ret16 CompareStringA(long long str word str word) CompareString16
9 pascal -ret16 RegisterNLSInfoChanged(ptr) RegisterNLSInfoChanged16 9 pascal -ret16 RegisterNLSInfoChanged(ptr) RegisterNLSInfoChanged16
#10 stub WEP #10 stub WEP
11 stub LIBMAIN 11 stub LIBMAIN
12 stub NOTIFYWINDOWPROC 12 stub NOTIFYWINDOWPROC

View file

@ -1,3 +1,3 @@
1 stub DLLGETCLASSOBJECT 1 stub DLLGETCLASSOBJECT
#2 WEP #2 WEP
#3 ___EXPORTEDSTUB #3 ___EXPORTEDSTUB

View file

@ -1,7 +1,7 @@
#1 stub WEP #1 stub WEP
2 stub ROT16_ISRUNNING16 2 stub ROT16_ISRUNNING16
3 stub ISWIN32SHANDLE 3 stub ISWIN32SHANDLE
4 stub ___EXPORTEDSTUB 4 stub ___EXPORTEDSTUB
5 stub COTHKCOMMON 5 stub COTHKCOMMON
6 stub ROT16_GETTIMEOFLASTCHANGE16 6 stub ROT16_GETTIMEOFLASTCHANGE16
7 stub ROT16_GETOBJECT16 7 stub ROT16_GETOBJECT16

View file

@ -1,269 +1,269 @@
@ stdcall BindMoniker(ptr long ptr ptr) @ stdcall BindMoniker(ptr long ptr ptr)
@ stub CLIPFORMAT_UserFree @ stub CLIPFORMAT_UserFree
@ stub CLIPFORMAT_UserMarshal @ stub CLIPFORMAT_UserMarshal
@ stub CLIPFORMAT_UserSize @ stub CLIPFORMAT_UserSize
@ stub CLIPFORMAT_UserUnmarshal @ stub CLIPFORMAT_UserUnmarshal
@ stdcall CLSIDFromProgID(wstr ptr) @ stdcall CLSIDFromProgID(wstr ptr)
@ stdcall CLSIDFromString(wstr ptr) @ stdcall CLSIDFromString(wstr ptr)
@ stdcall CoAddRefServerProcess() @ stdcall CoAddRefServerProcess()
@ stdcall CoBuildVersion() @ stdcall CoBuildVersion()
@ stdcall CoCopyProxy(ptr ptr) @ stdcall CoCopyProxy(ptr ptr)
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) @ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
@ stdcall CoCreateGuid(ptr) @ stdcall CoCreateGuid(ptr)
@ stdcall CoCreateInstance(ptr ptr long ptr ptr) @ stdcall CoCreateInstance(ptr ptr long ptr ptr)
@ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr) @ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr)
@ stdcall CoDisconnectObject(ptr long) @ stdcall CoDisconnectObject(ptr long)
@ stdcall CoDosDateTimeToFileTime(long long ptr) kernel32.DosDateTimeToFileTime @ stdcall CoDosDateTimeToFileTime(long long ptr) kernel32.DosDateTimeToFileTime
@ stdcall CoFileTimeNow(ptr) @ stdcall CoFileTimeNow(ptr)
@ stdcall CoFileTimeToDosDateTime(ptr ptr ptr) kernel32.FileTimeToDosDateTime @ stdcall CoFileTimeToDosDateTime(ptr ptr ptr) kernel32.FileTimeToDosDateTime
@ stdcall CoFreeAllLibraries() @ stdcall CoFreeAllLibraries()
@ stdcall CoFreeLibrary(long) @ stdcall CoFreeLibrary(long)
@ stdcall CoFreeUnusedLibraries() @ stdcall CoFreeUnusedLibraries()
@ stub CoGetCallContext #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED @ stub CoGetCallContext #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
@ stub CoGetCallerTID @ stub CoGetCallerTID
@ stdcall CoGetClassObject(ptr long ptr ptr ptr) @ stdcall CoGetClassObject(ptr long ptr ptr ptr)
@ stub CoGetCurrentLogicalThreadId @ stub CoGetCurrentLogicalThreadId
@ stdcall CoGetCurrentProcess() @ stdcall CoGetCurrentProcess()
@ stub CoGetInstanceFromFile #@ stdcall (ptr ptr ptr long wstr long ptr) return 0,ERR_NOTIMPLEMENTED @ 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 @ stub CoGetInstanceFromIStorage #@ stdcall (ptr ptr ptr long ptr long ptr) return 0,ERR_NOTIMPLEMENTED
@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) @ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr)
@ stdcall CoGetMalloc(long ptr) @ stdcall CoGetMalloc(long ptr)
@ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long) @ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long)
@ stub CoGetObject @ stub CoGetObject
@ stdcall CoGetPSClsid(ptr ptr) @ stdcall CoGetPSClsid(ptr ptr)
@ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr) @ stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr)
@ stdcall CoGetState(ptr) @ stdcall CoGetState(ptr)
@ stub CoGetTIDFromIPID @ stub CoGetTIDFromIPID
@ stdcall CoGetTreatAsClass(ptr ptr) @ stdcall CoGetTreatAsClass(ptr ptr)
@ stub CoImpersonateClient @ stub CoImpersonateClient
@ stdcall CoInitialize(ptr) @ stdcall CoInitialize(ptr)
@ stdcall CoInitializeEx(ptr long) @ stdcall CoInitializeEx(ptr long)
@ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr) @ stdcall CoInitializeSecurity(ptr long ptr ptr long long ptr long ptr)
@ stdcall CoInitializeWOW(long long) @ stdcall CoInitializeWOW(long long)
@ stdcall CoIsHandlerConnected(ptr) @ stdcall CoIsHandlerConnected(ptr)
@ stdcall CoIsOle1Class (ptr) @ stdcall CoIsOle1Class (ptr)
@ stdcall CoLoadLibrary(wstr long) @ stdcall CoLoadLibrary(wstr long)
@ stdcall CoLockObjectExternal(ptr long long) @ stdcall CoLockObjectExternal(ptr long long)
@ stdcall CoMarshalHresult(ptr long) @ stdcall CoMarshalHresult(ptr long)
@ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr) @ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr)
@ stdcall CoMarshalInterface(ptr ptr ptr long ptr long) @ stdcall CoMarshalInterface(ptr ptr ptr long ptr long)
@ stub CoQueryAuthenticationServices @ stub CoQueryAuthenticationServices
@ stub CoQueryClientBlanket @ stub CoQueryClientBlanket
@ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr) @ stdcall CoQueryProxyBlanket(ptr ptr ptr ptr ptr ptr ptr ptr)
@ stub CoQueryReleaseObject @ stub CoQueryReleaseObject
@ stub CoRegisterChannelHook @ stub CoRegisterChannelHook
@ stdcall CoRegisterClassObject(ptr ptr long long ptr) @ stdcall CoRegisterClassObject(ptr ptr long long ptr)
@ stdcall CoRegisterMallocSpy (ptr) @ stdcall CoRegisterMallocSpy (ptr)
@ stdcall CoRegisterMessageFilter(ptr ptr) @ stdcall CoRegisterMessageFilter(ptr ptr)
@ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED @ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
@ stub CoRegisterSurrogate @ stub CoRegisterSurrogate
@ stdcall CoReleaseMarshalData(ptr) @ stdcall CoReleaseMarshalData(ptr)
@ stdcall CoReleaseServerProcess() @ stdcall CoReleaseServerProcess()
@ stdcall CoResumeClassObjects() @ stdcall CoResumeClassObjects()
@ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED @ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED
@ stdcall CoRevokeClassObject(long) @ stdcall CoRevokeClassObject(long)
@ stdcall CoRevokeMallocSpy() @ stdcall CoRevokeMallocSpy()
@ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long) @ stdcall CoSetProxyBlanket(ptr long long wstr long long ptr long)
@ stdcall CoSetState(ptr) @ stdcall CoSetState(ptr)
@ stdcall CoSuspendClassObjects() @ stdcall CoSuspendClassObjects()
@ stub CoSwitchCallContext @ stub CoSwitchCallContext
@ stdcall CoTaskMemAlloc(long) @ stdcall CoTaskMemAlloc(long)
@ stdcall CoTaskMemFree(ptr) @ stdcall CoTaskMemFree(ptr)
@ stdcall CoTaskMemRealloc(ptr long) @ stdcall CoTaskMemRealloc(ptr long)
@ stdcall CoTreatAsClass(ptr ptr) @ stdcall CoTreatAsClass(ptr ptr)
@ stdcall CoUninitialize() @ stdcall CoUninitialize()
@ stub CoUnloadingWOW @ stub CoUnloadingWOW
@ stdcall CoUnmarshalHresult(ptr ptr) @ stdcall CoUnmarshalHresult(ptr ptr)
@ stdcall CoUnmarshalInterface(ptr ptr ptr) @ stdcall CoUnmarshalInterface(ptr ptr ptr)
@ stdcall CreateAntiMoniker(ptr) @ stdcall CreateAntiMoniker(ptr)
@ stdcall CreateBindCtx(long ptr) @ stdcall CreateBindCtx(long ptr)
@ stdcall CreateClassMoniker(ptr ptr) @ stdcall CreateClassMoniker(ptr ptr)
@ stdcall CreateDataAdviseHolder(ptr) @ stdcall CreateDataAdviseHolder(ptr)
@ stdcall CreateDataCache(ptr ptr ptr ptr) @ stdcall CreateDataCache(ptr ptr ptr ptr)
@ stdcall CreateErrorInfo(ptr) @ stdcall CreateErrorInfo(ptr)
@ stdcall CreateFileMoniker(wstr ptr) @ stdcall CreateFileMoniker(wstr ptr)
@ stdcall CreateGenericComposite(ptr ptr ptr) @ stdcall CreateGenericComposite(ptr ptr ptr)
@ stdcall CreateILockBytesOnHGlobal(ptr long ptr) @ stdcall CreateILockBytesOnHGlobal(ptr long ptr)
@ stdcall CreateItemMoniker(wstr wstr ptr) @ stdcall CreateItemMoniker(wstr wstr ptr)
@ stub CreateObjrefMoniker @ stub CreateObjrefMoniker
@ stdcall CreateOleAdviseHolder(ptr) @ stdcall CreateOleAdviseHolder(ptr)
@ stub CreatePointerMoniker #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED @ stub CreatePointerMoniker #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
@ stdcall CreateStreamOnHGlobal(ptr long ptr) @ stdcall CreateStreamOnHGlobal(ptr long ptr)
@ stdcall DllDebugObjectRPCHook(long ptr) @ stdcall DllDebugObjectRPCHook(long ptr)
@ stdcall -private DllGetClassObject (ptr ptr ptr) OLE32_DllGetClassObject @ stdcall -private DllGetClassObject (ptr ptr ptr) OLE32_DllGetClassObject
@ stub DllGetClassObjectWOW @ stub DllGetClassObjectWOW
@ stdcall -private DllRegisterServer() @ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer() @ stdcall -private DllUnregisterServer()
@ stdcall DoDragDrop(ptr ptr long ptr) @ stdcall DoDragDrop(ptr ptr long ptr)
@ stub EnableHookObject @ stub EnableHookObject
@ stdcall FmtIdToPropStgName(ptr wstr) @ stdcall FmtIdToPropStgName(ptr wstr)
@ stdcall FreePropVariantArray(long ptr) @ stdcall FreePropVariantArray(long ptr)
@ stdcall GetClassFile(wstr ptr) @ stdcall GetClassFile(wstr ptr)
@ stdcall GetConvertStg(ptr) @ stdcall GetConvertStg(ptr)
@ stub GetDocumentBitStg @ stub GetDocumentBitStg
@ stdcall GetErrorInfo(long ptr) @ stdcall GetErrorInfo(long ptr)
@ stdcall GetHGlobalFromILockBytes(ptr ptr) @ stdcall GetHGlobalFromILockBytes(ptr ptr)
@ stdcall GetHGlobalFromStream(ptr ptr) @ stdcall GetHGlobalFromStream(ptr ptr)
@ stub GetHookInterface @ stub GetHookInterface
@ stdcall GetRunningObjectTable(long ptr) @ stdcall GetRunningObjectTable(long ptr)
@ stub HACCEL_UserFree @ stub HACCEL_UserFree
@ stub HACCEL_UserMarshal @ stub HACCEL_UserMarshal
@ stub HACCEL_UserSize @ stub HACCEL_UserSize
@ stub HACCEL_UserUnmarshal @ stub HACCEL_UserUnmarshal
@ stub HBITMAP_UserFree @ stub HBITMAP_UserFree
@ stub HBITMAP_UserMarshal @ stub HBITMAP_UserMarshal
@ stub HBITMAP_UserSize @ stub HBITMAP_UserSize
@ stub HBITMAP_UserUnmarshal @ stub HBITMAP_UserUnmarshal
@ stub HBRUSH_UserFree @ stub HBRUSH_UserFree
@ stub HBRUSH_UserMarshal @ stub HBRUSH_UserMarshal
@ stub HBRUSH_UserSize @ stub HBRUSH_UserSize
@ stub HBRUSH_UserUnmarshal @ stub HBRUSH_UserUnmarshal
@ stub HENHMETAFILE_UserFree @ stub HENHMETAFILE_UserFree
@ stub HENHMETAFILE_UserMarshal @ stub HENHMETAFILE_UserMarshal
@ stub HENHMETAFILE_UserSize @ stub HENHMETAFILE_UserSize
@ stub HENHMETAFILE_UserUnmarshal @ stub HENHMETAFILE_UserUnmarshal
@ stub HGLOBAL_UserFree @ stub HGLOBAL_UserFree
@ stub HGLOBAL_UserMarshal @ stub HGLOBAL_UserMarshal
@ stub HGLOBAL_UserSize @ stub HGLOBAL_UserSize
@ stub HGLOBAL_UserUnmarshal @ stub HGLOBAL_UserUnmarshal
@ stub HMENU_UserFree @ stub HMENU_UserFree
@ stub HMENU_UserMarshal @ stub HMENU_UserMarshal
@ stub HMENU_UserSize @ stub HMENU_UserSize
@ stub HMENU_UserUnmarshal @ stub HMENU_UserUnmarshal
@ stub HMETAFILEPICT_UserFree @ stub HMETAFILEPICT_UserFree
@ stub HMETAFILEPICT_UserMarshal @ stub HMETAFILEPICT_UserMarshal
@ stub HMETAFILEPICT_UserSize @ stub HMETAFILEPICT_UserSize
@ stub HMETAFILEPICT_UserUnmarshal @ stub HMETAFILEPICT_UserUnmarshal
@ stub HMETAFILE_UserFree @ stub HMETAFILE_UserFree
@ stub HMETAFILE_UserMarshal @ stub HMETAFILE_UserMarshal
@ stub HMETAFILE_UserSize @ stub HMETAFILE_UserSize
@ stub HMETAFILE_UserUnmarshal @ stub HMETAFILE_UserUnmarshal
@ stub HPALETTE_UserFree @ stub HPALETTE_UserFree
@ stub HPALETTE_UserMarshal @ stub HPALETTE_UserMarshal
@ stub HPALETTE_UserSize @ stub HPALETTE_UserSize
@ stub HPALETTE_UserUnmarshal @ stub HPALETTE_UserUnmarshal
@ stub HWND_UserFree @ stub HWND_UserFree
@ stub HWND_UserMarshal @ stub HWND_UserMarshal
@ stub HWND_UserSize @ stub HWND_UserSize
@ stub HWND_UserUnmarshal @ stub HWND_UserUnmarshal
@ stdcall IIDFromString(wstr ptr) CLSIDFromString @ stdcall IIDFromString(wstr ptr) CLSIDFromString
@ stub I_RemoteMain @ stub I_RemoteMain
@ stdcall IsAccelerator(long long ptr long) @ stdcall IsAccelerator(long long ptr long)
@ stdcall IsEqualGUID(ptr ptr) @ stdcall IsEqualGUID(ptr ptr)
@ stub IsValidIid @ stub IsValidIid
@ stdcall IsValidInterface(ptr) @ stdcall IsValidInterface(ptr)
@ stub IsValidPtrIn @ stub IsValidPtrIn
@ stub IsValidPtrOut @ stub IsValidPtrOut
@ stdcall MkParseDisplayName(ptr ptr ptr ptr) @ stdcall MkParseDisplayName(ptr ptr ptr ptr)
@ stdcall MonikerCommonPrefixWith(ptr ptr ptr) @ stdcall MonikerCommonPrefixWith(ptr ptr ptr)
@ stub MonikerRelativePathTo @ stub MonikerRelativePathTo
@ stdcall OleBuildVersion() @ stdcall OleBuildVersion()
@ stdcall OleConvertIStorageToOLESTREAM(ptr ptr) @ stdcall OleConvertIStorageToOLESTREAM(ptr ptr)
@ stub OleConvertIStorageToOLESTREAMEx @ stub OleConvertIStorageToOLESTREAMEx
@ stdcall OleConvertOLESTREAMToIStorage(ptr ptr ptr) @ stdcall OleConvertOLESTREAMToIStorage(ptr ptr ptr)
@ stub OleConvertOLESTREAMToIStorageEx @ stub OleConvertOLESTREAMToIStorageEx
@ stdcall OleCreate(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreate(ptr ptr long ptr ptr ptr ptr)
@ stdcall OleCreateDefaultHandler(ptr ptr ptr ptr) @ stdcall OleCreateDefaultHandler(ptr ptr ptr ptr)
@ stub OleCreateEmbeddingHelper @ stub OleCreateEmbeddingHelper
@ stub OleCreateEx @ stub OleCreateEx
@ stdcall OleCreateFromData(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateFromData(ptr ptr long ptr ptr ptr ptr)
@ stub OleCreateFromDataEx @ stub OleCreateFromDataEx
@ stdcall OleCreateFromFile(ptr ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateFromFile(ptr ptr ptr long ptr ptr ptr ptr)
@ stub OleCreateFromFileEx @ stub OleCreateFromFileEx
@ stdcall OleCreateLink(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateLink(ptr ptr long ptr ptr ptr ptr)
@ stub OleCreateLinkEx @ stub OleCreateLinkEx
@ stdcall OleCreateLinkFromData(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateLinkFromData(ptr ptr long ptr ptr ptr ptr)
@ stub OleCreateLinkFromDataEx @ stub OleCreateLinkFromDataEx
@ stdcall OleCreateLinkToFile(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateLinkToFile(ptr ptr long ptr ptr ptr ptr)
@ stub OleCreateLinkToFileEx @ stub OleCreateLinkToFileEx
@ stdcall OleCreateMenuDescriptor(long ptr) @ stdcall OleCreateMenuDescriptor(long ptr)
@ stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr) @ stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr)
@ stdcall OleDestroyMenuDescriptor(long) @ stdcall OleDestroyMenuDescriptor(long)
@ stdcall OleDoAutoConvert(ptr ptr) @ stdcall OleDoAutoConvert(ptr ptr)
@ stdcall OleDraw(ptr long long ptr) @ stdcall OleDraw(ptr long long ptr)
@ stdcall OleDuplicateData(long long long) @ stdcall OleDuplicateData(long long long)
@ stdcall OleFlushClipboard() @ stdcall OleFlushClipboard()
@ stdcall OleGetAutoConvert(ptr ptr) @ stdcall OleGetAutoConvert(ptr ptr)
@ stdcall OleGetClipboard(ptr) @ stdcall OleGetClipboard(ptr)
@ stdcall OleGetIconOfClass(ptr ptr long) @ stdcall OleGetIconOfClass(ptr ptr long)
@ stub OleGetIconOfFile @ stub OleGetIconOfFile
@ stdcall OleInitialize(ptr) @ stdcall OleInitialize(ptr)
@ stdcall OleInitializeWOW(long) @ stdcall OleInitializeWOW(long long)
@ stdcall OleIsCurrentClipboard(ptr) @ stdcall OleIsCurrentClipboard(ptr)
@ stdcall OleIsRunning(ptr) @ stdcall OleIsRunning(ptr)
@ stdcall OleLoad(ptr ptr ptr ptr) @ stdcall OleLoad(ptr ptr ptr ptr)
@ stdcall OleLoadFromStream(ptr ptr ptr) @ stdcall OleLoadFromStream(ptr ptr ptr)
@ stdcall OleLockRunning(ptr long long) @ stdcall OleLockRunning(ptr long long)
@ stdcall OleMetafilePictFromIconAndLabel(long ptr ptr long) @ stdcall OleMetafilePictFromIconAndLabel(long ptr ptr long)
@ stub OleNoteObjectVisible @ stub OleNoteObjectVisible
@ stdcall OleQueryCreateFromData(ptr) @ stdcall OleQueryCreateFromData(ptr)
@ stdcall OleQueryLinkFromData(ptr) @ stdcall OleQueryLinkFromData(ptr)
@ stdcall OleRegEnumFormatEtc(ptr long ptr) @ stdcall OleRegEnumFormatEtc(ptr long ptr)
@ stdcall OleRegEnumVerbs(long ptr) @ stdcall OleRegEnumVerbs(long ptr)
@ stdcall OleRegGetMiscStatus(ptr long ptr) @ stdcall OleRegGetMiscStatus(ptr long ptr)
@ stdcall OleRegGetUserType(long long ptr) @ stdcall OleRegGetUserType(long long ptr)
@ stdcall OleRun(ptr) @ stdcall OleRun(ptr)
@ stdcall OleSave(ptr ptr long) @ stdcall OleSave(ptr ptr long)
@ stdcall OleSaveToStream(ptr ptr) @ stdcall OleSaveToStream(ptr ptr)
@ stdcall OleSetAutoConvert(ptr ptr) @ stdcall OleSetAutoConvert(ptr ptr)
@ stdcall OleSetClipboard(ptr) @ stdcall OleSetClipboard(ptr)
@ stdcall OleSetContainedObject(ptr long) @ stdcall OleSetContainedObject(ptr long)
@ stdcall OleSetMenuDescriptor(long long long ptr ptr) @ stdcall OleSetMenuDescriptor(long long long ptr ptr)
@ stdcall OleTranslateAccelerator(ptr ptr ptr) @ stdcall OleTranslateAccelerator(ptr ptr ptr)
@ stdcall OleUninitialize() @ stdcall OleUninitialize()
@ stub OpenOrCreateStream @ stub OpenOrCreateStream
@ stdcall ProgIDFromCLSID(ptr ptr) @ stdcall ProgIDFromCLSID(ptr ptr)
@ stdcall PropStgNameToFmtId(wstr ptr) @ stdcall PropStgNameToFmtId(wstr ptr)
@ stdcall PropSysAllocString(wstr) @ stdcall PropSysAllocString(wstr)
@ stdcall PropSysFreeString(wstr) @ stdcall PropSysFreeString(wstr)
@ stdcall PropVariantClear(ptr) @ stdcall PropVariantClear(ptr)
@ stdcall PropVariantCopy(ptr ptr) @ stdcall PropVariantCopy(ptr ptr)
@ stdcall ReadClassStg(ptr ptr) @ stdcall ReadClassStg(ptr ptr)
@ stdcall ReadClassStm(ptr ptr) @ stdcall ReadClassStm(ptr ptr)
@ stdcall ReadFmtUserTypeStg(ptr ptr ptr) @ stdcall ReadFmtUserTypeStg(ptr ptr ptr)
@ stub ReadOleStg @ stub ReadOleStg
@ stub ReadStringStream @ stub ReadStringStream
@ stdcall RegisterDragDrop(long ptr) @ stdcall RegisterDragDrop(long ptr)
@ stdcall ReleaseStgMedium(ptr) @ stdcall ReleaseStgMedium(ptr)
@ stdcall RevokeDragDrop(long) @ stdcall RevokeDragDrop(long)
@ stub SNB_UserFree @ stub SNB_UserFree
@ stub SNB_UserMarshal @ stub SNB_UserMarshal
@ stub SNB_UserSize @ stub SNB_UserSize
@ stub SNB_UserUnmarshal @ stub SNB_UserUnmarshal
@ stub STGMEDIUM_UserFree @ stub STGMEDIUM_UserFree
@ stub STGMEDIUM_UserMarshal @ stub STGMEDIUM_UserMarshal
@ stub STGMEDIUM_UserSize @ stub STGMEDIUM_UserSize
@ stub STGMEDIUM_UserUnmarshal @ stub STGMEDIUM_UserUnmarshal
@ stdcall SetConvertStg(ptr long) @ stdcall SetConvertStg(ptr long)
@ stub SetDocumentBitStg @ stub SetDocumentBitStg
@ stdcall SetErrorInfo(long ptr) @ stdcall SetErrorInfo(long ptr)
@ stdcall StgCreateDocfile(wstr long long ptr) @ stdcall StgCreateDocfile(wstr long long ptr)
@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr) @ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)
@ stdcall StgCreatePropSetStg(ptr long ptr) @ stdcall StgCreatePropSetStg(ptr long ptr)
@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr) @ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)
@ stub StgGetIFillLockBytesOnFile @ stub StgGetIFillLockBytesOnFile
@ stub StgGetIFillLockBytesOnILockBytes @ stub StgGetIFillLockBytesOnILockBytes
@ stdcall StgIsStorageFile(wstr) @ stdcall StgIsStorageFile(wstr)
@ stdcall StgIsStorageILockBytes(ptr) @ stdcall StgIsStorageILockBytes(ptr)
@ stub StgOpenAsyncDocfileOnIFillLockBytes @ stub StgOpenAsyncDocfileOnIFillLockBytes
@ stdcall StgOpenStorage(wstr ptr long ptr long ptr) @ stdcall StgOpenStorage(wstr ptr long ptr long ptr)
@ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr) @ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr)
@ stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr) @ stdcall StgOpenStorageOnILockBytes(ptr ptr long long long ptr)
@ stdcall StgSetTimes(wstr ptr ptr ptr ) @ stdcall StgSetTimes(wstr ptr ptr ptr )
@ stdcall StringFromCLSID(ptr ptr) @ stdcall StringFromCLSID(ptr ptr)
@ stdcall StringFromGUID2(ptr ptr long) @ stdcall StringFromGUID2(ptr ptr long)
@ stdcall StringFromIID(ptr ptr) StringFromCLSID @ stdcall StringFromIID(ptr ptr) StringFromCLSID
@ stub UpdateDCOMSettings @ stub UpdateDCOMSettings
@ stub UtConvertDvtd16toDvtd32 @ stub UtConvertDvtd16toDvtd32
@ stub UtConvertDvtd32toDvtd16 @ stub UtConvertDvtd32toDvtd16
@ stub UtGetDvtd16Info @ stub UtGetDvtd16Info
@ stub UtGetDvtd32Info @ stub UtGetDvtd32Info
@ stub WdtpInterfacePointer_UserFree @ stub WdtpInterfacePointer_UserFree
@ stub WdtpInterfacePointer_UserMarshal @ stub WdtpInterfacePointer_UserMarshal
@ stub WdtpInterfacePointer_UserSize @ stub WdtpInterfacePointer_UserSize
@ stub WdtpInterfacePointer_UserUnmarshal @ stub WdtpInterfacePointer_UserUnmarshal
@ stdcall WriteClassStg(ptr ptr) @ stdcall WriteClassStg(ptr ptr)
@ stdcall WriteClassStm(ptr ptr) @ stdcall WriteClassStm(ptr ptr)
@ stdcall WriteFmtUserTypeStg(ptr long ptr) @ stdcall WriteFmtUserTypeStg(ptr long ptr)
@ stub WriteOleStg @ stub WriteOleStg
@ stub WriteStringStream @ stub WriteStringStream

View file

@ -43,7 +43,7 @@ typedef struct OleAdviseHolderImpl
{ {
const IOleAdviseHolderVtbl *lpVtbl; const IOleAdviseHolderVtbl *lpVtbl;
DWORD ref; LONG ref;
DWORD maxSinks; DWORD maxSinks;
IAdviseSink** arrayOfSinks; IAdviseSink** arrayOfSinks;
@ -357,7 +357,7 @@ typedef struct DataAdviseHolder
{ {
const IDataAdviseHolderVtbl *lpVtbl; const IDataAdviseHolderVtbl *lpVtbl;
DWORD ref; LONG ref;
DWORD maxCons; DWORD maxCons;
DataAdviseConnection* Connections; DataAdviseConnection* Connections;
} DataAdviseHolder; } DataAdviseHolder;

View file

@ -89,7 +89,7 @@ const CLSID CLSID_PSFactoryBuffer = { 0x00000320, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0,
*/ */
typedef struct _CFStub { typedef struct _CFStub {
const IRpcStubBufferVtbl *lpvtbl; const IRpcStubBufferVtbl *lpvtbl;
DWORD ref; LONG ref;
LPUNKNOWN pUnkServer; LPUNKNOWN pUnkServer;
} CFStub; } CFStub;
@ -117,7 +117,10 @@ CFStub_Release(LPRPCSTUBBUFFER iface) {
ULONG ref; ULONG ref;
ref = InterlockedDecrement(&This->ref); ref = InterlockedDecrement(&This->ref);
if (!ref) HeapFree(GetProcessHeap(),0,This); if (!ref) {
IRpcStubBuffer_Disconnect(iface);
HeapFree(GetProcessHeap(),0,This);
}
return ref; return ref;
} }
@ -134,9 +137,12 @@ static void WINAPI
CFStub_Disconnect(LPRPCSTUBBUFFER iface) { CFStub_Disconnect(LPRPCSTUBBUFFER iface) {
CFStub *This = (CFStub *)iface; CFStub *This = (CFStub *)iface;
IUnknown_Release(This->pUnkServer); if (This->pUnkServer) {
This->pUnkServer = NULL; IUnknown_Release(This->pUnkServer);
This->pUnkServer = NULL;
}
} }
static HRESULT WINAPI static HRESULT WINAPI
CFStub_Invoke( CFStub_Invoke(
LPRPCSTUBBUFFER iface,RPCOLEMESSAGE* msg,IRpcChannelBuffer* chanbuf LPRPCSTUBBUFFER iface,RPCOLEMESSAGE* msg,IRpcChannelBuffer* chanbuf
@ -269,7 +275,7 @@ CFStub_Construct(LPRPCSTUBBUFFER *ppv) {
typedef struct _CFProxy { typedef struct _CFProxy {
const IClassFactoryVtbl *lpvtbl_cf; const IClassFactoryVtbl *lpvtbl_cf;
const IRpcProxyBufferVtbl *lpvtbl_proxy; const IRpcProxyBufferVtbl *lpvtbl_proxy;
DWORD ref; LONG ref;
IRpcChannelBuffer *chanbuf; IRpcChannelBuffer *chanbuf;
IUnknown *outer_unknown; IUnknown *outer_unknown;
@ -460,7 +466,7 @@ CFProxy_Construct(IUnknown *pUnkOuter, LPVOID *ppv,LPVOID *ppProxy) {
typedef struct typedef struct
{ {
const IRpcStubBufferVtbl *lpVtbl; const IRpcStubBufferVtbl *lpVtbl;
ULONG refs; LONG refs;
IRemUnknown *iface; IRemUnknown *iface;
} RemUnkStub; } RemUnkStub;
@ -546,12 +552,15 @@ static HRESULT WINAPI RemUnkStub_Invoke(LPRPCSTUBBUFFER iface,
hr = IRemUnknown_RemQueryInterface(This->iface, &ipid, cRefs, cIids, iids, &pQIResults); hr = IRemUnknown_RemQueryInterface(This->iface, &ipid, cRefs, cIids, iids, &pQIResults);
/* out */ /* out */
pMsg->cbBuffer = cIids * sizeof(REMQIRESULT); pMsg->cbBuffer = cIids * sizeof(REMQIRESULT) + sizeof(HRESULT);
I_RpcGetBuffer((RPC_MESSAGE *)pMsg); I_RpcGetBuffer((RPC_MESSAGE *)pMsg);
if (hr) return hr;
buf = pMsg->Buffer; buf = pMsg->Buffer;
*(HRESULT *)buf = hr;
buf += sizeof(HRESULT);
if (hr) return hr;
/* FIXME: pQIResults is a unique pointer so pQIResults can be NULL! */ /* FIXME: pQIResults is a unique pointer so pQIResults can be NULL! */
memcpy(buf, pQIResults, cIids * sizeof(REMQIRESULT)); memcpy(buf, pQIResults, cIids * sizeof(REMQIRESULT));
@ -655,7 +664,7 @@ static HRESULT RemUnkStub_Construct(IRpcStubBuffer **ppStub)
RemUnkStub *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); RemUnkStub *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
if (!This) return E_OUTOFMEMORY; if (!This) return E_OUTOFMEMORY;
This->lpVtbl = &RemUnkStub_VTable; This->lpVtbl = &RemUnkStub_VTable;
This->refs = 0; This->refs = 1;
This->iface = NULL; This->iface = NULL;
*ppStub = (IRpcStubBuffer*)This; *ppStub = (IRpcStubBuffer*)This;
return S_OK; return S_OK;
@ -665,7 +674,7 @@ static HRESULT RemUnkStub_Construct(IRpcStubBuffer **ppStub)
typedef struct _RemUnkProxy { typedef struct _RemUnkProxy {
const IRemUnknownVtbl *lpvtbl_remunk; const IRemUnknownVtbl *lpvtbl_remunk;
const IRpcProxyBufferVtbl *lpvtbl_proxy; const IRpcProxyBufferVtbl *lpvtbl_proxy;
DWORD refs; LONG refs;
IRpcChannelBuffer *chan; IRpcChannelBuffer *chan;
IUnknown *outer_unknown; IUnknown *outer_unknown;
@ -745,8 +754,14 @@ static HRESULT WINAPI RemUnkProxy_RemQueryInterface(LPREMUNKNOWN iface,
hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status); hr = IRpcChannelBuffer_SendReceive(This->chan, &msg, &status);
buf = msg.Buffer;
if (SUCCEEDED(hr)) {
hr = *(HRESULT *)buf;
buf += sizeof(HRESULT);
}
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
buf = msg.Buffer;
*ppQIResults = CoTaskMemAlloc(cIids*sizeof(REMQIRESULT)); *ppQIResults = CoTaskMemAlloc(cIids*sizeof(REMQIRESULT));
memcpy(*ppQIResults, buf, cIids*sizeof(REMQIRESULT)); memcpy(*ppQIResults, buf, cIids*sizeof(REMQIRESULT));
} }

View file

@ -88,7 +88,7 @@ static inline void get_rpc_endpoint(LPWSTR endpoint, const OXID *oxid)
typedef struct typedef struct
{ {
const IRpcChannelBufferVtbl *lpVtbl; const IRpcChannelBufferVtbl *lpVtbl;
DWORD refs; LONG refs;
} RpcChannelBuffer; } RpcChannelBuffer;
typedef struct typedef struct
@ -212,11 +212,15 @@ static DWORD WINAPI rpc_sendreceive_thread(LPVOID param)
static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus) static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPCOLEMESSAGE *olemsg, ULONG *pstatus)
{ {
HRESULT hr = S_OK; HRESULT hr = S_OK;
RPC_MESSAGE *msg = (RPC_MESSAGE *)olemsg;
RPC_STATUS status; RPC_STATUS status;
DWORD index; DWORD index;
struct dispatch_params *params; struct dispatch_params *params;
DWORD tid; DWORD tid;
IRpcStubBuffer *stub;
APARTMENT *apt;
IPID ipid;
TRACE("(%p) iMethod=%ld\n", olemsg, olemsg->iMethod); TRACE("(%p) iMethod=%ld\n", olemsg, olemsg->iMethod);
params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*params)); params = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*params));
@ -225,18 +229,43 @@ static HRESULT WINAPI RpcChannelBuffer_SendReceive(LPRPCCHANNELBUFFER iface, RPC
params->msg = olemsg; params->msg = olemsg;
params->status = RPC_S_OK; params->status = RPC_S_OK;
/* we use a separate thread here because we need to be able to /* Note: this is an optimization in the Microsoft OLE runtime that we need
* pump the message loop in the application thread: if we do not, * to copy, as shown by the test_no_couninitialize_client test. without
* any windows created by this thread will hang and RPCs that try * short-circuiting the RPC runtime in the case below, the test will
* and re-enter this STA from an incoming server thread will * deadlock on the loader lock due to the RPC runtime needing to create
* deadlock. InstallShield is an example of that. * a thread to process the RPC when this function is called indirectly
*/ * from DllMain */
params->handle = CreateThread(NULL, 0, rpc_sendreceive_thread, params, 0, &tid);
if (!params->handle) 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()); params->stub = stub;
hr = E_UNEXPECTED; 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) if (hr == S_OK)
hr = CoWaitForMultipleHandles(0, INFINITE, 1, &params->handle, &index); hr = CoWaitForMultipleHandles(0, INFINITE, 1, &params->handle, &index);
@ -431,7 +460,7 @@ static void __RPC_STUB dispatch_rpc(RPC_MESSAGE *msg)
if (!apt || !stub) if (!apt || !stub)
{ {
if (apt) apartment_release(apt); 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); return RpcRaiseException(RPC_E_DISCONNECTED);
} }

View file

@ -155,7 +155,7 @@ static const IPropertyStorageVtbl IPropertyStorage_Vtbl;
typedef struct tagPropertyStorage_impl typedef struct tagPropertyStorage_impl
{ {
const IPropertyStorageVtbl *vtbl; const IPropertyStorageVtbl *vtbl;
DWORD ref; LONG ref;
CRITICAL_SECTION cs; CRITICAL_SECTION cs;
IStream *stm; IStream *stm;
BOOL dirty; BOOL dirty;

View file

@ -956,7 +956,7 @@ typedef struct
{ {
/* IUnknown fields */ /* IUnknown fields */
const IStream16Vtbl *lpVtbl; const IStream16Vtbl *lpVtbl;
DWORD ref; LONG ref;
/* IStream16 fields */ /* IStream16 fields */
SEGPTR thisptr; /* pointer to this struct as segmented */ SEGPTR thisptr; /* pointer to this struct as segmented */
struct storage_pps_entry stde; struct storage_pps_entry stde;
@ -968,7 +968,7 @@ typedef struct
/****************************************************************************** /******************************************************************************
* IStream16_QueryInterface [STORAGE.518] * IStream16_QueryInterface [STORAGE.518]
*/ */
HRESULT WINAPI IStream16_fnQueryInterface( HRESULT IStream16_fnQueryInterface(
IStream16* iface,REFIID refiid,LPVOID *obj IStream16* iface,REFIID refiid,LPVOID *obj
) { ) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
@ -984,7 +984,7 @@ HRESULT WINAPI IStream16_fnQueryInterface(
/****************************************************************************** /******************************************************************************
* IStream16_AddRef [STORAGE.519] * IStream16_AddRef [STORAGE.519]
*/ */
ULONG WINAPI IStream16_fnAddRef(IStream16* iface) { ULONG IStream16_fnAddRef(IStream16* iface) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
return InterlockedIncrement(&This->ref); return InterlockedIncrement(&This->ref);
} }
@ -992,7 +992,7 @@ ULONG WINAPI IStream16_fnAddRef(IStream16* iface) {
/****************************************************************************** /******************************************************************************
* IStream16_Release [STORAGE.520] * IStream16_Release [STORAGE.520]
*/ */
ULONG WINAPI IStream16_fnRelease(IStream16* iface) { ULONG IStream16_fnRelease(IStream16* iface) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
ULONG ref; ULONG ref;
FlushFileBuffers(This->hf); FlushFileBuffers(This->hf);
@ -1011,7 +1011,7 @@ ULONG WINAPI IStream16_fnRelease(IStream16* iface) {
* FIXME * FIXME
* Does not handle 64 bits * Does not handle 64 bits
*/ */
HRESULT WINAPI IStream16_fnSeek( HRESULT IStream16_fnSeek(
IStream16* iface,LARGE_INTEGER offset,DWORD whence,ULARGE_INTEGER *newpos IStream16* iface,LARGE_INTEGER offset,DWORD whence,ULARGE_INTEGER *newpos
) { ) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
@ -1055,7 +1055,7 @@ HRESULT WINAPI IStream16_fnSeek(
/****************************************************************************** /******************************************************************************
* IStream16_Read [STORAGE.521] * IStream16_Read [STORAGE.521]
*/ */
HRESULT WINAPI IStream16_fnRead( HRESULT IStream16_fnRead(
IStream16* iface,void *pv,ULONG cb,ULONG *pcbRead IStream16* iface,void *pv,ULONG cb,ULONG *pcbRead
) { ) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
@ -1117,7 +1117,7 @@ HRESULT WINAPI IStream16_fnRead(
/****************************************************************************** /******************************************************************************
* IStream16_Write [STORAGE.522] * IStream16_Write [STORAGE.522]
*/ */
HRESULT WINAPI IStream16_fnWrite( HRESULT IStream16_fnWrite(
IStream16* iface,const void *pv,ULONG cb,ULONG *pcbWrite IStream16* iface,const void *pv,ULONG cb,ULONG *pcbWrite
) { ) {
IStream16Impl *This = (IStream16Impl *)iface; IStream16Impl *This = (IStream16Impl *)iface;
@ -1450,7 +1450,7 @@ typedef struct
{ {
/* IUnknown fields */ /* IUnknown fields */
const IStreamVtbl *lpVtbl; const IStreamVtbl *lpVtbl;
DWORD ref; LONG ref;
/* IStream32 fields */ /* IStream32 fields */
struct storage_pps_entry stde; struct storage_pps_entry stde;
int ppsent; int ppsent;
@ -1504,7 +1504,7 @@ typedef struct
{ {
/* IUnknown fields */ /* IUnknown fields */
const IStorage16Vtbl *lpVtbl; const IStorage16Vtbl *lpVtbl;
DWORD ref; LONG ref;
/* IStorage16 fields */ /* IStorage16 fields */
SEGPTR thisptr; /* pointer to this struct as segmented */ SEGPTR thisptr; /* pointer to this struct as segmented */
struct storage_pps_entry stde; struct storage_pps_entry stde;
@ -1515,7 +1515,7 @@ typedef struct
/****************************************************************************** /******************************************************************************
* IStorage16_QueryInterface [STORAGE.500] * IStorage16_QueryInterface [STORAGE.500]
*/ */
HRESULT WINAPI IStorage16_fnQueryInterface( HRESULT IStorage16_fnQueryInterface(
IStorage16* iface,REFIID refiid,LPVOID *obj IStorage16* iface,REFIID refiid,LPVOID *obj
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1532,7 +1532,7 @@ HRESULT WINAPI IStorage16_fnQueryInterface(
/****************************************************************************** /******************************************************************************
* IStorage16_AddRef [STORAGE.501] * IStorage16_AddRef [STORAGE.501]
*/ */
ULONG WINAPI IStorage16_fnAddRef(IStorage16* iface) { ULONG IStorage16_fnAddRef(IStorage16* iface) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
return InterlockedIncrement(&This->ref); return InterlockedIncrement(&This->ref);
} }
@ -1540,7 +1540,7 @@ ULONG WINAPI IStorage16_fnAddRef(IStorage16* iface) {
/****************************************************************************** /******************************************************************************
* IStorage16_Release [STORAGE.502] * IStorage16_Release [STORAGE.502]
*/ */
ULONG WINAPI IStorage16_fnRelease(IStorage16* iface) { ULONG IStorage16_fnRelease(IStorage16* iface) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
ULONG ref; ULONG ref;
ref = InterlockedDecrement(&This->ref); ref = InterlockedDecrement(&This->ref);
@ -1555,7 +1555,7 @@ ULONG WINAPI IStorage16_fnRelease(IStorage16* iface) {
/****************************************************************************** /******************************************************************************
* IStorage16_Stat [STORAGE.517] * IStorage16_Stat [STORAGE.517]
*/ */
HRESULT WINAPI IStorage16_fnStat( HRESULT IStorage16_fnStat(
LPSTORAGE16 iface,STATSTG16 *pstatstg, DWORD grfStatFlag LPSTORAGE16 iface,STATSTG16 *pstatstg, DWORD grfStatFlag
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1583,7 +1583,7 @@ HRESULT WINAPI IStorage16_fnStat(
/****************************************************************************** /******************************************************************************
* IStorage16_Commit [STORAGE.509] * IStorage16_Commit [STORAGE.509]
*/ */
HRESULT WINAPI IStorage16_fnCommit( HRESULT IStorage16_fnCommit(
LPSTORAGE16 iface,DWORD commitflags LPSTORAGE16 iface,DWORD commitflags
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1596,7 +1596,7 @@ HRESULT WINAPI IStorage16_fnCommit(
/****************************************************************************** /******************************************************************************
* IStorage16_CopyTo [STORAGE.507] * 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; IStorage16Impl *This = (IStorage16Impl *)iface;
FIXME("IStorage16(%p)->(0x%08lx,%s,%p,%p),stub!\n", FIXME("IStorage16(%p)->(0x%08lx,%s,%p,%p),stub!\n",
This,ciidExclude,debugstr_guid(rgiidExclude),SNB16Exclude,pstgDest This,ciidExclude,debugstr_guid(rgiidExclude),SNB16Exclude,pstgDest
@ -1608,7 +1608,7 @@ HRESULT WINAPI IStorage16_fnCopyTo(LPSTORAGE16 iface,DWORD ciidExclude,const IID
/****************************************************************************** /******************************************************************************
* IStorage16_CreateStorage [STORAGE.505] * IStorage16_CreateStorage [STORAGE.505]
*/ */
HRESULT WINAPI IStorage16_fnCreateStorage( HRESULT IStorage16_fnCreateStorage(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD dwStgFormat,DWORD reserved2, IStorage16 **ppstg LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD dwStgFormat,DWORD reserved2, IStorage16 **ppstg
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1673,7 +1673,7 @@ HRESULT WINAPI IStorage16_fnCreateStorage(
/****************************************************************************** /******************************************************************************
* IStorage16_CreateStream [STORAGE.503] * IStorage16_CreateStream [STORAGE.503]
*/ */
HRESULT WINAPI IStorage16_fnCreateStream( HRESULT IStorage16_fnCreateStream(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved1,DWORD reserved2, IStream16 **ppstm LPSTORAGE16 iface,LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved1,DWORD reserved2, IStream16 **ppstm
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1731,7 +1731,7 @@ HRESULT WINAPI IStorage16_fnCreateStream(
/****************************************************************************** /******************************************************************************
* IStorage16_OpenStorage [STORAGE.506] * 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 LPSTORAGE16 iface,LPCOLESTR16 pwcsName, IStorage16 *pstgPrio, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16 **ppstg
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;
@ -1766,7 +1766,7 @@ HRESULT WINAPI IStorage16_fnOpenStorage(
/****************************************************************************** /******************************************************************************
* IStorage16_OpenStream [STORAGE.504] * IStorage16_OpenStream [STORAGE.504]
*/ */
HRESULT WINAPI IStorage16_fnOpenStream( HRESULT IStorage16_fnOpenStream(
LPSTORAGE16 iface,LPCOLESTR16 pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream16 **ppstm LPSTORAGE16 iface,LPCOLESTR16 pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream16 **ppstm
) { ) {
IStorage16Impl *This = (IStorage16Impl *)iface; IStorage16Impl *This = (IStorage16Impl *)iface;

View file

@ -1,59 +1,59 @@
# Compound Storage DLL. # Compound Storage DLL.
# (FIXME: some methods are commented out. Commenting them in _WILL_ # (FIXME: some methods are commented out. Commenting them in _WILL_
# result in dataloss. Do it at your own risk.) # result in dataloss. Do it at your own risk.)
1 pascal StgCreateDocFileA(str long long ptr) StgCreateDocFile16 1 pascal StgCreateDocFileA(str long long ptr) StgCreateDocFile16
2 stub StgCreateDocFileOnILockBytes 2 stub StgCreateDocFileOnILockBytes
# 2 pascal StgCreateDocFileOnILockBytes(ptr long long ptr) StgCreateDocFileOnILockBytes16 # 2 pascal StgCreateDocFileOnILockBytes(ptr long long ptr) StgCreateDocFileOnILockBytes16
3 pascal StgOpenStorage(str ptr long ptr long ptr) StgOpenStorage16 3 pascal StgOpenStorage(str ptr long ptr long ptr) StgOpenStorage16
4 pascal StgOpenStorageOnILockBytes(ptr ptr long long long ptr) StgOpenStorageOnILockBytes16 4 pascal StgOpenStorageOnILockBytes(ptr ptr long long long ptr) StgOpenStorageOnILockBytes16
5 pascal StgIsStorageFile(str) StgIsStorageFile16 5 pascal StgIsStorageFile(str) StgIsStorageFile16
6 pascal StgIsStorageILockBytes(segptr) StgIsStorageILockBytes16 6 pascal StgIsStorageILockBytes(segptr) StgIsStorageILockBytes16
7 stub StgSetTimes 7 stub StgSetTimes
#8 WEP #8 WEP
#9 ___EXPORTEDSTUB #9 ___EXPORTEDSTUB
103 stub DllGetClassObject 103 stub DllGetClassObject
# Storage Interface functions. Starting at 500 # Storage Interface functions. Starting at 500
# these are not exported in the real storage.dll, we use them # these are not exported in the real storage.dll, we use them
# as 16->32 relays. They use the cdecl calling convention. # as 16->32 relays. They use the cdecl calling convention.
# IStorage # IStorage
500 cdecl IStorage16_QueryInterface(ptr ptr ptr) IStorage16_fnQueryInterface 500 cdecl IStorage16_QueryInterface(ptr ptr ptr) IStorage16_fnQueryInterface
501 cdecl IStorage16_AddRef(ptr) IStorage16_fnAddRef 501 cdecl IStorage16_AddRef(ptr) IStorage16_fnAddRef
502 cdecl IStorage16_Release(ptr) IStorage16_fnRelease 502 cdecl IStorage16_Release(ptr) IStorage16_fnRelease
#503 cdecl IStorage16_CreateStream(ptr str long long long ptr) IStorage16_fnCreateStream #503 cdecl IStorage16_CreateStream(ptr str long long long ptr) IStorage16_fnCreateStream
503 stub IStorage16_CreateStream 503 stub IStorage16_CreateStream
504 cdecl IStorage16_OpenStream(ptr str ptr long long ptr) IStorage16_fnOpenStream 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 cdecl IStorage16_CreateStorage(ptr str long long long ptr) IStorage16_fnCreateStorage
505 stub IStorage16_CreateStorage 505 stub IStorage16_CreateStorage
506 cdecl IStorage16_OpenStorage(ptr str ptr long ptr long ptr) IStorage16_fnOpenStorage 506 cdecl IStorage16_OpenStorage(ptr str ptr long ptr long ptr) IStorage16_fnOpenStorage
507 cdecl IStorage16_CopyTo(ptr long ptr ptr ptr) IStorage16_fnCopyTo 507 cdecl IStorage16_CopyTo(ptr long ptr ptr ptr) IStorage16_fnCopyTo
508 stub IStorage16_MoveElementTo 508 stub IStorage16_MoveElementTo
509 cdecl IStorage16_Commit(ptr long) IStorage16_fnCommit 509 cdecl IStorage16_Commit(ptr long) IStorage16_fnCommit
510 stub IStorage16_Revert 510 stub IStorage16_Revert
511 stub IStorage16_EnumElements 511 stub IStorage16_EnumElements
512 stub IStorage16_DestroyElement 512 stub IStorage16_DestroyElement
513 stub IStorage16_RenameElement 513 stub IStorage16_RenameElement
514 stub IStorage16_SetElementTimes 514 stub IStorage16_SetElementTimes
515 stub IStorage16_SetClass 515 stub IStorage16_SetClass
516 stub IStorage16_SetStateBits 516 stub IStorage16_SetStateBits
517 cdecl IStorage16_Stat(ptr ptr long) IStorage16_fnStat 517 cdecl IStorage16_Stat(ptr ptr long) IStorage16_fnStat
# IStream # IStream
518 cdecl IStream16_QueryInterface(ptr ptr ptr) IStream16_fnQueryInterface 518 cdecl IStream16_QueryInterface(ptr ptr ptr) IStream16_fnQueryInterface
519 cdecl IStream16_AddRef(ptr) IStream16_fnAddRef 519 cdecl IStream16_AddRef(ptr) IStream16_fnAddRef
520 cdecl IStream16_Release(ptr) IStream16_fnRelease 520 cdecl IStream16_Release(ptr) IStream16_fnRelease
521 cdecl IStream16_Read(ptr ptr long ptr) IStream16_fnRead 521 cdecl IStream16_Read(ptr ptr long ptr) IStream16_fnRead
#522 cdecl IStream16_Write(ptr ptr long ptr) IStream16_fnWrite #522 cdecl IStream16_Write(ptr ptr long ptr) IStream16_fnWrite
522 stub IStream16_Write 522 stub IStream16_Write
523 cdecl IStream16_Seek(ptr long long long ptr) IStream16_fnSeek 523 cdecl IStream16_Seek(ptr long long long ptr) IStream16_fnSeek
524 stub IStream16_SetSize 524 stub IStream16_SetSize
525 stub IStream16_CopyTo 525 stub IStream16_CopyTo
526 stub IStream16_Commit 526 stub IStream16_Commit
527 stub IStream16_Revert 527 stub IStream16_Revert
528 stub IStream16_LockRegion 528 stub IStream16_LockRegion
529 stub IStream16_UnlockRegion 529 stub IStream16_UnlockRegion
530 stub IStream16_Stat 530 stub IStream16_Stat
531 stub IStream16_Clone 531 stub IStream16_Clone

View file

@ -23,6 +23,14 @@
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 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> #include <assert.h>
@ -1583,6 +1591,13 @@ HRESULT WINAPI StorageImpl_MoveElementTo(
/************************************************************************* /*************************************************************************
* Commit (IStorage) * 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( HRESULT WINAPI StorageImpl_Commit(
IStorage* iface, IStorage* iface,
@ -1594,6 +1609,8 @@ HRESULT WINAPI StorageImpl_Commit(
/************************************************************************* /*************************************************************************
* Revert (IStorage) * Revert (IStorage)
*
* Discard all changes that have been made since the last commit operation
*/ */
HRESULT WINAPI StorageImpl_Revert( HRESULT WINAPI StorageImpl_Revert(
IStorage* iface) IStorage* iface)
@ -6387,7 +6404,7 @@ static DWORD GetCreationModeFromSTGM(DWORD stgm)
* *
* Memory allocated for pData must be freed by the caller * 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; DWORD dwSize;
HRESULT hRes = S_OK; HRESULT hRes = S_OK;
@ -6555,7 +6572,7 @@ HRESULT OLECONVERT_LoadOLE10(LPOLESTREAM pOleStream, OLECONVERT_OLESTREAM_DATA *
* This function is used by OleConvertIStorageToOLESTREAM only. * 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; DWORD dwSize;
HRESULT hRes = S_OK; HRESULT hRes = S_OK;
@ -6666,7 +6683,7 @@ HRESULT OLECONVERT_SaveOLE10(OLECONVERT_OLESTREAM_DATA *pData, LPOLESTREAM pOleS
* *
* *
*/ */
void OLECONVERT_GetOLE20FromOLE10(LPSTORAGE pDestStorage, BYTE *pBuffer, DWORD nBufferLength) static void OLECONVERT_GetOLE20FromOLE10(LPSTORAGE pDestStorage, BYTE *pBuffer, DWORD nBufferLength)
{ {
HRESULT hRes; HRESULT hRes;
HANDLE hFile; HANDLE hFile;
@ -6716,7 +6733,7 @@ void OLECONVERT_GetOLE20FromOLE10(LPSTORAGE pDestStorage, BYTE *pBuffer, DWORD n
* Used by OleConvertIStorageToOLESTREAM only. * Used by OleConvertIStorageToOLESTREAM only.
* *
*/ */
DWORD OLECONVERT_WriteOLE20ToBuffer(LPSTORAGE pStorage, BYTE **pData) static DWORD OLECONVERT_WriteOLE20ToBuffer(LPSTORAGE pStorage, BYTE **pData)
{ {
HANDLE hFile; HANDLE hFile;
HRESULT hRes; HRESULT hRes;
@ -7132,7 +7149,7 @@ HRESULT OLECONVERT_CreateCompObjStream(LPSTORAGE pStorage, LPCSTR strOleTypeName
* This function is used by OleConvertOLESTREAMToIStorage only. * 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; HRESULT hRes;
IStream *pStream; IStream *pStream;
@ -7216,7 +7233,7 @@ void OLECONVERT_CreateOlePresStream(LPSTORAGE pStorage, DWORD dwExtentX, DWORD d
* Might need to verify the data and return appropriate error message * 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; HRESULT hRes;
IStream *pStream; IStream *pStream;
@ -7255,7 +7272,7 @@ void OLECONVERT_CreateOle10NativeStream(LPSTORAGE pStorage, BYTE *pData, DWORD d
* *
* *
*/ */
HRESULT OLECONVERT_GetOLE10ProgID(LPSTORAGE pStorage, char *strProgID, DWORD *dwSize) static HRESULT OLECONVERT_GetOLE10ProgID(LPSTORAGE pStorage, char *strProgID, DWORD *dwSize)
{ {
HRESULT hRes; HRESULT hRes;
IStream *pStream; IStream *pStream;
@ -7325,7 +7342,7 @@ HRESULT OLECONVERT_GetOLE10ProgID(LPSTORAGE pStorage, char *strProgID, DWORD *dw
* *
* *
*/ */
void OLECONVERT_GetOle10PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData) static void OLECONVERT_GetOle10PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *pOleStreamData)
{ {
HRESULT hRes; HRESULT hRes;
@ -7378,7 +7395,7 @@ void OLECONVERT_GetOle10PresData(LPSTORAGE pStorage, OLECONVERT_OLESTREAM_DATA *
* *
* Memory allocated for pData must be freed by the caller * 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; HRESULT hRes;
IStream *pStream; IStream *pStream;

View file

@ -222,7 +222,7 @@ struct StorageBaseImpl
/* /*
* Reference count of this object * Reference count of this object
*/ */
ULONG ref; LONG ref;
/* /*
* Ancestor storage (top level) * Ancestor storage (top level)
@ -430,7 +430,7 @@ struct IEnumSTATSTGImpl
const IEnumSTATSTGVtbl *lpVtbl; /* Needs to be the first item in the struct const IEnumSTATSTGVtbl *lpVtbl; /* Needs to be the first item in the struct
* since we want to cast this in an IEnumSTATSTG pointer */ * 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 */ StorageImpl* parentStorage; /* Reference to the parent storage */
ULONG firstPropertyNode; /* Index of the root of the storage to enumerate */ ULONG firstPropertyNode; /* Index of the root of the storage to enumerate */
@ -487,7 +487,7 @@ struct StgStreamImpl
/* /*
* Reference count * Reference count
*/ */
ULONG ref; LONG ref;
/* /*
* Storage that is the parent(owner) of the stream * Storage that is the parent(owner) of the stream

View file

@ -96,15 +96,13 @@ struct stub_manager *new_stub_manager(APARTMENT *apt, IUnknown *object, MSHLFLAG
return sm; 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) static void stub_manager_delete(struct stub_manager *m)
{ {
struct list *cursor; struct list *cursor;
TRACE("destroying %p (oid=%s)\n", m, wine_dbgstr_longlong(m->oid)); TRACE("destroying %p (oid=%s)\n", m, wine_dbgstr_longlong(m->oid));
list_remove(&m->entry);
/* release every ifstub */ /* release every ifstub */
while ((cursor = list_head(&m->ifstubs))) while ((cursor = list_head(&m->ifstubs)))
{ {
@ -230,9 +228,15 @@ ULONG stub_manager_int_release(struct stub_manager *This)
TRACE("after %ld\n", refs); TRACE("after %ld\n", refs);
/* remove from apartment so no other thread can access it... */
if (!refs)
list_remove(&This->entry);
LeaveCriticalSection(&apt->cs);
/* ... so now we can delete it without being inside the apartment critsec */
if (!refs) if (!refs)
stub_manager_delete(This); stub_manager_delete(This);
LeaveCriticalSection(&apt->cs);
return refs; return refs;
} }
@ -336,7 +340,7 @@ HRESULT ipid_to_stub_manager(const IPID *ipid, APARTMENT **stub_apt, struct stub
*stub_apt = apartment_findfromtid(ipid->Data2); *stub_apt = apartment_findfromtid(ipid->Data2);
if (!*stub_apt) 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; return RPC_E_INVALID_OBJECT;
} }
*stubmgr_ret = get_stub_manager_from_ipid(*stub_apt, ipid); *stubmgr_ret = get_stub_manager_from_ipid(*stub_apt, ipid);
@ -411,7 +415,7 @@ struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *s
stub->stubbuffer = sb; stub->stubbuffer = sb;
if (sb) IRpcStubBuffer_AddRef(sb); if (sb) IRpcStubBuffer_AddRef(sb);
/* no need to ref this, same object as sb */ IUnknown_AddRef(iptr);
stub->iface = iptr; stub->iface = iptr;
stub->iid = *iid; stub->iid = *iid;
@ -477,7 +481,9 @@ BOOL stub_manager_notify_unmarshal(struct stub_manager *m)
default: default:
WARN("object OID %s already unmarshaled\n", WARN("object OID %s already unmarshaled\n",
wine_dbgstr_longlong(m->oid)); 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;
} }
@ -505,9 +511,9 @@ void stub_manager_release_marshal_data(struct stub_manager *m, ULONG refs)
break; break;
} }
stub_manager_ext_release(m, refs);
LeaveCriticalSection(&m->lock); LeaveCriticalSection(&m->lock);
stub_manager_ext_release(m, refs);
} }
/* is an ifstub table marshaled? */ /* is an ifstub table marshaled? */
@ -539,7 +545,7 @@ const IID IID_IRemUnknown = { 0x00000131, 0, 0, {0xc0, 0, 0, 0, 0, 0, 0, 0x46} }
typedef struct rem_unknown typedef struct rem_unknown
{ {
const IRemUnknownVtbl *lpVtbl; const IRemUnknownVtbl *lpVtbl;
ULONG refs; LONG refs;
} RemUnknown; } RemUnknown;
static const IRemUnknownVtbl RemUnknown_Vtbl; static const IRemUnknownVtbl RemUnknown_Vtbl;