Commit Graph

878 Commits

Author SHA1 Message Date
Robert Shearman
45d440a219 Implement CLSCTX_INPROC_HANDLER in CoGetClassObject similar to
CLSCTX_INPROC_SERVER by looking at the InprocHandler32 registry key
instead of InprocServer32.
2005-11-12 19:11:21 +00:00
Francois Gouget
0edbaf7e80 Remove spaces before '\n' in traces. 2005-11-10 12:14:56 +00:00
Markus Amsler
ae542af541 Improve c2man Documented-Total count. 2005-11-09 10:30:57 +00:00
Robert Shearman
f7b65cc716 - Extend COM_OpenKeyForCLSID to open a subkey and return an HRESULT.
- Fix up the callers and reorganize CoGetClassObject to split out the
  inproc code into another function.
2005-11-09 10:29:11 +00:00
Michael Jung
2f210917ee Added tracing to CoCreateInstance. 2005-11-08 12:43:24 +00:00
Robert Shearman
65581b8489 We shouldn't pass the application name into CreateProcess because the
value stored in the registry could include arguments.
2005-11-08 10:56:02 +00:00
Robert Shearman
fe4015201b Implement OLE object notifications, making sure to cope with the case
of the advise holder not being created because no notifications are
needed.
2005-11-03 19:32:49 +00:00
Ivan Leo Puoti
52c6299538 Delete some temp files created by the ole32 tests. 2005-10-29 10:29:18 +00:00
Robert Shearman
22c97cd98a Implement a Stop function and use this to properly implement
IOleObject_Close, IAdviseSink_OnClose and the destructor.
2005-10-26 10:12:49 +00:00
Francois Gouget
a1f9a13997 Use "static const" rather than "const static" as gcc -W complains
about the former.
2005-10-06 11:38:45 +00:00
Robert Shearman
c23cb51d52 Pass WM_QUIT to outer modal loop. 2005-10-03 11:02:37 +00:00
Alexandre Julliard
7e22be4d84 We are no longer generating .dbg.c files. 2005-09-29 10:35:58 +00:00
Robert Shearman
fc68475c80 Add a stubbed out implementation of IAdviseSink and advise the
delegate object to use it.
2005-09-29 10:29:44 +00:00
Robert Shearman
8165b584f6 - Make the interfaces that should be supported by the data cache
explicit so their is no confusion in this file as to what it should
  be implementing and what this object should implement.
- Delegate some IOleObject methods to the server IOleObject if it is
  running.
2005-09-28 18:29:38 +00:00
Alex Villacís Lasso
1e26f9601d Add NULL check for sinkInterface in DataCache_GetAdvise. 2005-09-28 18:12:58 +00:00
Alex Villacís Lasso
a90c11330e Add missing ! to fix a reversed condition check in
OleCreateDefaultHandler, in order to match intent in comment.
2005-09-28 18:12:45 +00:00
Vincent Béron
80e023bdea Use the proper calling convention for 2 16-bit functions. 2005-09-27 09:32:41 +00:00
Francois Gouget
a8c7284f92 Assorted spelling fixes. 2005-09-26 10:58:41 +00:00
Francois Gouget
335fce9ce0 Fix .spec declarations for functinos with 64bit arguments (reported by
winapi_check).
2005-09-26 09:56:40 +00:00
Robert Shearman
c86fef8844 Move all 16-bit functions to an appropriate 16-bit file. 2005-09-25 15:17:10 +00:00
Robert Shearman
53ef9950f2 Implement some IRunningObject functions that actually start the server
and initialize it.
2005-09-23 10:08:35 +00:00
Robert Shearman
3daf39fb0c Implement OleRegEnumVerbs. 2005-09-23 10:08:25 +00:00
Robert Shearman
044ccc40f3 Don't fail in CoRegisterClassObject if the class already exists and
the REGCLS_MULTIPLEUSE flag is specified.
2005-09-23 10:08:11 +00:00
Alexandre Julliard
0ec0f048e6 Removed unused debug channels. 2005-09-22 10:44:40 +00:00
Robert Shearman
6bc4327c92 - Initialize out pointer to NULL before access check in
IStorage_CreateStorage.
- WriteClassStg should return E_INVALIDARG if pstg is NULL instead of
  asserting.
- ReadClassStg should return E_INVALIDARG if pstg is NULL instead of
  crashing and a NULL pclsid should cause it to return the same
  value.
2005-09-22 10:34:40 +00:00
Alexandre Julliard
9f1c6de1ef We are no longer generating .spec.c files. 2005-09-21 14:42:52 +00:00
Robert Shearman
0a49c1752e Implement OleIsRunning. 2005-09-20 11:36:56 +00:00
Robert Shearman
d389b57171 - Fix a trace to refer to the object ID rather than the legacy MID.
- Fix the error case of CoMarshalInterThreadInterface to release the
  stream.
2005-09-20 11:36:40 +00:00
Robert Shearman
83f3b370b1 - Remove redunant braces.
- Compact multi-line comments that fit into one line.
- Remove comments that state the obvious.
- Remove extra brackets that are redundant because the -> operator
  binds tighter than &.
- Change "this" to "This" to make code more like other interface
  implementations.
