Commit Graph

114 Commits

Author SHA1 Message Date
Francois Gouget
b0bde6b87c Assorted spelling fixes. 2007-01-18 12:56:52 +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
beaaf0514f ole32: Fix a comment in rpc_sendreceive_thread that wasn't correct. 2007-01-10 12:02:26 +01:00
Francois Gouget
386bb905e7 ole32: Print GetLastError() in decimal with '%u'. 2007-01-06 11:40:43 +01:00
Rob Shearman
2db1d0de38 ole32: Make sure to reset the message state if it has been changed in RPC_ExecuteCall before returning.
Fix the hrFault parameter passed into the ClientNotify function in 
ClientRpcChannelBuffer_SendReceive so that it is correct in the case of 
messages dispatched with PostMessage.
Only unmarshal ORPCTHAT for non-fault packets.
2007-01-04 21:12:36 +01:00
Rob Shearman
7a5d5c5503 ole32: Fix the calculation of message_state->prefix_data_len in two places where it would come out negative. 2007-01-02 20:49:07 +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
aca17cd120 ole32: Track the pending call count so that the correct call type can be passed to the message filter HandleInComingCall function. 2006-12-24 13:07:35 +01:00
Rob Shearman
e236edb91e ole32: Send a causality ID in the ORPCTHIS header for a call.
Use the causality ID to determine whether this is a top-level or a 
nested (called-back) call for the purposes of IMessageFilter::HandleInComingCall.
2006-12-20 12:41:01 +01:00
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