Rob Shearman
a089e57983
ole32: Pass in the IID and IUnknown* of the object being executed to the server notification and message filter functions.
2006-12-20 12:40:38 +01:00
Rob Shearman
9208eef55c
ole32: Call the message filter for incoming calls.
2006-12-20 12:40:30 +01:00
Rob Shearman
c0a25d3565
ole32: Call ServerNotify for channel hooks.
...
Store the SChannelHookCallInfo structure in the message state.
2006-12-20 12:40:03 +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
1dc5dec6e6
ole32: Marshal the ORPCTHIS structure prefixed to the client data when doing ORPC calls.
...
This is done by putting the ORPCTHIS data into the buffer when calling
IRpcChannelBuffer::GetBuffer on the client side and then storing the
amount we increased the buffer in a structure stored in the Handle
field. This is done to present the correct Buffer pointer to the proxy
so that it writes its data after the ORPCTHIS data.
Unmarshal the data on the server side (during RPC_ExecuteCall) and make
sure the data is consistent according to NDR rules. Also add several
checks on the unmarshaled data that are specified by the DCOM draft
specification.
2006-12-20 12:36:43 +01:00
Rob Shearman
fff2d8e82b
ole32: Re-enable the code that unregisters interfaces with the RPC runtime.
2006-11-13 14:32:45 +01:00
Rob Shearman
b1bfad067b
ole32: Fix a memory leak on the error path of dispatch_rpc.
2006-10-27 11:59:58 +02:00
Michael Stefaniuc
21ff87bf50
ole32: Win64 printf format warning fixes.
2006-10-16 10:53:28 +02:00
Huw Davies
fead72e8a7
ole32: Don't return from CoRegisterClassObject until we have created the named pipe.
...
Also don't fail if the client connects to the pipe between CreateNamedPipe and ConnectNamedPipe.
2006-09-28 11:56:08 +02:00
Robert Shearman
6bf6caa69d
ole32: Add a reference to the stream in RPC_StartLocalServer since we
...
release a reference to it when the local server thread dies.
2006-09-07 11:43:49 +02:00
Robert Shearman
679dfb029d
ole32: Return errors if the attempt to start a LocalService object fails.
2006-08-28 17:48:47 +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
352d9e2d67
ole32: Free the buffer allocated in local_server_thread (found by Smatch).
2006-07-17 13:43:44 +02:00
Robert Shearman
aa09031c78
ole32: Reuse event handles used for COM calls.
...
This reduces the number of server calls during a COM call by half.
2006-06-19 10:28:20 +02:00
Robert Shearman
c60c28cf08
ole32: If IRpcStubBuffer_Invoke fails, we should raise an exception to
...
tell the RPC runtime that the call failed.
2006-06-09 21:11:20 +02:00
Jonathan Ernst
360a3f9142
Update the address of the Free Software Foundation.
2006-05-23 14:11:13 +02:00
Robert Shearman
af6d97ad36
ole32: Exception handling shouldn't be needed around the call to IRpcStubBuffer_Invoke.
...
It should have its own exception handler to catch any exceptions that are raised.
2006-05-10 19:24:24 +02:00
Robert Shearman
714b66e945
ole: Use ncalrpc instead of ncacn_np as the RPC transport.
...
Use ncalrpc instead of ncacn_np as the transport as this is more similar
to how ole32 from NT works and should also be compatible with rpcrt4
from Win9x, allowing more combinations of dlls to work.
2006-03-31 17:38:43 +02:00
Robert Shearman
650ac14219
ole: Use the thread pool for executing RPC calls for better performance
...
(after the thread pool has been improved).
2006-03-20 12:00:50 +01:00
Robert Shearman
7406cc210b
ole: Implement IRpcChannelBuffer::GetDestCtx on the client side.
2006-03-06 11:09:34 +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
Alexandre Julliard
be22a96847
Include wine/port.h in files that use exceptions.
2006-02-07 16:31:21 +01:00
Robert Shearman
1b7d346d1f
ole: Verify that the proxy is being used in the correct thread.
2006-01-20 16:16:08 +01:00
Robert Shearman
b3041ba6ad
ole: Optimisation for COM Calls.
...
Add an optimisation to yield and try to allow the RPC to run before
waiting for messages and RPCs to arrive.
2006-01-14 17:45:49 +01:00
Robert Shearman
f431353058
ole: Fix crash in RpcChannelBuffer_SendReceive.
...
Initialise apt to NULL since ipid_to_apt_stubbuffer no longer does
this for us.
2006-01-12 11:53:32 +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
d175f154ba
ole: Report and clean up after PostMessage failures.
2006-01-10 20:41:22 +01:00
Robert Shearman
a02cb3ebd6
ole: Pass a channel into IRpcStubBuffer::Invoke.
...
Create a server channel and store this in the ifstub.
Rename ipid_to_apt_and_stubbuffer to ipid_get_dispatch_params and make
the function return an HRESULT.
Return the channel for the ifstub in ipid_get_dispatch_params.
2006-01-10 20:41:22 +01:00
Robert Shearman
8e5b36147d
ole: Reduce the access rights required by start_local_service.
2006-01-10 20:41:22 +01:00
Robert Shearman
c46386ff5c
ole: Return the last error if we couldn't open the requested service.
...
Fix the ok/failed message.
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
1eda42ccac
ole: Prefer services over servers.
...
Attempt to start as a local service before attempting to start as a
local server for the CLSCTX_LOCAL_SERVER case.
2006-01-09 18:40:42 +01:00
Alexandre Julliard
dbc14a5cb5
ole32: Revert exception handler change.
...
The handler does the opposite of normal page fault handlers.
2005-12-19 17:44:56 +01:00
Alexandre Julliard
ae964ac801
Take advantage of the __EXCEPT_PAGE_FAULT macro.
2005-12-16 17:17:57 +01:00
Alexandre Julliard
db7920bb44
We no longer need to handle EXCEPTION_PRIV_INSTRUCTION on page faults.
2005-12-16 16:37:12 +01:00
Robert Shearman
ef8ae2d763
OLE: Fix a typo where brackets were missing.
2005-12-06 10:57:58 +01: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
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
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
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
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
Mike McCormack
c7fdb4565a
Fix gcc 4.0 -Wpointer-sign warnings.
2005-07-05 11:02:54 +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
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
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
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
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
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
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
ad34f3dc5e
- Generate machine-local IPIDs.
...
- Make pipes be uniquely identified only by their IPID.
2005-01-25 10:57:24 +00:00
Mike Hearn
70c1c26869
Various formatting/style changes.
2005-01-21 10:15:29 +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
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
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
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
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
67bae9f213
ConnectNamedPipe returning ERROR_PIPE_CONNECTED is not an error.
2005-01-06 19:38:48 +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
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
Robert Shearman
2fa9a0a6fd
Remove unneeded includes and the unused COMPOBJ_hInstance32 variable.
2004-12-14 15:28:58 +00:00
Robert Shearman
2c3de6db24
- Make the wine_marshal_id structure more like the DCOM OBJREF
...
structure, by replacing the process id field by apartment id (OXID),
changing the users of the process id field to use the new field and
renaming the objectid field to oid.
- Fix StdMarshalImpl_UnmarshalInterface to invalidate and release its
stub when doing a same apartment marshal.
2004-12-08 17:49:30 +00:00
Mike Hearn
36aee71988
Rename the STUBMGR thread to more accurately reflect its purpose.
2004-12-07 17:01:40 +00:00
Francois Gouget
486d020c1b
Don't define COBJMACROS in objbase.h.
...
Update the Wine sources accordingly.
2004-10-07 03:06:48 +00:00
Joris Huizer
34cffce6f9
Ref count increment/decrement cleanup.
2004-09-24 01:16:53 +00:00
Alexandre Julliard
241a4c34b1
Get rid of the non-standard ICOM_THIS macro.
2004-09-09 21:03:58 +00:00
Alexandre Julliard
f714b39762
Get rid of the no longer used ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
...
macro.
2004-08-23 19:39:48 +00:00
Alexandre Julliard
48c4bb3c31
Get rid of the non-standard ICOM_VTABLE macro.
2004-08-12 23:00:51 +00:00
Robert Shearman
5c7c5fafb6
- Add static to non-exported marshal functions.
...
- Remove unused marshal functions.
- Rename several RPC functions.
2004-08-02 18:47:31 +00:00
Alexandre Julliard
6cd1a7d9a9
Authors: Robert Shearman <rob@codeweavers.com>, Mike Hearn <mh@codeweavers.com>
...
Fix infinite loops by checking the return value of _invoke_onereq and
bailing appropriately.
2004-07-30 18:43:07 +00:00
Mike Hearn
5169f3c5d2
Implement disconnect for proxies so that stubs are properly
...
destroyed.
2004-07-29 23:58:12 +00:00
Alexandre Julliard
26541a00c9
Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
...
Add a comment on the SendReceive behaviour. Improve two others.
2004-07-29 02:43:36 +00:00
Robert Shearman
f5ed953c10
Set RPC data representation.
2004-07-23 22:58:13 +00:00
Mike Hearn
1cc05ff148
Pass -Embedding switch to EXE servers, more tracing.
2004-07-23 19:10:13 +00:00
Robert Shearman
2e93adc5c7
- Remove unneeded STUBMGR_Start call.
...
- Cleanup compobj_private.h.
2004-07-22 23:44:54 +00:00
Mike Hearn
602cce0ebf
Unref stub after invoking on it.
2004-07-22 19:43:27 +00:00
Mike McCormack
e42d8aef24
Fix a few serious race conditions in the OLE object pipe server.
2004-07-15 22:07:44 +00:00
Ge van Geldorp
399901e054
Rename LARGE_INTEGER and ULARGE_INTEGER members "s" to "u" to conform
...
with PSDK.
2004-01-23 01:51:33 +00:00
Oleg Prokhorov
de12a97041
Another portion of HeapReAlloc fixes.
2003-10-14 05:24:20 +00:00
Alexandre Julliard
20c169e0a4
Fixed a few more headers dependency issues.
2003-09-09 19:39:31 +00:00
Alexandre Julliard
e37c6e18d0
Fixed header dependencies to be fully compatible with the Windows
...
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Dan Kegel
743af54541
Roll loop back up to avoid code duplication.
2003-02-14 23:30:50 +00:00
Michael Stefaniuc
3dcd451bf6
Remove dead code after return or properly comment it out.
2003-02-12 01:23:17 +00:00
Dimitrie O. Paun
297f3d898d
Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them.
2003-01-07 20:36:20 +00:00
Alexandre Julliard
87fa2d586d
Fixed a few problems caused by the new objidl.idl.
2002-12-19 22:16:35 +00:00
Alexandre Julliard
8710a79d54
Compile ole32 with -DSTRICT.
2002-11-22 04:43:02 +00:00
Bill Medland
978a934245
Fixed incorrect pointer-cast arithmetic.
...
Extended ole trace information.
Don't lose the existing pipes on alloc failure.
2002-06-04 00:53:21 +00:00