- Remove redundant comparisons with NULL for pointers.
2005-09-19 14:42:53 +00:00
Robert Shearman
0ceacf017f Fix the return codes during unmarshaling so that it returns failure
codes instead of S_FALSE returned from IStream_Read.
2005-09-19 14:34:04 +00:00
Robert Shearman
b3a4b59668 Fix ref-counting rules to match native DCOM Dlls. 2005-09-18 11:10:37 +00:00
Robert Shearman
18bd21d4f1 Re-arrange some functions and vtables so we don't have declarations
for all of the functions in the file.
2005-09-17 14:29:11 +00:00
Robert Shearman
43df8b61bb Add exception handling for stubs. 2005-09-14 10:07:01 +00:00
Alexandre Julliard
5a49e40149 SendMessageTimeout takes a DWORD_PTR not a DWORD. 2005-09-12 20:43:32 +00:00
Alexandre Julliard
f8ee161a1b Fixed some traces to use the right printf format and avoid typecasts. 2005-09-12 10:30:05 +00:00
Alexandre Julliard
20a1a203c6 Use a more portable scheme for storing the name of a critical
section.
2005-09-09 10:19:44 +00:00
Richard Cohen
908e9e889e Relax the share mode validation for transacted storage, with a test. 2005-09-07 09:22:15 +00:00
Eric Pouech
b379e420ed Fixes for function prototypes without arguments. 2005-09-06 09:27:37 +00:00
Robert Shearman
3f912e048e The [string] attribute is only valid on byte, char and wchar_t types,
so replace "unsigned short" by "WCHAR".
2005-09-02 11:19:05 +00:00
Alexandre Julliard
611b5acbf8 Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
Change stub manager to track the number of normal marshals instead of
using the state machine so that multiple marshals of the same object
and interface work correctly.
2005-09-02 11:18:45 +00:00
Robert Shearman
dab603def3 - Implement IMarshal on proxies so that we don't end up with proxies
to proxies, causing potential deadlock issues and performance
  problems.
- Add a test for this situation and remove the todo_wine from another
  test that now succeeds.
2005-08-27 09:25:16 +00:00
Robert Shearman
c8aedf9726 Add stub for CoAllowSetForegroundWindow. 2005-08-26 08:47:09 +00:00
Robert Shearman
bcb251d5b3 Remove unused thread handle entry from the apartment structure. 2005-08-25 09:50:36 +00:00
Mike McCormack
eafa666bee Fix some gcc 4.0 warnings. 2005-08-22 09:26:53 +00:00
Mike McCormack
6c8527c31c - return a precomputed result for a NULL string
- pass strlen an LPSTR to eliminate a sign warning
2005-08-22 09:19:38 +00:00
Francois Gouget
71af595499 Use LPSTORAGE to better match the PSDK.
Document the real SEGPTR type using the standard documentation
mechanisms. Fixes winapi_check warnings.
2005-08-16 16:01:15 +00:00
Mike McCormack
61aabd66f5 Warning fixes for gcc 4.0. 2005-08-15 10:49:39 +00:00
Marcus Meissner
61b2fba9d7 Added CoCreateInstance16, CoGetClassObject16, OleLoad16 stubs. 2005-08-15 09:46:51 +00:00
Alexandre Julliard
628939d567 Use the proper WOW functions everywhere instead of the K32WOW variant. 2005-08-10 10:59:19 +00:00
Vincent Béron
21e3ba8cd1 Correct mismatches between spec files and comments about export
number.
2005-08-10 09:53:47 +00:00
Vincent Béron
d32610fabe Remove local declarations already in included public headers. 2005-08-10 09:48:15 +00:00
Alexandre Julliard
d37f0abf07 Don't prefix the functions DllCanUnloadNow, DllGetClassObject and
Dll(Un)RegisterServer with the dll name so that the compiler can check
the prototypes.
2005-08-08 17:35:28 +00:00
Marcus Meissner
170470ee0b Implemented ILockBytes16 (memorystream) support for the 16bit compound
storage implementation.
Added ReadClassStg, OleDoAutoConvert, GetConvertStg
implementations/stubs.
2005-08-08 11:05:06 +00:00
Alexandre Julliard
04b7382db9 Remove duplicate definition of FILE_BEGIN. 2005-07-28 10:24:01 +00:00
Alexandre Julliard
b1a9701bb5 Replace the _ICOM_THIS_From macros by inline functions the way it's
already done in shelllink.c.
2005-07-27 11:10:52 +00:00
Alexandre Julliard
b8d3075d83 Uncomment the typedef in the DECLARE_INTERFACE macro, and get rid of
duplicate typedefs.
2005-07-26 18:32:53 +00:00
Stefan Huehner
4f82e547d7 Fix some missing-declarations warnings. 2005-07-24 17:11:59 +00:00
Marcus Meissner
c5feb317b3 Implemented IsValidInterface16, CoMemAlloc.
Added debug to HGLOBALLockBytes16_QueryInterface.
2005-07-24 16:15:24 +00:00
Marcus Meissner
1c3054af32 Added OleSetMenuDescriptor16 stub. 2005-07-22 18:29:39 +00:00
Marcus Meissner
c8187b0900 OleInitializeWOW gets 2 arguments. 2005-07-22 18:29:19 +00:00
Marcus Meissner
ba4c61776d 16bit COM interfaces are cdecl, not WINAPI. 2005-07-22 18:26:31 +00:00
Marcus Meissner
d32762808b 16bit interfaces are cdecl, so drop the WINAPI. 2005-07-22 09:03:29 +00:00
Robert Shearman
4fad9ddc86 Hack around broken state management so InstallShield works. 2005-07-20 10:30:04 +00:00
Robert Shearman
775898ba97 - 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.
2005-07-19 19:59:41 +00:00
Robert Shearman
5d873adf9f Marshal return value from IRemUnknown_RemQueryInterface. 2005-07-19 19:43:05 +00:00
Robert Shearman
c0d7a25a42 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.
2005-07-19 19:42:33 +00:00
Robert Shearman
97be0be7e4 - We should be starting with 1 reference.
- IRpcStubBuffer_Disconnect can be called more than once.
2005-07-19 19:13:11 +00:00
Robert Shearman
28479ea4aa 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.
2005-07-19 19:12:47 +00:00
Robert Shearman
e874408d65 Delete the stub manager outside of the apartment critical section
because the deletion may require the object to re-enter the
apartment.
2005-07-19 19:12:24 +00:00
Alex Villacís Lasso
0f9ebafbec Initialize RegisteredClass properly in CoRegisterClassObject to
prevent crash in CoRevokeClassObject when accessing (uninitialized)
pMarshalledData.
2005-07-19 11:40:22 +00:00
Vitaly Lipatov
e633b45300 Added some documentation. 2005-07-07 17:21:44 +00:00
Mike McCormack
c7fdb4565a Fix gcc 4.0 -Wpointer-sign warnings. 2005-07-05 11:02:54 +00:00
Eric Pouech
809edabfbe Const correctness fixes. 2005-06-27 09:53:46 +00:00
Alexandre Julliard
aa0b9aac0d Sort entry points alphabetically. 2005-06-22 18:38:23 +00:00
Stefan Huehner
863a4b1488 Fix some more -Wstrict-prototypes warnings. 2005-06-21 20:53:13 +00:00
Stefan Huehner
ac6f562b52 Fix more -Wstrict-prototypes warnings. 2005-06-20 14:18:03 +00:00
Robert Shearman
0a645e8cb9 Convert some registry helper functions to use unicode versions of
CLSID & registry functions (untested).
2005-06-20 13:14:22 +00:00
Robert Shearman
5807cb79f0 Change the RPC code to use the unicode versions of the CLSID &
registry functions.
2005-06-20 10:33:28 +00:00
Robert Shearman
f419880d64 - Change some of the registry helper functions to use the unicode
versions of the CLSID & registry functions.
- Reindent CoGetClassObject and output an error message if the class
  isn't registered.
