Commit Graph

474 Commits

Author SHA1 Message Date
Tatyana Fokina 9d4fcaf2bb ole32: Removed unused parametrs keyname and valuename in COM_RegReadPath. 2012-11-05 11:41:29 +01:00
Alistair Leslie-Hughes 939b1bbe21 ole32: Add CoGetDefaultContext stub. 2012-09-20 19:53:25 +02:00
Jacek Caban c6793a2e27 ole32: Added ISynchronizeHandle implementation. 2012-08-13 16:28:49 +02:00
Jacek Caban 153b94b3c5 ole32: Use proper helpers for iface calls. 2012-08-13 16:28:48 +02:00
Michael Stefaniuc 43ae84636a ole32: Avoid TRUE:FALSE conditional expressions. 2012-08-13 11:50:42 +02:00
Alexandre Julliard 2736d28064 ole32: Add a NULL pointer check in CoDisconnectObject. 2012-05-14 18:24:19 +02:00
Alexandre Julliard 0f3e60747f ole32: Process all pending messages in CoWaitForMultipleHandles before waiting again, otherwise we may not wake up. 2011-11-29 21:22:40 +01:00
Francois Gouget ed03674bc3 ole32: Delete the compobj and rpc static critical sections when unloading the dll. 2011-11-17 11:37:56 +01:00
David Hedberg a0980b47c8 ole32: Add ManualResetEvent implementation. 2011-05-30 17:55:43 +02:00
David Hedberg ea14a6b2e7 oleaut32: Fix CLSIDToString behaviour when passed an invalid CLSID-string.
In some cases, Excel 2007 apparently relies on CLSIDToString properly
parsing an "invalid" CLSID string where extra bytes are appended.
2011-04-28 18:17:18 +02:00
Alexandre Julliard 8c2a9414a6 ole32: Cleanup return value handling in CoWaitForMultipleHandles. 2011-01-21 14:51:37 +01:00
Maarten Lankhorst 75801f095d ole32: Handle alertable wait in CoWaitForMultipleHandles. 2011-01-21 14:44:48 +01:00
Michael Stefaniuc 32fe620c88 ole32: Use ifaces instead of vtbl pointers in Context. 2010-12-09 12:23:49 +01:00
Alexandre Julliard 431e369f62 ole32: Convert dll registration to the IRegistrar mechanism. 2010-12-03 19:51:08 +01:00
Nikolay Sivov 2c80e14eec ole32: Use window property to store registered drop target. 2010-05-18 08:53:08 +02:00
Mikhail Maroukhine f930c87fd6 objbase.h: CLSIDFromString: Add constness to the parameters declaration in accordance with MSDN. 2010-03-29 12:11:02 +02:00
Vincent Povirk 975c820fce ole32: Don't register an IMallocSpy object when the ole trace is used.
There's no need for this. Any useful information we could get out of it
is availble from the olemalloc channel, and it means that the ole channel
changes behavior in a way that's visible to programs.
2010-03-22 10:47:47 +01:00
Nikolay Sivov 825a635692 ole32: Turn FIXME to TRACE for CoGetTreatAsClass. 2010-03-16 17:04:15 +01:00
Alexandre Julliard 44a9bae9f8 ole32: Fix some pointer cast warnings on 64-bit. 2009-12-09 12:04:01 +01:00
Rob Shearman 510ed24f9a ole32: Cope with double quotes in paths for libraries to be loaded from the registry. 2009-11-30 12:48:05 +01:00
Rob Shearman 9943facb26 ole32: Fix error code returned by CoGetClassObject/CoCreateInstance in CLSCTX_REMOTE_SERVER case. 2009-11-24 10:52:07 +01:00
Rob Shearman 24cccbf4d1 ole32: Add inproc handler object creation support for CoCreateInstance. 2009-11-24 10:46:12 +01:00
Rob Shearman d963e97f32 ole32: Objects registered as local servers don't need to support IClassFactory. 2009-11-20 16:38:56 +01:00
Nikolay Sivov 5b723235d8 ole32: Check source pointer in StringFromGUID2. 2009-10-06 11:57:20 +02:00
Francois Gouget 3cbeae820d ole32: Make apartment_addref() static. 2009-07-07 11:16:26 +02:00
Francois Gouget f8afcdbb7c ole32: Reorder some compobj functions to avoid forward declarations. 2009-07-07 11:16:22 +02:00
Hans Leidekker 6986d97f18 ole32: Use existing MTA in CoGetContextToken and CoGetObjectContext. 2009-07-03 13:06:17 +02:00
Hans Leidekker b9be397024 ole32: Implement CoGetContextToken. 2009-06-23 15:52:37 +02:00
Alexandre Julliard c98ce23fd2 ole32: Get rid of line feeds and tabs in traces. 2009-06-09 17:01:14 +02:00
Vincent Povirk b49d541cb5 ole32: Process sent and DDE messages in CoWaitForMultipleHandles. 2009-05-20 10:54:26 +02:00
Hans Leidekker bd4975acb0 ole32: Use existing MTA in CoGetClassObject and CoCreateInstance.
Custom actions in the CS3 installer depend on this.
2009-05-05 14:14:20 +02:00
Aric Stewart 46da8ef18b ole32: CoGetTreatAsClass should return S_FALSE if it cannot even find the key for the requested CLSID. 2009-04-24 11:51:35 +02:00
Alexandre Julliard 7b6dd2c9f8 ole32: Get rid of WINE_StringFromCLSID and A->W conversions. 2009-03-12 13:09:52 +01:00
Alexandre Julliard 6b40f64e18 ole32: Make compobj.dll into a stand-alone 16-bit module. 2009-03-12 13:09:31 +01:00
Rob Shearman d974922698 ole32: Fix a memory leak in an error path in COMPOBJ_DllList_Add. 2009-03-09 12:04:35 +01:00
Andrey Turkin 644220b518 ole32: Prevent recursion when CLSIDFromString is passed empty string. 2009-01-20 12:23:11 +01:00
Andrey Turkin d0a345f914 ole32: Add a few fields to OLE TLS area to match native memory layout. 2009-01-19 14:46:02 +01:00
Andrey Turkin a06f568a2a ole32: Add CoGetCallContext and CoSwitchCallContext implementations. 2009-01-19 14:44:32 +01:00
Andrey Turkin 37d27c38ce ole32: Add IContextCallback interface to context object. 2009-01-15 12:42:12 +01:00
Alexandre Julliard 16b5e6b9b5 ole32: Register interfaces through dlldata.c as far as possible. 2008-12-02 20:52:09 +01:00
Maarten Lankhorst 08c78e07a9 ole32: Fix releasing spy. 2008-11-28 12:56:47 +01:00
Maarten Lankhorst 92dca953d9 ole32: Add Co*InitializeSpy functions. 2008-11-26 13:44:36 +01:00
Francois Gouget 66063ae4a4 ole32: Remove WINAPI on static functions where not needed. 2008-11-26 12:33:13 +01:00
Rob Shearman de03fe3c0f ole32: Update comments in compobj.c. 2008-09-16 22:33:14 +02:00
Michael Karcher 75bf84e60b ole32/compobj: Fix function name in comment. 2008-09-15 11:31:33 +02:00
Rob Shearman 064b6fce0c ole32: Fix testing of HRESULT types with not operator instead of comparing against S_OK.
This makes it more obvious what the code is doing.
2008-08-18 17:34:12 +02:00
Lei Zhang c7ce692d13 ole32: Silence FIXME from CoGetContextToken stub. 2008-07-22 13:03:18 +02:00
Alexandre Julliard a803fa3578 ole32: Make the apartment window a HWND_MESSAGE window. 2008-06-26 13:22:16 +02:00
Alexandre Julliard d324c42b4c ole32: Don't consider RPC_S_UUID_LOCAL_ONLY an error in CoCreateGuid.
Return a proper HRESULT for other errors.
2008-06-24 11:50:42 +02:00
Rob Shearman 8580198dc8 ole32: Keep track of the number of weak references to an object.
This is so that an object will only be released when a weak-reference is 
used after the last weak reference has been released (either by 
CoReleaseMarshalData or CoUnmarshalInterface + Release).
2008-04-29 12:35:26 +02:00
Austin English c531e2abdb Spelling fixes. 2008-04-23 12:31:07 +02:00
Austin English 1b24da3aa0 ole32: Spelling fixes. 2008-04-10 09:51:12 +02:00
Andrew Talbot 4971f2f687 ole32: Assign to structs instead of using memcpy. 2008-03-11 12:11:51 +01:00
Francois Gouget 29ef0b90ee Assorted spelling, punctuation and case fixes. 2008-03-03 12:04:48 +01:00
Alexandre Julliard de61fc5eca ole32: Added a CoGetContextToken stub. 2008-02-26 11:21:54 +01:00
Rob Shearman bfa6ddaeb7 ole32: Fix a potentially confusing combination of conditional and bitwise or operators by adding extra brackets. 2008-02-13 16:42:36 +01:00
Rob Shearman a10cf16449 ole32: Remove an assert that is useless and triggers warnings elsewhere in static analysis tools. 2008-02-13 16:42:30 +01:00
Rob Shearman e0d25c6394 ole32: Fix local-variable shadowing in apartment_hostobject_thread. 2008-02-13 16:42:23 +01:00
Gerald Pfeifer 76e7cc9423 ole32: Remove one noop check in CoWaitForMultipleHandles(). 2008-01-02 12:38:42 +01:00
Alexander Dorofeyev 188ef4e4f9 ole32: Fix wrong timeout check. 2007-12-24 13:30:56 +01:00
Lei Zhang d5e78c84c7 ole32: Print a fixme when an aggregation attempt fails. 2007-12-14 12:25:14 +01:00
Rob Shearman 31b2d81ea0 ole32: Ignore the threading model of the PSFactoryBuffer object created during standard marshaling.
This is so that we don't try to host it.
2007-12-03 11:55:00 +01:00
Rob Shearman f65e04770d ole32: Always create a window for the main apartment. 2007-12-03 11:54:16 +01:00
Rob Shearman d881005c4f ole32: Release the stream in COM_RevokeRegisteredClassObject. 2007-11-13 13:29:38 +01:00
Rob Shearman 433639f783 ole32: Free the memory associated with the open DLL list on unloading of ole32. 2007-11-12 11:46:23 +01:00
Rob Shearman 23dc7b6a67 ole32: Implement CoGetObjectContext. 2007-11-02 12:18:45 +01:00
Francois Gouget f76bea09d4 ole32: Fix the CoCreateGuid() ordinal in the documentation. 2007-10-15 14:06:25 +02:00
Damjan Jovanovic b9bdb2a6c2 ole32: Implement win16 COCREATEGUID. 2007-10-01 14:16:57 +02:00
Rob Shearman 97f389451d ole32: Fix the default unload delay to depend on the threading model of the component loaded. 2007-09-12 14:04:59 +02:00
Rob Shearman 5ffe867dc7 ole32: Implement CoFreeUnusedLibrariesEx.
Fix CoFreeUnusedLibraries to use a delay of 10 minutes when used with 
multi-threaded apartments.
2007-09-12 14:04:56 +02:00
Rob Shearman d845022819 ole32: Remove some dead code.
CoFreeUnusedLibraries doesn't do anything and COM_FlushMessageQueue 
won't actually allow any RPCs to be processed as the apartment has 
already been destroyed.
2007-07-16 22:46:45 +02:00
Andrew Talbot 66b05dde02 ole32: Constify some variables. 2007-06-29 14:30:48 +02:00
Dmitry Timoshkov 3c9e7a7f33 wine: Switch to using 'long' for INT_PTR type for 64-bit compatibility. 2007-05-25 20:37:56 +02:00
Rob Shearman be55a4bbe2 ole32: Fix hosting in main apartments.
The recently introduced code had a bug where it passed the wrong
values into apartment_findfromtype to find the main apartment. Since
this is now the only way the function is used, fix this bug by
changing apartment_findfromtype to apartment_findmain, which only
finds the main apartment.
2007-05-21 12:38:54 +02:00
Rob Shearman 600143d4fa ole32: Create host apartments to enable isolation of objects of incompatible threading models.
There should be one host apartment per apartment. Existing apartments 
should not be re-used, except in the case of the main apartment.
2007-05-18 14:42:37 +02:00
Rob Shearman ed79ddab1d ole32: Don't lookup the address for the DllGetClassObject function for ole32.dll in the apartment loaded dll list.
Call the function directly for a small performance boost.
2007-05-14 14:26:22 +02:00
Rob Shearman 70e8842924 ole32: Fix CoUninitialize to only free libraries that return S_OK from DllCanUnloadNow. 2007-05-14 14:26:17 +02:00
Rob Shearman 314f9fe509 ole32: Add documentation about registered class objects only being visible in the apartment in which they were registered. 2007-05-08 13:23:57 +02:00
Rob Shearman 7d7f9a59d0 ole32: Fix CoRevokeClassObject to return RPC_E_WRONG_THREAD if it was called from a different apartment than the one that called CoRegisterClassObject. 2007-05-08 13:23:51 +02:00
Rob Shearman 23e43d886e ole32: Split CoRevokeClassObject into a separate function, COM_RevokeRegisteredClassObject, which acts on a RegisteredClass object. 2007-05-08 13:23:40 +02:00
Rob Shearman 51f85a765b ole32: COM_GetRegisteredClassObject should only retrieve objects that were registered in the current apartment. 2007-05-08 13:23:30 +02:00
Rob Shearman d76ab14479 ole32: Revoke registered class objects when the apartment they were registered in is destroyed, not when the last CoUninitialize is called. 2007-05-08 13:22:50 +02:00
Rob Shearman af2c349685 ole32: CoGetClassObject shouldn't return REGDB_E_KEYMISSING, so convert it to REGDB_E_CLASSNOTREG. 2007-05-08 13:22:23 +02:00
Rob Shearman c582136d0b ole32: Remove an unnecessary QueryInterface in CoRegisterClassObject that CoMarshalInterface will already do. 2007-05-02 15:03:28 +02:00
Rob Shearman 63ea015c65 ole32: Don't release the registered drop targets in OleUninitialize.
Do it in DLL_PROCESS_DETACH instead.
2007-04-05 13:25:18 +02:00
Rob Shearman ab7f796fcb ole32: Keep a list of the loaded dlls for each apartment.
Use it to make CoFreeUnusedLibraries per-apartment.
2007-04-04 21:28:36 +02:00
Rob Shearman 30721a88e3 ole32: Cache the address for the library's DllGetClassObject and DllCanUnloadNow in the OpenDll list entry. 2007-04-04 21:28:01 +02:00
Rob Shearman c40f1b6659 ole32: Move the handling of loading a dll and getting an in-process object from it to an apartment-specific function.
Use it to implement apartment_hostobject in a cleaner way so that it is 
guaranteed to not recurse.
2007-04-04 21:27:07 +02:00
Rob Shearman 679bfdab28 ole32: Move the in-process module loading to COMPOBJ_DllList_Add. 2007-04-04 21:26:53 +02:00
Rob Shearman 247255568c ole32: Convert the OpenDll list to a standard Wine list.
Store the library name and make it reference counted.
2007-04-04 21:26:47 +02:00
Rob Shearman f8789122aa ole32: Implement MkParseDisplayName. 2007-03-28 12:12:49 +02:00
Rob Shearman 2514c0141e ole32: Move GetClassFile to moniker.c and move OleRun to ole2.c. 2007-03-27 13:00:44 +02:00
Rob Shearman 8e0145242b ole32: Add documentation for CoGetClassObject and GetClassFile. 2007-03-27 13:00:29 +02:00
Rob Shearman 3acb0a878d ole32: The 16-bit version of CoDisconnectObject is not compatible with the 32-bit version, so create a separate stub for the former. 2007-03-21 15:55:22 +01:00
Huw Davies a8c72b76cf ole32: Only retrieve posted and paint messages in an STA message loop. 2007-03-13 11:52:41 +01:00
Rob Shearman f0189b8789 ole32: Implement CoAddRefServerProcess and CoReleaseServerProcess. 2007-03-09 21:17:47 +01:00
Rob Shearman 789f344c2b ole32: Make RegisteredClass list into a standard Wine list. 2007-03-09 21:17:42 +01:00
Rob Shearman 15a0b7fad5 ole32: Don't keep the local server named pipe open for a single-use object. 2007-03-09 21:16:44 +01:00
Rob Shearman 880542a9f8 ole32: Close the named pipe after revoking local server objects. 2007-03-09 21:16:37 +01:00
Rob Shearman c826515e55 ole32: REGCLS_MULTIPLEUSE implies CLSCTX_INPROC_SERVER in CoRegisterClassObject. 2007-03-09 21:16:31 +01:00
Rob Shearman 87155d654f ole32: Compare the class contexts in COM_GetRegisteredClassObject.
Only objects that have been registered for a class context that matches 
the requested class context should be returned.
2007-03-06 12:10:50 +01:00
Francois Gouget f5c6a71a65 ole32: Better match the PSDK types and fix the winapi_check warnings. 2007-02-20 20:29:10 +01:00
Rob Shearman ba25254d9f ole32: Remove some unneeded inclusions of headers.
Change some incorrect usages of SEEK_SET to the intended STREAM_SEEK_SET 
instead.
2007-01-10 12:08:51 +01:00
Rob Shearman 84158d6742 ole32: Remove a FIXME comment that no longer applies. 2007-01-10 12:02:24 +01:00
Rob Shearman ee99b6d743 ole32: Marshal the ORPCTHAT structure prefixed to the server data.
Unmarshal the data on the client side (during
ClientChannelBuffer_SendReceive) and call ClientNotify.
2006-12-27 14:34:15 +01:00
Rob Shearman 844037ab01 ole32: Performing a COM call from within the processing of a sent message during a wait for completion of another COM call is not allowed.
Add a test for the behaviour where RPC_E_CANTCALLOUT_ININPUTSYNCCALL is returned.
2006-12-24 13:08:02 +01:00
Rob Shearman 038c8e642a ole32: Call the MessagePending function for message filters. 2006-12-24 13:07:38 +01:00
Rob Shearman 5788ee9f05 ole32: Implement CoRegisterChannelHook and call channel hook methods on the client side. 2006-12-20 12:39:50 +01:00
Rob Shearman 7a5766346f ole32: Add some documentation for CoCreateInstance. 2006-12-07 11:51:13 +01:00
Dmitry Timoshkov 09fea0f83e ole32: Make some data const. 2006-11-28 12:36:17 +01:00
Huw Davies 241336c749 ole32: CoRegisterMessageFilter shouldn't crash on an uninitialized apartment. 2006-11-16 22:09:24 +01:00
Eric Pouech 5c0f35a2aa ole32: CoUninitialize: No longer access an object after it's been freed. 2006-10-24 11:32:38 +02:00
Francois Gouget ef998ea6cb Assorted spelling fixes. 2006-10-16 11:33:38 +02:00
Michael Stefaniuc 21ff87bf50 ole32: Win64 printf format warning fixes. 2006-10-16 10:53:28 +02:00
Robert Shearman f463b9d422 ole32: AppId is a value under the clsid key, rather than a key. 2006-08-28 17:48:45 +02:00
Robert Shearman 9038705919 ole32: Fix functions defined without specifying argument types by changing them to "(void)". 2006-08-28 17:48:40 +02:00
Robert Shearman 986027af9f ole32: Add support for main-threaded apartments.
A main-threaded apartment is the first single-threaded apartment in the 
process. It was designed to be used for legacy applications that don't 
want to think about threading at all, even if they are always called 
from the same context, as is the case for regular STAs.
2006-08-26 19:36:56 +02:00
Robert Shearman 83d24a6408 ole32: Move the opening of the AppId key for a clsid to a helper function. 2006-08-26 19:28:10 +02:00
Robert Shearman 619ba90dbe ole32: CoGetClassObject should host a single-threaded object in a
single-threaded apartment if executing in a multi-threaded apartment,
if one exists.
2006-08-26 19:27:52 +02:00
Robert Shearman c1eb2c7003 ole32: Get the threading model value for inproc classes and output a
fixme if we should create it in an apartment of another type.
2006-08-26 19:24:23 +02:00
Robert Shearman f42d61df0d ole32: Move some functions out of compobj.c that don't belong there and update the copyright statement. 2006-08-16 16:42:32 +02:00
Robert Shearman 0e99d795b7 ole32: Add some more tests for failure cases of Co* functions and make builtin ole32 pass them. 2006-08-16 16:42:01 +02:00
Robert Shearman 31726e3823 ole32: Add tests for the failure cases of CLSIDFromProgID and fix the function to conform to these. 2006-08-16 16:41:47 +02:00
Francois Gouget ce9b4baad8 Assorted spelling fixes. 2006-08-07 13:52:55 +02:00
Robert Shearman 6455b9e1a0 ole32: Fix CoLockObjectExternal to respect fLastUnlockReleases. 2006-08-03 22:23:13 +02:00
Alexandre Julliard 518ee99f6f ole32: Make some functions and variables static. 2006-08-02 13:31:26 +02:00
Robert Shearman 2308d49bcb ole32: Implement CoRegisterPSClsid. 2006-07-21 10:52:03 +02:00
Robert Shearman fac6bedda9 ole32: Improve CoRegisterMessageFilter and add tests for it. 2006-07-17 13:43:47 +02:00
Robert Shearman 69e10bf1ed ole32: Add validation of parameters to CoGetClassObject and make sure to initialise ppv to NULL. 2006-07-14 12:38:44 +02:00
Robert Shearman 11c1bcf6de ole32: Don't loop while peeking messages in CoWaitForMultipleHandles.
It increases the latency on completing the COM call and could result in 
the COM call never completing in some circumstances.
2006-07-13 16:26:25 +02:00
Robert Shearman 5f453db5cf ole32: Fix the return value of COM_RegReadPath and make it static. 2006-07-07 13:31:49 +02:00
Robert Shearman 628371021b ole32: When CoLockObjectExternal with fLock=TRUE is used on an object
that hasn't yet been marshaled then it should create a new stub
manager.
2006-06-30 20:44:02 +02:00
Robert Shearman b0efdcbdbd ole32: Implement CoGetObject. 2006-06-29 14:40:05 +02:00
Robert Shearman b5f7e818a1 ole32: Print an error if a DLL's DllGetClassObject fails as this is
usually a good indicator of a bug elsewhere in Wine.
2006-06-13 11:40:20 +02:00
Robert Shearman 51e22f42bb ole32: Implement CoQueryClientBlanket, CoImpersonateClient and
CoRevertToSelf on top of CoGetCallContext, which is a stub.
2006-06-09 21:11:02 +02:00
Robert Shearman f2bd261f12 ole32: Add a class factory for CLSID_InProcFreeMarshaler. 2006-05-25 10:43:29 +02:00
Robert Shearman 760208b2a5 uuid: Add some COM CLSIDs. 2006-05-25 10:38:57 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Marcus Meissner f937f72308 ole32: Fixed typo in debug statement. 2006-05-08 14:46:58 +02:00
Robert Shearman 6814b33aa3 ole32: Remove the fixme printed if CoGetClassObject fails in CoCreateInstance.
Remove the fixme printed if CoGetClassObject fails in
CoCreateInstance, because we already print an error in all cases and
the error more accurately pin-points the source of the problem.
2006-05-07 10:03:11 +02:00
Robert Shearman 8c7706bad0 ole32: Don't process posted messages in CoWaitForMultipleHandles.
Tests with native show that during COM calls posted messages aren't
retrieved other than COM calls so change the PeekMessage parameters in
CoWaitForMultipleHandles to duplicate this.
2006-03-30 12:43:17 +02:00
Robert Shearman ff85f892c6 ole32: Try to retrieve messages that are COM calls first.
Try to retrieve messages that are COM calls first in
CoWaitForMultipleHandles before retrieving other types.
2006-03-30 12:42:50 +02:00
Robert Shearman a1548b45d8 ole32: Put the PeekMessage call of CoWaitForMultipleHandles into a separate function.
Put the PeekMessage call of CoWaitForMultipleHandles into a separate
function so that the order and type of the messages retrieved can be
customised in the future.
2006-03-30 12:42:35 +02:00
Robert Shearman 8c551796a9 ole32: Whether the message loop is entered in CoWaitForMultipleHandles,
should depend on whether the current apartment is a single threaded one.
2006-03-30 12:42:01 +02:00
Robert Shearman 3091aa5302 ole32: Pass the no yield flag to PeekMessage.
Pass the no yield flag to PeekMessage since we sleep in
MsgWaitForMultipleObjectsEx and the extra context switch is wasteful.
2006-03-30 12:41:32 +02:00
Robert Shearman f4a8ba9548 ole: Fallthrough from local activation in CoGetClassObject.
If local-server or local-service activation doesn't work in
CoGetClassObject then fallthrough instead of returning from the
function.
2006-02-24 11:23:16 +01:00
Robert Shearman 6c529a7273 ole: Make the CoCreateInstance test succeed.
Move the uninitialized apartment check after zeroing out the return
value.
2006-02-22 22:14:52 +01:00
Robert Shearman a37a5014a2 ole: Change the Apartment Model field to a boolean.
Change the apartment model field to a boolean that just specifies
whether the apartment is multi-threaded or not and fix up all the
places where this is used.
Fixes a bug where we would return an error if the previous apartment
model passed into CoInitializeEx matches the new apartment model, but
additional optimisation flags are specified.
2006-02-20 11:15:57 +01:00
Robert Shearman af7c076337 ole32: Print an error message if the apartment isn't initialised in
CoCreateInstance.
2006-02-07 16:25:25 +01:00
Huw Davies aaf7a974a9 ole: ProgIDFromCLSID sets progid to NULL on failure. 2006-01-20 19:41:56 +01:00
Robert Shearman 6e0029f83d ole: Fix WM_QUIT Handling in CoWaitForMultipleHandles.
When a WM_QUIT message in encountered in CoWaitForMultipleHandles then
it should repost the WM_QUIT message and then switch to waiting
without checking messages.
2006-01-20 16:14:23 +01:00
Robert Shearman b4fe7ea7c6 ole: Update the COM todo list. 2006-01-18 11:29:20 +01:00
Robert Shearman cd2fafb775 ole: Defer apartment window creation until the first object is marshalled. 2006-01-10 20:41:23 +01:00
Robert Shearman fcba783fc7 ole: Add an accessor function for an apartment's window. 2006-01-10 20:41:22 +01:00
Robert Shearman b75db2d9de ole: Join the MTA if necessary when executing an RPC call.
Join the MTA if necessary when executing an RPC call to ensure that it
is executing with a valid apartment and won't fail for certain COM
calls.
2006-01-09 18:41:19 +01:00
Robert Shearman cc4669cc5f ole: Remove __CLSIDFromStringA.
Move the ANSI implementation of CLSIDFromString to ole16.c and change
CLSIDFromString to only deal with Unicode strings.
2006-01-09 18:40:17 +01:00
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
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 c23cb51d52 Pass WM_QUIT to outer modal loop. 2005-10-03 11:02:37 +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 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
Robert Shearman 43df8b61bb Add exception handling for stubs. 2005-09-14 10:07:01 +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
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 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
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
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
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 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
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
Mike McCormack 3c5790646f Add a stub implementation of CoIsHandlerConnected. 2005-05-11 12:57:16 +00:00
Francois Gouget 6b10c324c5 Assorted spelling fixes. 2005-03-30 17:08:31 +00:00
Huw Davies e42a23d2d3 Don't close reg key if the open failed. 2005-03-29 13:06:57 +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
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
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
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 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
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 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 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 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 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 ad34f3dc5e - Generate machine-local IPIDs.
- Make pipes be uniquely identified only by their IPID.
2005-01-25 10:57:24 +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 4c8d59dd91 Implement table marshaling. 2005-01-17 13:39:40 +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 a84e7d7b75 Destroy stubs on apartment shutdown. 2005-01-14 15:11:55 +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