mirror of https://github.com/lianthony/NT4.0
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.
106 lines
1.9 KiB
106 lines
1.9 KiB
/*++
|
|
|
|
Copyright (c) 1991-1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Caller.c
|
|
|
|
Abstract:
|
|
|
|
This module contains miscellaneous utility routines used by the
|
|
Workstation service.
|
|
|
|
Author:
|
|
|
|
Rita Wong (ritaw) 01-Mar-1991
|
|
|
|
Revision History:
|
|
|
|
21-Jul-1992 JohnRo
|
|
RAID 2274: repl svc should impersonate caller. Copied these routines
|
|
to NetLib from RitaW's WsImpersonateClient() and WsRevertToSelf()
|
|
in the wksta service.
|
|
|
|
--*/
|
|
|
|
|
|
// These must be included first:
|
|
|
|
#include <windef.h> // DWORD, VOID, etc.
|
|
#include <lmcons.h> // NET_API_STATUS.
|
|
#include <rpcutil.h> // My prototypes, NetpRpcStatusToApiStatus().
|
|
|
|
// These may be included in any order:
|
|
|
|
#include <netdebug.h> // NetpKdPrint(()), NetpAssert(), FORMAT_ equates.
|
|
#include <prefix.h> // PREFIX_ equates.
|
|
|
|
|
|
NET_API_STATUS
|
|
NetpImpersonateClient(
|
|
VOID
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function calls RpcImpersonateClient to impersonate the current caller
|
|
of an API.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
NET_API_STATUS - NERR_Success or reason for failure.
|
|
|
|
--*/
|
|
{
|
|
RPC_STATUS RpcStatus;
|
|
|
|
|
|
if ((RpcStatus = RpcImpersonateClient(NULL)) != RPC_S_OK) {
|
|
NetpKdPrint(( PREFIX_NETLIB
|
|
"Failed to impersonate client " FORMAT_RPC_STATUS "\n",
|
|
RpcStatus));
|
|
}
|
|
|
|
return NetpRpcStatusToApiStatus(RpcStatus);
|
|
|
|
} // NetpImpersonateClient
|
|
|
|
|
|
NET_API_STATUS
|
|
NetpRevertToSelf(
|
|
VOID
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function calls RpcRevertToSelf to undo an impersonation.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
NET_API_STATUS - NERR_Success or reason for failure.
|
|
|
|
--*/
|
|
{
|
|
RPC_STATUS RpcStatus;
|
|
|
|
|
|
if ((RpcStatus = RpcRevertToSelf()) != RPC_S_OK) {
|
|
NetpKdPrint(( PREFIX_NETLIB
|
|
"Failed to revert to self " FORMAT_RPC_STATUS "\n", RpcStatus));
|
|
NetpAssert(FALSE);
|
|
}
|
|
|
|
return NetpRpcStatusToApiStatus(RpcStatus);
|
|
|
|
} // NetpRevertToSelf
|