- Add tests for the touched functions.
2005-06-20 10:33:17 +00:00
Mike McCormack
0220d7ac89 Fix declarations in the tests. 2005-06-15 10:20:30 +00:00
Alexandre Julliard
c2d5b444b3 Moved the NONAMELESSUNION/STRUCT macros to wine/test.h so that they
can be used in all the test.
2005-06-13 12:10:54 +00:00
Robert Shearman
fd5f7729cb Fix PropVariant tests on Windows 2000 and above. 2005-06-13 10:02:10 +00:00
Robert Shearman
a1e466ae77 - Add registry entries for local-only OLE interfaces.
- Change IUnknown to local interface.
2005-06-13 10:01:43 +00:00
Marcus Meissner
ec7a5931ae Removed CLSID_CompositeMoniker (conflicting with static definition). 2005-06-09 09:47:44 +00:00
Robert Shearman
037bdc0dc0 IUnknown isn't a remotable interface so the stub manager shouldn't
need a marshaller for it.
2005-06-09 09:45:59 +00:00
Dmitry Timoshkov
eba47f1dfe Make remaining OLE interface vtables const. 2005-06-06 19:50:35 +00:00
Rob Shearman
e46047e4da Don't disconnect proxies flagged with SORFP_NOLIFETIMEMGMT. It makes
no sense and only causes trouble for proxies that depend on these
proxies being available.
2005-06-05 19:19:24 +00:00
Mike Hearn
e3f990467c Add some tracing to the IRemUnknown RpcProxyBuffer implementation. 2005-06-05 18:13:47 +00:00
Richard Cohen
977806a884 - Don't assume the ROT is already empty.
- Test that IEnum::Clone doesn't also do a Reset.
2005-06-02 20:06:33 +00:00
Richard Cohen
95b71ed885 IEnum::Clone shouldn't do a Reset. 2005-06-02 20:06:22 +00:00
Richard Cohen
885e6298f2 Added tests for file monikers. 2005-06-02 19:43:03 +00:00
Richard Cohen
54f041ad32 - Base FileMonikerImpl_Save() on XP.
- Correct handling of Unicode strings & multibyte locales.
- More error checking.
- Change ERR to WARN.
- Match Windows quick & dirty estimate for GetSizeMax().
2005-06-02 19:42:48 +00:00
Mike McCormack
4f14044f29 Remove forward declarations. 2005-05-23 16:31:13 +00:00
Robert Shearman
8d6a673cf7 - Add error messages on failure in file moniker load function.
- Fix incorrect pointer check in both monikers.
- Fix max size calculation of item moniker to match native.
2005-05-23 10:27:42 +00:00
Robert Shearman
27d73d6115 - Add a useful trace message.
- Fix more places where custom header size was calculated exclusive of
  the data size member.
- Optimize custom marshaling by getting size before calling the custom
  marshaler so we can write the header before and not use a second
  stream.
2005-05-23 10:27:23 +00:00
Alexandre Julliard
aebb745488 Comment out stub WEP entry points so that we can call WEP for builtin
dlls too.
2005-05-23 10:12:26 +00:00
Alexandre Julliard
0ddd30b0b6 Removed unnecessary code in the 16-bit DllEntryPoint function of some
dlls, and also fixed its ordinal in a few places.
2005-05-23 10:00:26 +00:00
Robert Shearman
b9ecbb6167 - Marshal objects & monikers into the ROT.
- Test for this behaviour.
2005-05-23 09:54:53 +00:00
Kevin Koltzau
bb4d6f88bf Implement Hash function on composite moniker. 2005-05-23 09:52:13 +00:00
Robert Shearman
34d3049360 - Add a generic moniker marshaler that works by saving & loading
monikers to & from the stream.
- Use the generic moniker marshal in the file & item monikers and add
  a class factory for each.
