95 lines
2.0 KiB
C++
95 lines
2.0 KiB
C++
/*++
|
|
|
|
Copyright (C) 1997-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
IOPN.CPP
|
|
|
|
Abstract:
|
|
|
|
Declares the fundamental protocol-independent operation class
|
|
|
|
History:
|
|
|
|
alanbos 18-Dec-97 Created.
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
#include "wmishared.h"
|
|
|
|
// IOperation
|
|
RequestId IOperation::m_id = 0;
|
|
|
|
// Used on stub side by subclass to get the error info
|
|
// so that it can then encode it however it likes for
|
|
// response
|
|
IErrorInfo* IOperation::GetErrorInfoFromObject ()
|
|
{
|
|
if (m_pErrorInfo)
|
|
m_pErrorInfo->AddRef ();
|
|
|
|
return m_pErrorInfo;
|
|
}
|
|
|
|
// Used on stub side to include any error information for the
|
|
// thread into the operation in preparation for marhsaling
|
|
// back to the client. Called by ??
|
|
void IOperation::SetErrorInfoIntoObject ()
|
|
{
|
|
// Clear any current error object
|
|
if (m_pErrorInfo)
|
|
{
|
|
m_pErrorInfo->Release ();
|
|
m_pErrorInfo = NULL;
|
|
}
|
|
|
|
IErrorInfo* pInfo;
|
|
|
|
if (S_OK == GetErrorInfo (0, &pInfo))
|
|
m_pErrorInfo = pInfo;
|
|
}
|
|
|
|
// Used on proxy side to save the decoded error info into
|
|
// the operation. Called by subclass just after the
|
|
// decode.
|
|
void IOperation::SetErrorInfoIntoObject (IErrorInfo* pInfo)
|
|
{
|
|
// Clear any current error object
|
|
if (m_pErrorInfo)
|
|
{
|
|
m_pErrorInfo->Release ();
|
|
m_pErrorInfo = NULL;
|
|
}
|
|
|
|
m_pErrorInfo = pInfo;
|
|
|
|
if (m_pErrorInfo)
|
|
m_pErrorInfo->AddRef ();
|
|
}
|
|
|
|
|
|
// Used on proxy side to recreate the original IErrorInfo set
|
|
// in the server thread. Called by the CComLink just at the
|
|
// right time.
|
|
void IOperation::SetErrorInfoOnThread ()
|
|
{
|
|
if (m_pErrorInfo)
|
|
{
|
|
SetErrorInfo (0, m_pErrorInfo);
|
|
m_pErrorInfo->Release ();
|
|
m_pErrorInfo = NULL;
|
|
}
|
|
}
|
|
|
|
void IOperation::SetContext (IWbemContext* pContext)
|
|
{
|
|
if (m_pContext)
|
|
m_pContext->Release ();
|
|
|
|
m_pContext = pContext;
|
|
if (m_pContext)
|
|
m_pContext->AddRef ();
|
|
}
|