171 lines
3.3 KiB
C++
171 lines
3.3 KiB
C++
/*++
|
||
|
||
Copyright (c) 1996 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
common.cpp
|
||
|
||
Abstract:
|
||
|
||
Shared APIs
|
||
|
||
Author:
|
||
|
||
Jin Huang
|
||
|
||
Revision History:
|
||
|
||
jinhuang 23-Jan-1998 merged from multiple modules
|
||
|
||
--*/
|
||
#include "headers.h"
|
||
#include <ntrpcp.h>
|
||
#include "clntutil.h"
|
||
#include <ntlsa.h>
|
||
|
||
PVOID theCallBack = NULL;
|
||
HANDLE hCallbackWnd=NULL;
|
||
DWORD CallbackType = 0;
|
||
|
||
#define g_ServiceName L"scesrv"
|
||
|
||
|
||
SCESTATUS
|
||
ScepSetCallback(
|
||
IN PVOID pCallback OPTIONAL,
|
||
IN HANDLE hWnd OPTIONAL,
|
||
IN DWORD Type
|
||
)
|
||
{
|
||
theCallBack = pCallback;
|
||
hCallbackWnd = hWnd;
|
||
CallbackType = Type;
|
||
|
||
return(SCESTATUS_SUCCESS);
|
||
}
|
||
|
||
|
||
NTSTATUS
|
||
ScepBindSecureRpc(
|
||
IN LPWSTR servername,
|
||
IN LPWSTR servicename,
|
||
IN LPWSTR networkoptions,
|
||
OUT RPC_BINDING_HANDLE * pBindingHandle
|
||
)
|
||
/*
|
||
Routine Description:
|
||
|
||
This routine binds to the servicename on the server. A binding handle is
|
||
returned if successful.
|
||
|
||
If the service on the server is not available, this client will try to
|
||
start that service then bind to it.
|
||
|
||
Arguments:
|
||
|
||
servername - the system name where SCE server service is running on
|
||
|
||
servicename - the pipe (port) name of SCE server
|
||
|
||
networkoptions - the network protocol options
|
||
|
||
pBindingHandle - the binding handle to output
|
||
|
||
Return Value:
|
||
|
||
NTSTATUS
|
||
*/
|
||
{
|
||
|
||
if ( !servicename || !pBindingHandle ) {
|
||
return(STATUS_INVALID_PARAMETER);
|
||
}
|
||
|
||
//
|
||
// activate the server (if already started, just return)
|
||
//
|
||
|
||
|
||
NTSTATUS NtStatus = RpcpBindRpc(
|
||
servername,
|
||
servicename,
|
||
networkoptions,
|
||
pBindingHandle
|
||
);
|
||
|
||
|
||
if ( NT_SUCCESS(NtStatus) && *pBindingHandle ){
|
||
|
||
//
|
||
// set authentication info to use secure RPC
|
||
// if can't set authentication, ignore the error
|
||
//
|
||
|
||
(VOID) RpcBindingSetAuthInfo(
|
||
*pBindingHandle,
|
||
NULL,
|
||
RPC_C_AUTHN_LEVEL_DEFAULT,
|
||
RPC_C_AUTHN_WINNT,
|
||
NULL,
|
||
RPC_C_AUTHZ_DCE
|
||
);
|
||
}
|
||
|
||
return(NtStatus);
|
||
|
||
}
|
||
|
||
|
||
NTSTATUS
|
||
ScepBindRpc(
|
||
IN LPWSTR servername,
|
||
IN LPWSTR servicename,
|
||
IN LPWSTR networkoptions,
|
||
OUT RPC_BINDING_HANDLE * pBindingHandle
|
||
)
|
||
/*
|
||
Routine Description:
|
||
|
||
This routine binds to the servicename on the server. A binding handle is
|
||
returned if successful.
|
||
|
||
If the service on the server is not available, this client will try to
|
||
start that service then bind to it.
|
||
|
||
Arguments:
|
||
|
||
servername - the system name where SCE server service is running on
|
||
|
||
servicename - the pipe (port) name of SCE server
|
||
|
||
networkoptions - the network protocol options
|
||
|
||
pBindingHandle - the binding handle to output
|
||
|
||
Return Value:
|
||
|
||
NTSTATUS
|
||
*/
|
||
{
|
||
|
||
if ( !servicename || !pBindingHandle ) {
|
||
return(STATUS_INVALID_PARAMETER);
|
||
}
|
||
|
||
//
|
||
// activate the server (if already started, just return)
|
||
//
|
||
|
||
|
||
return( RpcpBindRpc(
|
||
servername,
|
||
servicename,
|
||
networkoptions,
|
||
pBindingHandle
|
||
) );
|
||
|
||
}
|
||
|
||
|