2005-05-19 14:22:14 +00:00
Robert Shearman
a890293f33 - Change remaining blocks of code with 2-space indentation to 4-space
indentation.
- Make vtables const.
- Remove an unnecessary memcpy and let the compiler do the work.
2005-05-19 12:04:58 +00:00
Robert Shearman
447ab61288 Write custom header up to and including size, not excluding. 2005-05-19 11:15:50 +00:00
Robert Shearman
10ee7b36e8 Implement IROTData::GetComparisonData for file & item monikers. 2005-05-18 18:28:15 +00:00
Pierre d'Herbemont
49b1d335d9 Big Endian specific code fixes in order to conform with
NONAMELESSSTRUCT.
2005-05-18 09:44:13 +00:00
Juan Lang
b45e31608b Obvious fixes to PropVariantClear and PropVariantCopy for vector
types.
2005-05-17 10:18:59 +00:00
Juan Lang
ff87ad7ab1 Add a comment, and a no-op cleanup. 2005-05-16 21:37:54 +00:00
Juan Lang
e140d02a2b Differentiate between version 0 and version 1 property storages. 2005-05-16 17:52:36 +00:00
Marcus Meissner
f3d99b2697 Move the Dll init function to compobj.c to avoid having global
variables. Remove need of ole32_main.h.
2005-05-16 14:12:53 +00:00
Marcus Meissner
fc61f6c553 Make _xmalloc16() static. 2005-05-16 08:47:40 +00:00
Marcus Meissner
81e2677939 Staticify FTMarshalImpl definition. 2005-05-16 08:47:26 +00:00
Marcus Meissner
45bc1c21a1 Make HGLOBALStream_* functions static. 2005-05-16 08:47:14 +00:00
Juan Lang
5d90f2bcf9 Store property names in the code page of the property set. 2005-05-16 08:43:35 +00:00
Jeff Latimer
72f73ac452 Implement the IEnumMoniker interface for the ROT and provide tests to
exercise the interface.
2005-05-14 18:50:14 +00:00
Juan Lang
2507264e05 - maintain proper byte order
- maintain PROPSETFLAG_ANSI flag based on codepage
- update comments
2005-05-14 11:06:44 +00:00
Mike McCormack
a22c767eb0 Remove function prototypes. 2005-05-13 17:45:50 +00:00
Hans Leidekker
6b7676a1e8 Don't import from ntdll. 2005-05-13 17:42:49 +00:00
Mike McCormack
e3b43fa458 Make sure a stream can't be created in read only storage. 2005-05-13 13:58:43 +00:00
Mike McCormack
912ffd6a0f Remove unnecessary declarations and make functions static. 2005-05-12 09:57:21 +00:00
Mike McCormack
2c6c67f4ea Make functions static and remove unnecessary declarations. 2005-05-11 15:56:45 +00:00
Mike McCormack
3c5790646f Add a stub implementation of CoIsHandlerConnected. 2005-05-11 12:57:16 +00:00
Mike McCormack
809cf354e4 Fix a memory leak in the ole storage implementation. 2005-05-10 15:59:59 +00:00
Alexandre Julliard
34fa35dc99 Added rules for building import libraries in the individual dll
makefiles, and added support for building a .def.a static import
library too.
2005-05-09 14:42:30 +00:00
Juan Lang
4d1562495d Correct/improve error checking in IPropertyStorage. 2005-05-09 09:26:43 +00:00
Alexandre Julliard
d62356aa1e Added rules to build import libraries in the individual dll makefiles.
Generate import libraries with the right name right away instead of
using an intermediate .spec.def file.
2005-05-07 12:39:52 +00:00
Stefan Leichter
cabe752d1d Make ole32 tests loadable on NT4. 2005-05-07 12:09:58 +00:00
Matthew Mastracci
6e028f414d Replace stub entry for StgOpenStorageEx with call to StgOpenStorage. 2005-05-06 14:32:30 +00:00
Matthew Mastracci
8188790946 Replace StgCreateStorageEx stub with call to StgCreateDocfile and add
required STGFMT_* enumerations.
2005-05-05 16:44:05 +00:00
Juan Lang
b99dfb0c1a Define and use endian conversion macros for big-endian machines. 2005-04-24 17:22:26 +00:00
Juan Lang
bf83ba1fa3 - convert strings between property storage's code page and system code
page
- add tests for setting code page
- fix tests and behavior to match WinXP
2005-04-23 19:04:49 +00:00
Stefan Leichter
950d678c5e Make ole32 tests loadable on NT4. 2005-04-22 19:05:51 +00:00
Francois Gouget
4b9f767845 Specify the proper call convention in the PropSysFreeString()
implementation.
2005-04-20 16:21:16 +00:00
Francois Gouget
3ef8c51c8a Tweak the API documentation to silence winapi_check warnings. 2005-04-20 15:18:42 +00:00
Dmitry Timoshkov
35356002e6 Zero out an invalidated runningObjectTableInstance pointer. 2005-04-15 16:11:29 +00:00
Juan Lang
e68982fcaf Implement FmtIdToPropStgName & PropStgNameToFmtId, with tests. 2005-04-15 14:09:18 +00:00
Alexandre Julliard
f7ff216a15 Fixed a buffer overflow. 2005-04-14 12:50:54 +00:00
Dimitrie O. Paun
e3e5cf19a8 Remove the need for the non-standard (Close|Delete)MetaFile16(). 2005-04-13 15:16:40 +00:00
Juan Lang
142254d746 Implement PropSys{Alloc|Free}String, and support BSTRs in
PropVariant{Clear|Copy} using them.
2005-04-13 11:13:55 +00:00
Juan Lang
c1fe67bc36 - add write support to IPropertyStorage, with tests
- misc. cleanups the tests turned up
2005-04-11 18:50:45 +00:00
Juan Lang
50794ce787 Add traces, add unit tests for IPropertyStorage, and fix the problems
they caught.
2005-04-11 14:30:24 +00:00
Mike McCormack
6714664dee Eliminate forward declarations, make functions static. 2005-03-31 15:26:30 +00:00
Francois Gouget
6b10c324c5 Assorted spelling fixes. 2005-03-30 17:08:31 +00:00
Huw Davies
9be7f2789f WriteFmtUserTypeStg doesn't pull a CLSID from the registry - it's
unclear when (if at all) this gets written.
2005-03-29 18:56:22 +00:00
Huw Davies
e42a23d2d3 Don't close reg key if the open failed. 2005-03-29 13:06:57 +00:00
Vincent Béron
c822566974 Change prototypes so gcc with some warnings doesn't bark. 2005-03-29 11:32:04 +00:00
Mike McCormack
a63c2eb30b Remove function prototypes, make functions static. 2005-03-28 10:01:45 +00:00
Mike McCormack
e19ce3bd40 Remove unnecessary function prototypes. 2005-03-27 18:16:49 +00:00
Mike McCormack
1ff3bf8e69 Remove function prototypes, make functions static. 2005-03-27 18:16:25 +00:00
Francois Gouget
93416cdaf7 Assorted spelling fixes. 2005-03-23 13:15:18 +00:00
Jakob Eriksson
461c830745 Eliminate HeapAlloc casts. 2005-03-22 18:26:06 +00:00
Jakob Eriksson
665b9ca377 More trace info from storage32 test. 2005-03-22 18:18:43 +00:00
Mike McCormack
17c3106896 Eliminate casts of the return value of HeapAlloc. 2005-03-21 11:25:13 +00:00
Vincent Béron
811725ac20 Correct and complete some api documentation. 2005-03-21 10:55:13 +00:00
Troy Rollo
963b63ecbd ix test for STGM_SHARE_EXCLUSIVE on nameless DocFiles. 2005-03-21 10:30:01 +00:00
Robert Shearman
1571df5722 Fix memory leak in OleDuplicateData on error path (found by Smatch). 2005-03-19 17:05:12 +00:00
Jon Griffiths
dbf222f3aa Use LMEM_ flags for LocalAlloc(), not GMEM_ (GlobalAlloc). 2005-03-17 20:53:37 +00:00
Juan Lang
be84f8d9e6 Begin implementing IPropertyStorage. 2005-03-17 20:50:35 +00:00
Robert Shearman
1b5ebabdce - Add critsec debugging info.
- Move the modal loop called during RPCs into CoWaitForMultipleHandles.
- Use a mutex for long remoting calls to IRemUnknown methods.
- Remove locking in apartment_disconnectproxies as it is not needed.
- Use PostMessage instead of SendMessage so we can run the message
  loop or not as appropriate.
