You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.0 KiB
66 lines
1.0 KiB
|
|
|
|
#include "precomp.h"
|
|
|
|
DWORD
|
|
SPDDestroyClientContextHandle(
|
|
DWORD dwStatus,
|
|
HANDLE hFilter
|
|
)
|
|
{
|
|
DWORD dwError = 0;
|
|
|
|
|
|
switch (dwStatus) {
|
|
|
|
case RPC_S_SERVER_UNAVAILABLE:
|
|
case RPC_S_CALL_FAILED:
|
|
case RPC_S_CALL_FAILED_DNE:
|
|
case RPC_S_UNKNOWN_IF:
|
|
|
|
RpcTryExcept {
|
|
|
|
RpcSsDestroyClientContext(&hFilter);
|
|
|
|
} RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) {
|
|
|
|
dwError = TranslateExceptionCode(RpcExceptionCode());
|
|
BAIL_ON_WIN32_ERROR(dwError);
|
|
|
|
} RpcEndExcept
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
dwError = dwStatus;
|
|
break;
|
|
|
|
}
|
|
|
|
error:
|
|
|
|
return (dwError);
|
|
}
|
|
|
|
|
|
int
|
|
RPC_ENTRY
|
|
I_RpcExceptionFilter(
|
|
unsigned long uExceptionCode
|
|
)
|
|
{
|
|
int i = 0;
|
|
|
|
|
|
for (i = 0; i < FATAL_EXCEPTIONS_ARRAY_SIZE; i ++) {
|
|
|
|
if (uExceptionCode == guFatalExceptions[i]) {
|
|
return EXCEPTION_CONTINUE_SEARCH;
|
|
}
|
|
|
|
}
|
|
|
|
return EXCEPTION_EXECUTE_HANDLER;
|
|
}
|
|
|