226 lines
5.8 KiB
C++
226 lines
5.8 KiB
C++
/*++
|
|
|
|
Copyright (C) 1997-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
LOGPRXP.CPP
|
|
|
|
Abstract:
|
|
|
|
Defines the CLoginProxy_LPipe object
|
|
|
|
History:
|
|
|
|
alanbos 15-Dec-97 Created.
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
|
|
CProvProxy* CLoginProxy_LPipe::GetProvProxy (IStubAddress& dwAddr)
|
|
{
|
|
return new CProvProxy_LPipe (m_pComLink, dwAddr);
|
|
}
|
|
|
|
void CLoginProxy_LPipe::ReleaseProxy ()
|
|
{
|
|
if (NULL == m_pComLink)
|
|
return;
|
|
|
|
CProxyOperation_LPipe_Release opn ((CStubAddress_WinMgmt &) GetStubAdd (), LOGIN);
|
|
CallAndCleanup (NONE, NULL, opn);
|
|
}
|
|
|
|
//***************************************************************************
|
|
//
|
|
// HRESULT CLoginProxy_LPipe::RequestChallenge
|
|
//
|
|
// DESCRIPTION:
|
|
//
|
|
// Asks for a challenge so that a login can be done
|
|
//
|
|
// PARAMETERS:
|
|
//
|
|
// pNonce Set to 16 byte value. Must be freed via CoTaskMemFree()
|
|
//
|
|
// RETURN VALUE:
|
|
//
|
|
// WBEM_NO_ERROR if no error,
|
|
// else various provider/transport failures.
|
|
//
|
|
//***************************************************************************
|
|
|
|
HRESULT CLoginProxy_LPipe::RequestChallenge(
|
|
LPWSTR pNetworkResource,
|
|
LPWSTR pUser,
|
|
WBEM_128BITS Nonce)
|
|
{
|
|
if(NULL == Nonce)
|
|
return WBEM_E_INVALID_PARAMETER;
|
|
|
|
if (NULL == m_pComLink)
|
|
return WBEM_E_TRANSPORT_FAILURE;
|
|
|
|
CProxyOperation_LPipe_RequestChallenge opn (pNetworkResource,
|
|
pUser, Nonce, (CStubAddress_WinMgmt &) GetStubAdd ());
|
|
return CallAndCleanup (NONE, NULL, opn);
|
|
}
|
|
|
|
//***************************************************************************
|
|
//
|
|
// HRESULT CLoginProxy_LPipe::EstablishPosition
|
|
//
|
|
// DESCRIPTION:
|
|
//
|
|
// Establishes a position
|
|
//
|
|
// PARAMETERS:
|
|
//
|
|
// RETURN VALUE:
|
|
//
|
|
// WBEM_NO_ERROR if no error,
|
|
// else various provider/transport failures.
|
|
//
|
|
//***************************************************************************
|
|
|
|
HRESULT CLoginProxy_LPipe::EstablishPosition(
|
|
LPWSTR wszClientMachineName,
|
|
DWORD dwProcessId,
|
|
DWORD* phAuthEventHandle
|
|
)
|
|
{
|
|
if((NULL == wszClientMachineName) || (NULL == phAuthEventHandle))
|
|
return WBEM_E_INVALID_PARAMETER;
|
|
|
|
if (NULL == m_pComLink)
|
|
return WBEM_E_TRANSPORT_FAILURE;
|
|
|
|
CProxyOperation_LPipe_EstablishPosition opn (wszClientMachineName,
|
|
dwProcessId, phAuthEventHandle,
|
|
(CStubAddress_WinMgmt &) GetStubAdd ());
|
|
return CallAndCleanup (NONE, NULL, opn);
|
|
}
|
|
|
|
//***************************************************************************
|
|
//
|
|
// SCODE CLoginProxy_LPipe::WBEMLogin
|
|
//
|
|
// DESCRIPTION:
|
|
//
|
|
// Login in the user using WBEM authentication
|
|
//
|
|
// PARAMETERS:
|
|
//
|
|
// pNonce Set to 16 byte value. Must be freed via CoTaskMemFree()
|
|
//
|
|
// RETURN VALUE:
|
|
//
|
|
// WBEM_NO_ERROR if no error,
|
|
// else various provider/transport failures.
|
|
//
|
|
//***************************************************************************
|
|
|
|
HRESULT CLoginProxy_LPipe::WBEMLogin(
|
|
LPWSTR pPreferredLocale,
|
|
WBEM_128BITS AccessToken,
|
|
long lFlags,
|
|
IWbemContext *pCtx,
|
|
IWbemServices **ppNamespace)
|
|
{
|
|
if ((NULL == ppNamespace) || (NULL == AccessToken))
|
|
return WBEM_E_INVALID_PARAMETER;
|
|
|
|
if (NULL == m_pComLink)
|
|
return WBEM_E_TRANSPORT_FAILURE;
|
|
|
|
|
|
CProxyOperation_LPipe_WBEMLogin opn (pPreferredLocale, AccessToken,
|
|
lFlags, (CStubAddress_WinMgmt &) GetStubAdd (), pCtx);
|
|
return CallAndCleanup (PROVIDER, (PPVOID)ppNamespace, opn);
|
|
}
|
|
|
|
//***************************************************************************
|
|
//
|
|
// SCODE CLoginProxy_LPipe::SspiPreLogin
|
|
//
|
|
// DESCRIPTION:
|
|
//
|
|
// Used for SSPI negotiations.
|
|
//
|
|
// PARAMETERS:
|
|
//
|
|
//
|
|
// RETURN VALUE:
|
|
//
|
|
// WBEM_NO_ERROR if no error,
|
|
// else various provider/transport failures.
|
|
//
|
|
//***************************************************************************
|
|
|
|
SCODE CLoginProxy_LPipe::SspiPreLogin(
|
|
LPSTR pszSSPIPkg,
|
|
long lFlags,
|
|
long lBufSize,
|
|
byte __RPC_FAR *pInToken,
|
|
long lOutBufSize,
|
|
long __RPC_FAR *plOutBufBytes,
|
|
byte __RPC_FAR *pOutToken,
|
|
LPWSTR wszClientMachineName,
|
|
DWORD dwProcessId,
|
|
DWORD __RPC_FAR *pAuthEventHandle)
|
|
|
|
{
|
|
if((NULL == pszSSPIPkg) || (0 == lBufSize) || (NULL == pInToken)
|
|
|| (0 == lOutBufSize) || (NULL == pOutToken) ||
|
|
(NULL == plOutBufBytes) || (NULL == wszClientMachineName))
|
|
return WBEM_E_INVALID_PARAMETER;
|
|
|
|
if (NULL == m_pComLink)
|
|
return WBEM_E_TRANSPORT_FAILURE;
|
|
|
|
CProxyOperation_LPipe_SspiPreLogin opn (pszSSPIPkg,
|
|
lFlags, lBufSize, pInToken, lOutBufSize, plOutBufBytes,
|
|
pOutToken, wszClientMachineName, dwProcessId, pAuthEventHandle,
|
|
(CStubAddress_WinMgmt &) GetStubAdd ());
|
|
return CallAndCleanup (NONE, NULL, opn);
|
|
}
|
|
|
|
//***************************************************************************
|
|
//
|
|
// SCODE CLoginProxy_LPipe::Login
|
|
//
|
|
// DESCRIPTION:
|
|
//
|
|
// Connects up to a server.
|
|
//
|
|
// PARAMETERS:
|
|
//
|
|
//
|
|
// RETURN VALUE:
|
|
//
|
|
// WBEM_NO_ERROR if no error,
|
|
// else various provider/transport failures.
|
|
//
|
|
//***************************************************************************
|
|
|
|
SCODE CLoginProxy_LPipe::Login(
|
|
LPWSTR pNetworkResource,
|
|
LPWSTR pPreferredLocale,
|
|
WBEM_128BITS AccessToken,
|
|
IN LONG lFlags,
|
|
IWbemContext *pCtx,
|
|
IN OUT IWbemServices **ppNamespace)
|
|
{
|
|
|
|
if((NULL == ppNamespace) || (NULL == AccessToken))
|
|
return WBEM_E_INVALID_PARAMETER;
|
|
|
|
if (NULL == m_pComLink)
|
|
return WBEM_E_TRANSPORT_FAILURE;
|
|
|
|
CProxyOperation_LPipe_Login opn (pNetworkResource, pPreferredLocale,
|
|
AccessToken, lFlags, (CStubAddress_WinMgmt &) GetStubAdd (), pCtx);
|
|
return CallAndCleanup(PROVIDER, (PPVOID)ppNamespace, opn);
|
|
}
|