2005-03-17 10:26:20 +00:00
Juan Lang
ac24801db0 Add a comment about byte order, change types to reduce casting and not
cast away constness.
2005-03-17 10:25:13 +00:00
Joris Huizer
34a0463bca A few memory checks avoiding memory leaks. 2005-03-14 10:46:50 +00:00
Mike McCormack
77fc6a5d82 StgOpenStorage shouldn't open zero length storage files. 2005-03-11 13:17:10 +00:00
Robert Shearman
8971f06225 - Rename apartment functions to become more object-oriented.
- Rename register_ifstub to marshal_object to more accurately describe
  what it does.
- Add new function, apartment_getoxid, to prepare for a possible
  future patch where remoting is started on demand.
2005-03-11 10:19:10 +00:00
Juan Lang
23805995a6 Fix the calling convention of DllCanUnloadNow. 2005-03-10 17:25:02 +00:00
Mike McCormack
6f2f76c410 Shared reading of storage files requires STGM_TRANSACTED. 2005-03-09 11:44:59 +00:00
Robert Shearman
527ef47d70 Make each ifproxy have its own channel buffer to fix a bug where a
proxy with multiple interfaces could invoke the wrong stub buffer on
the server.
2005-03-07 17:14:11 +00:00
Mike McCormack
e9d334d0c9 Fix more incorrect uses of STGM_ enumerations. 2005-03-07 12:24:42 +00:00
Juan Lang
01239efa4a Implement StgCreatePropSetStg. 2005-03-07 10:59:09 +00:00
Mike McCormack
a7609ee155 Test and fix grfMode handling in StgOpenDocfile. 2005-03-05 10:48:11 +00:00
Alexandre Julliard
53f3d4c65a Authors: Rob Shearman <rob@codeweavers.com>, Mike Hearn <mh@codeweavers.com>
- Add re-entrancy tests to the test suite.
- Run RPCs on a new thread client side so we can pump the message
  loop.
