72 lines
1.3 KiB
C
72 lines
1.3 KiB
C
/*++
|
||
|
||
Copyright (C) Microsoft Corporation, 1992 - 1999
|
||
|
||
Module Name:
|
||
|
||
dispatch.h
|
||
|
||
Abstract:
|
||
|
||
Author:
|
||
|
||
Michael Montague (mikemon) 11-Jun-1992
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#include <sysinc.h>
|
||
#include <rpc.h>
|
||
#include <rpcdcep.h>
|
||
#include <dispatch.h>
|
||
|
||
unsigned int
|
||
DispatchToStubInC (
|
||
IN RPC_DISPATCH_FUNCTION Stub,
|
||
IN OUT PRPC_MESSAGE Message,
|
||
OUT RPC_STATUS * ExceptionCode
|
||
)
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Dispatch a remote procedure call to a stub. This must be in C
|
||
because cfront does not support try-except on MIPS.
|
||
|
||
Arguments:
|
||
|
||
Stub - Supplies the pointer to the function to dispatch to.
|
||
|
||
Message - Supplies the request and returns the response.
|
||
|
||
ExceptionCode - Returns the exception code if an exception
|
||
occured.
|
||
|
||
Return Value:
|
||
|
||
A non-zero value will be returned in an exception occured.
|
||
|
||
--*/
|
||
{
|
||
unsigned int ExceptionHappened = 0;
|
||
|
||
RpcTryExcept
|
||
{
|
||
(*Stub)(Message);
|
||
}
|
||
|
||
// Return "non-fatal" errors to clients. Catching fatal errors
|
||
// makes it harder to debug.
|
||
RpcExcept(I_RpcExceptionFilter(RpcExceptionCode()))
|
||
{
|
||
ExceptionHappened = 1;
|
||
*ExceptionCode = RpcExceptionCode();
|
||
ASSERT(*ExceptionCode != RPC_S_OK);
|
||
}
|
||
RpcEndExcept
|
||
|
||
return(ExceptionHappened);
|
||
}
|
||
|