/*********************************************************************** * NdrFreeBuffer [RPCRT4.@] */ void WINAPI NdrFreeBuffer(PMIDL_STUB_MESSAGE pStubMsg) { TRACE("(pStubMsg == ^%p)\n", pStubMsg); if (pStubMsg->fBufferValid) { I_RpcFreeBuffer(pStubMsg->RpcMsg); pStubMsg->fBufferValid = FALSE; } }
static WINE_EXCEPTION_FILTER(rpc_filter) { packet_state* state; PRPC_MESSAGE msg; state = TlsGetValue(worker_tls); msg = state->msg; if (msg->Buffer != state->buf) I_RpcFreeBuffer(msg); msg->RpcFlags |= WINE_RPCFLAG_EXCEPTION; msg->BufferLength = sizeof(DWORD); I_RpcGetBuffer(msg); *(DWORD*)msg->Buffer = GetExceptionCode(); return EXCEPTION_EXECUTE_HANDLER; }