2005-03-04 12:30:47 +00:00
Mike McCormack
607b43e6b4 Implement StgSetTimes. 2005-03-04 10:48:17 +00:00
Francois Gouget
fbb3343547 Assorted spelling fixes. 2005-03-02 13:53:50 +00:00
Alexandre Julliard
d0ee9f9309 Avoid spaces before preprocessor directives, that's not portable. 2005-03-02 12:23:20 +00:00
Juan Lang
4c8676cdbf Move vtbl to end of file and get rid of unnecessary prototypes. 2005-03-01 10:41:25 +00:00
Jon Griffiths
eb5bf7dd38 Documentation spelling fixes. 2005-02-25 14:07:56 +00:00
Paul Vriens
8922da9ed4 Added some TRACE statements. 2005-02-25 13:58:37 +00:00
Mike McCormack
db69dcb5c1 Add struct StorageBaseImpl at the start of derived structures instead
of trying to keep the first members the same.
2005-02-24 19:39:27 +00:00
Mike McCormack
a6a91a440b Implement and test IPropertySetStorage. 2005-02-21 20:58:09 +00:00
Mike Hearn
4d49d8ca36 Avoid infinite loop when doing a typelib marshalled
IUnknown::QueryInterface by only doing an extra QI if requested IID is
not equal to marshalled IID.
2005-02-21 18:35:07 +00:00
Robert Shearman
4390d003f4 - Better tracing.
- Small cleanup of creation functions.
2005-02-18 20:13:23 +00:00
Robert Shearman
95288f9148 - Move marshaling state machine into stub manager from ifstub.
- Add additional needed states for table-weak marshaling, as shown by
  tests.
- Protect external reference count from underflows/overflows.
2005-02-18 20:03:23 +00:00
Robert Shearman
2d2a39cc42 - Use I_RpcGetBuffer, instead of our own buffer routines to fix an
occasional test crash caused by heap corruption.
- Zero the memory block passed to RpcServerRegisterIfEx so we don't
  pass garbage in some of the fields we don't fill in.
- Return the correct error code from create_server and fix two handle
  leaks.
- TODO update.
2005-02-15 21:48:09 +00:00
Robert Shearman
3b59fa8fce The Global Interface Table should do table-strong marshaling instead
of normal marshaling so that an interface can be retrieved more than
one time.
2005-02-15 15:47:44 +00:00
Robert Shearman
552cc7d5b3 - Remove cruft left over from previous RPC backend implementation in
the apartment structure.
- Don't pass an IPID by value for proxy_manager_create_ifproxy.
- Disable more of RPC_UnregisterInterface to prevent the RPC runtime
  using freed memory.
- Rename various external RPC backend functions so that they all have
  the same "RPC_" prefix.
- Reduce the timeout of the function that connects to a local server
  to 30s, like native.
2005-02-15 15:44:25 +00:00
Robert Shearman
db6db7cb4c Make COM use the RPC runtime as the backend for RPC calls. Based on a
patch by Ove Kåven.
2005-02-15 15:02:49 +00:00
Robert Shearman
2ff1711487 Invoke objects in STA's in the correct thread by sending messages to
the hidden apartment window.
2005-02-14 11:50:51 +00:00
Marcus Meissner
30ed10004b Output some more informations.
Mark one global variable static.
2005-02-14 11:07:55 +00:00
Robert Shearman
403d8e23cd Make Ole tests run on Windows 95. 2005-02-14 11:01:51 +00:00
Robert Shearman
999766d31b - Implement CoDisconnectObject.
- Change CoLockObjectExternal so that it does the correct action now
  and eliminate a fair few lines of now redundant code.
- Rename OLE32_Dll{Register,Unregister}Server to
  Dll{Register,Unregister}Server.
2005-02-08 16:51:22 +00:00
Robert Shearman
514af6ce78 Move object-to-stub-manager mapping rule to register_ifstub. 2005-02-08 14:26:19 +00:00
Robert Shearman
f8a2edb805 - Split up apartment creation so that the long code paths that don't
need locking no longer have locking.
- Add special cases for the threads that join apartments but can't
  increase the refcount of the apartment.
- Free TLS storage on thread destruction (including releasing the
  apartment the thread is in, if any, and so making another test
  pass).
2005-02-08 13:42:15 +00:00
Alexandre Julliard
2a46702761 Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
- Rework RPC dispatch layer to be simpler and not get confused by
  server/client duality.
- Make threads shut down at the right time and not access freed memory
  after apartment destruction.
- Rename stub_dispatch_thread to client_dispatch_thread.
- Add some more tracing
- Check return value of WaitNamedPipe.
- Change named pipe timeouts to 0.5s, which should be enough for even the slowest machines.
2005-02-08 12:55:26 +00:00
Robert Shearman
b9aa9e0bdd - Pass the original IID to IMarshal_UnmarshalInterface and query for
the requested interface.
- Unmarshaling IID_NULL means use the IID the interface was originally
  marshaled with.
2005-02-02 19:11:23 +00:00
Robert Shearman
e6afc84873 - Add code for destroying the thread-local storage data, but don't use
it yet.
- Don't release apartment on changing modes because we didn't add a
  reference anywhere.
- Quieten the RPC_E_DISCONNECTED error message as it is an expected
  return code.
- Treat IID_NULL the same as IID_IUnknown.
- Make tests compile on Win95 again.
- Fix copy+paste error where the test failure should be from the
  CoUnmarshalInterface function.
2005-02-01 14:18:10 +00:00
Robert Shearman
9a97360eba Remove test that fails on Win98 and is not useful. 2005-01-31 11:29:41 +00:00
Robert Shearman
9dba3479c8 Release the client security objects when no longer needed (reported by
Mike McCormack).
2005-01-28 17:19:51 +00:00
Robert Shearman
9b634b97ae - More tests.
- Change return code of CoGetPSClsid to match test result.
- Do a slight hack to make IRemUnknown proxies be added after the
  proxy that uses them to stop them being used after they are
  destroyed.
- Fix multiple local server connections.
2005-01-28 12:39:13 +00:00
Robert Shearman
41d9aef7ef - Implement CoSetProxyBlanket, CoQueryProxyBlanket and CoCopyProxy.
- Update todo list.
2005-01-28 11:27:46 +00:00
Robert Shearman
5bef770490 Give IUnknown its own ifstub to fix ref-counting and ipid storage
issues.
2005-01-27 10:39:44 +00:00
Robert Shearman
3018974ce3 - Make proxy manager use IMultiQI instead of IInternalUnknown as tests
show that IInternalUnknown isn't exposed.
- Implement IMultiQI on top of IRemUnknown calls.
- Silence some fixmes that occur during tests and don't give us any
  useful information.
- Fix typo in class factory proxy that caused us to use the wrong
  offset into the CFProxy structure, causing us to not call the
  outer_unknown properly.
2005-01-26 21:07:05 +00:00
Robert Shearman
cbbf08a7e2 - Use InterlockedIncrement for the ipid counter instead of a critical
section (suggested by Mike Hearn).
- Remove a line added by a bad merge.
- Implement RemUnkStub_Disconnect.
- Remove all of the RPC disconnect code.
2005-01-26 20:53:06 +00:00
Robert Shearman
963ac3f013 - Implement IRemUnknown.
- Use IRemUnknown for life-cycle management instead of the current
  hacks.
2005-01-26 20:42:30 +00:00
Robert Shearman
ce5adcda15 - Move OLE automation interface registration to oleaut32.
- Add IRemUnknown to list of interfaces to register.
2005-01-25 19:03:30 +00:00
Robert Shearman
6e042873d5 Proxies/stubs for IRemUnknown methods, based on code written by Ove
Kåven.
2005-01-25 19:02:54 +00:00
Robert Shearman
ad34f3dc5e - Generate machine-local IPIDs.
- Make pipes be uniquely identified only by their IPID.
2005-01-25 10:57:24 +00:00
Robert Shearman
6b89a92215 - Add a new flag SORFP_NOLIFETIMEMGMT to tell the proxy manager not to
call any IRemUnknown functions.
- Move the low-level unmarshaling code into a new function,
  unmarshal_object, so that it can be easily reused for unmarshaling
  IRemUnknown.
2005-01-24 11:24:08 +00:00
Mike Hearn
70c1c26869 Various formatting/style changes. 2005-01-21 10:15:29 +00:00
Robert Shearman
717eb8fff4 - Consolidate more stub creation details into register_ifstub.
- Replace the current wine_marshal_id structure with STDOBJREF for the
  on-the-wire format.
2005-01-20 10:35:46 +00:00
Robert Shearman
6a20b2f476 - Initialize ppv pointer in ClientIdentity_QueryInterface to NULL as
apps depend on this.
- Don't release IRpcProxyBuffer on ifproxy destruction - the caller
  will do this for us.
- Make find_proxy_manager add a reference to the proxy manager and
  make proxy_manager_construct return an object with a valid
  ref-count.
- Remove stray not operator to fix a memory leak / crash in
  proxy_manager_destroy.
- More debug messages, especially on errors.
- Fix ref-count leak in the Class Factory proxy.
- Add a test case for IClassFactory_CreateInstance.
2005-01-19 17:00:20 +00:00
Robert Shearman
b5a10936bd Initialize clsid member to the marshaler clsid to fix custom
marshaling.
2005-01-17 19:32:25 +00:00
Robert Shearman
4c8d59dd91 Implement table marshaling. 2005-01-17 13:39:40 +00:00
Robert Shearman
5ce396f9bd - Remove obsolete structs, rearrange things to group the structs
together and to group similar functions.
- Document thread-safety of members of structs.
2005-01-14 17:20:27 +00:00
Robert Shearman
ca608933dd Make proxy shutdown test succeed by releasing the channel on
disconnect.
2005-01-14 17:20:13 +00:00
Robert Shearman
0e18914481 - Add documentation for most Co* functions.
- Move several functions into different files to group them with
  similar functions.
2005-01-14 17:05:36 +00:00
Robert Shearman
6036a773e2 - The apartment reference should be held while the stub manager
reference is held.
- Fix same apartment-unmarshal detection.
2005-01-14 16:48:34 +00:00
Robert Shearman
ead057c4b7 - Don't use the pipe caching code because it doesn't work correctly at
the moment.
- Always write disconnect reply packet, even in failure cases.
2005-01-14 15:59:01 +00:00
Robert Shearman
a84e7d7b75 Destroy stubs on apartment shutdown. 2005-01-14 15:11:55 +00:00
Mike Hearn
ba0475e738 Force context switch on chanbuf disconnect to avoid a race in the test
suite.
2005-01-14 15:11:24 +00:00
Christian Costa
a010e3b3fa CoInitialize(Ex) should return S_FALSE when COM is already initialized
for the current thread.
2005-01-12 19:58:09 +00:00
Robert Shearman
452491bd03 - Document CoSetState & CoGetState.
- Rewrite them to only retrieve TLS info once.
- Remove trailing whitespace in COM_CurrentInfo.
2005-01-12 19:48:39 +00:00
Robert Shearman
2891bc53ba Remove wine_marshal_data: it is unneeded and there is no equivalent in
STDOBJREF.
2005-01-12 19:48:20 +00:00
Robert Shearman
de95de1865 - Force creation of thread queue to stop PostThreadMessage from
failing.
- Remove incorrect comment.
2005-01-12 19:28:37 +00:00
Robert Shearman
89f5c8241f The way apartments are used has changed, so fix up the hacks in the
RPC code that haven't yet been updated.
2005-01-12 19:27:22 +00:00
Robert Shearman
36f482cb7d - Make MTA dynamically allocated so that proxies and other resources
are freed at the proper time.
- Changed/removed some incorrect comments regarding apartments.
2005-01-12 19:27:04 +00:00
Bill Medland
9c6de52bb2 Corrected testing for multithreaded (based upon observations by Paul
Vriens, Christian Costa and Robert Shearman).
Added TRACE for investigating OXID errors.
2005-01-11 15:45:03 +00:00
Mike McCormack
71424b80e5 Tests and fixes for StgOpenStorage. 2005-01-11 15:08:08 +00:00
Robert Shearman
68fc5f8890 Add tests for trying to unmarshal from a bad stream and for testing
what interfaces the proxy exposes.
2005-01-11 10:45:52 +00:00
Robert Shearman
c353f85082 - Document how thread-safety is ensured for each member of the
stub_manager and ifstub structs.
- Make stub_manager ref counted to ensure it doesn't get freed whilst
  it is still being used.
- ifstubs are now freed only when the controlling stub_manager is freed.
- Rename stub_manager_ref/unref to stub_manager_ext_addref/release
  respectively and make then take an unsigned long to prevent
  malicious callers from passing in a negative value and corrupting
  the ref count.
2005-01-11 10:45:34 +00:00
Mike McCormack
6f20133705 Test and fix a few problems with OLE storage streams. 2005-01-11 10:44:28 +00:00
Mike McCormack
b146b75c27 Test and fix StgCreateDocFile grfModes. 2005-01-10 12:26:25 +00:00
Paul Vriens
202b340a51 - use Interlocked* functions in AddRef and Release.
- store the result of the Interlocked functions and use only this.
2005-01-09 17:29:21 +00:00
Eric Pouech
cf1d00bb08 Removed excessive statement (break after return or goto, not useful
break, not needed vars...)
2005-01-09 16:42:53 +00:00
Robert Shearman
86d63bbbac Rename iid in wine_marshal_id to ipid and use IPIDs instead of IIDs in
the stub manager.
2005-01-07 15:33:41 +00:00
Robert Shearman
090003360f The current architecture cannot handle pipes changing address, so use
a static array. Fixes memory corruption that sometimes occurs when
using multiple pipes.
2005-01-07 15:33:26 +00:00
Robert Shearman
b2edf2f03c No need to add a reference to the apartment from new_stub_manager as
we don't hold on to an apartment pointer.
2005-01-06 20:43:48 +00:00
Robert Shearman
23e390a223 - Make struct oletls ref counted so that it is only detached from the
apartment on the final CoUninitialize.
- Decrease the size of the crit sec on destroying an apartment - it is
  only needed for touching the apartment list.
- Small cleanups.
2005-01-06 19:39:07 +00:00
Robert Shearman
67bae9f213 ConnectNamedPipe returning ERROR_PIPE_CONNECTED is not an error. 2005-01-06 19:38:48 +00:00
Robert Shearman
b5e4d1a8d8 The channel buffer can be NULL if the proxy is disconnected, so check
for this before releasing it.
2005-01-05 17:30:20 +00:00
Robert Shearman
9f426df0a8 - Fix race on apartment creation.
- Display errors in decimal to make searching for the meaning in
  winerror.h easier.
2005-01-05 17:30:04 +00:00
Mike Hearn
a6a416cb4e - Make apartment access thread-safe by introducing refcounting and
wider usage of the apartment lock.
- Rework OLE TLS management to eliminate uninitialised apartments and
  parent chaining.
2005-01-05 17:14:33 +00:00
Mike McCormack
a246306870 Allow COM to start services containing COM servers. 2005-01-05 13:22:10 +00:00
Robert Shearman
85763a1711 - Add tracing for proxy ref count functions.
- Release the channel on proxy destruction.
2005-01-04 20:33:02 +00:00
Mike Hearn
73318dab8f Add a DCOM todo list. 2005-01-04 20:32:47 +00:00
Robert Shearman
2835633789 Implement proxy manager. 2005-01-04 11:58:23 +00:00
Robert Shearman
dee74a6ec9 Make the ClassFactory proxy support aggregation. 2005-01-04 11:47:52 +00:00
Michael Stefaniuc
15a308a9d7 Do not check for non NULL pointer before HeapFree'ing it. It's
redundant.
2005-01-03 14:56:42 +00:00
Mike Hearn
054f9ecc3c Comment out an assert, as we don't yet implement IRemUnknown. 2005-01-03 14:34:09 +00:00
Robert Shearman
5d7d188df5 - Move named pipe macros into rpc.c.
- Remove unneeded function.
2004-12-27 19:27:57 +00:00
Robert Shearman
2b747d4e50 Implement COM local servers using table marshaling to avoid doing the
marshaling in a child thread where COM has not been initialized.
2004-12-27 19:24:55 +00:00
Mike Hearn
5475a2e617 - Implement the COM stub manager, refactor the current stub code.
- Begin implementing interface stubs.
2004-12-27 19:21:47 +00:00
Mike Hearn
737e67b17b Propagate apartments through the intermediate threads, make listener
thread apartment scoped.
2004-12-27 16:59:28 +00:00
Michael Stefaniuc
5ad7d858e0 Do not check for non NULL pointer before HeapFree'ing it. It's
redundant.
2004-12-23 17:06:43 +00:00