1915 lines
70 KiB
C++
1915 lines
70 KiB
C++
|
// ConnectionManager.cpp: implementation of the CConnectionManager class.
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// 03/05/00 v-marfin bug 59643 : Check for empty Marshal list before proceeding in
|
||
|
// UnMarshalCnxMgr()
|
||
|
// 04/05/00 v-marfin bug 62501 : Display appropriate msg when unable to connect to a server.
|
||
|
//
|
||
|
//
|
||
|
#include "stdafx.h"
|
||
|
#include "SnapIn.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[]=__FILE__;
|
||
|
#define new DEBUG_NEW
|
||
|
#endif
|
||
|
|
||
|
const IID IID_IConnectionManager = {0xFA84E6F2,0x0B7B,0x11D2,{0xBD,0xCB,0x00,0xC0,0x4F,0xA3,0x54,0x47}};
|
||
|
|
||
|
|
||
|
const IID LIBID_CONNMGRLib = {0xFA84E6E5,0x0B7B,0x11D2,{0xBD,0xCB,0x00,0xC0,0x4F,0xA3,0x54,0x47}};
|
||
|
|
||
|
|
||
|
const CLSID CLSID_ConnectionManager = {0xFA84E6F3,0x0B7B,0x11D2,{0xBD,0xCB,0x00,0xC0,0x4F,0xA3,0x54,0x47}};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// CMarhsalledConnection
|
||
|
|
||
|
CMarshalledConnection::CMarshalledConnection()
|
||
|
{
|
||
|
m_pIMarshalledConnectionManager = NULL;
|
||
|
m_lpMarshalStream = NULL;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
HRESULT CMarshalledConnection::Marshal(IConnectionManager* pIConMgr)
|
||
|
{
|
||
|
TRACEX(_T("CMarshalledConnection::Marshal\n"));
|
||
|
TRACEARGn(pIConMgr);
|
||
|
|
||
|
HRESULT hr = S_OK;
|
||
|
|
||
|
if( m_lpMarshalStream == NULL )
|
||
|
{
|
||
|
hr = CoMarshalInterThreadInterfaceInStream(IID_IConnectionManager,pIConMgr,&m_lpMarshalStream);
|
||
|
if( ! CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CoMarshalInterThreadInterfaceInStream failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT CMarshalledConnection::UnMarshal()
|
||
|
{
|
||
|
TRACEX(_T("CMarshalledConnection::UnMarshal\n"));
|
||
|
|
||
|
HRESULT hr = S_OK;
|
||
|
|
||
|
if( m_pIMarshalledConnectionManager == NULL )
|
||
|
{
|
||
|
hr = CoGetInterfaceAndReleaseStream(m_lpMarshalStream,IID_IConnectionManager,(LPVOID*)(&m_pIMarshalledConnectionManager));
|
||
|
if(!CHECKHRESULT(hr))
|
||
|
{
|
||
|
TRACE(_T("FAILED : CoGetInterfaceAndReleaseStream failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
IConnectionManager* CMarshalledConnection::GetConnection()
|
||
|
{
|
||
|
TRACEX(_T("CMarshalledConnection::GetConnection\n"));
|
||
|
|
||
|
// make certain the pointer has been unmarshalled
|
||
|
HRESULT hr = UnMarshal();
|
||
|
CHECKHRESULT(hr);
|
||
|
ASSERT(m_pIMarshalledConnectionManager);
|
||
|
|
||
|
return m_pIMarshalledConnectionManager;
|
||
|
}
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// CConnectionManager
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CConnectionManager,CObject)
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Construction/Destruction
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
CConnectionManager theCnxManager;
|
||
|
|
||
|
CConnectionManager::CConnectionManager()
|
||
|
{
|
||
|
m_pIConnectionManager = NULL;
|
||
|
}
|
||
|
|
||
|
CConnectionManager::~CConnectionManager()
|
||
|
{
|
||
|
Destroy();
|
||
|
}
|
||
|
|
||
|
BOOL CConnectionManager::Create()
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::Create\n"));
|
||
|
|
||
|
// create the ConnectionManager object
|
||
|
if( m_pIConnectionManager != NULL )
|
||
|
{
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
HRESULT hr = CoCreateInstance(CLSID_ConnectionManager,NULL,CLSCTX_LOCAL_SERVER,IID_IConnectionManager,(LPVOID*)&m_pIConnectionManager);
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Failed to create Connection Manager !\n"));
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
ASSERT(m_pIConnectionManager);
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void CConnectionManager::Destroy()
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::Destroy\n"));
|
||
|
|
||
|
// clean up any marshalled connections laying around
|
||
|
POSITION pos = m_MarshalMap.GetStartPosition();
|
||
|
CMarshalledConnection* pMC = NULL;
|
||
|
DWORD dwKey = 0L;
|
||
|
while( pos )
|
||
|
{
|
||
|
m_MarshalMap.GetNextAssoc(pos,dwKey,pMC);
|
||
|
if( pMC )
|
||
|
{
|
||
|
delete pMC;
|
||
|
}
|
||
|
}
|
||
|
m_MarshalMap.RemoveAll();
|
||
|
|
||
|
// release the ConnectionManager object
|
||
|
if( m_pIConnectionManager )
|
||
|
{
|
||
|
m_pIConnectionManager->Release();
|
||
|
m_pIConnectionManager = NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Connection Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
HRESULT CConnectionManager::GetConnection(const CString& sMachineName, IWbemServices*& pIWbemServices, BOOL& bAvailable )
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::GetConnection\n"));
|
||
|
TRACEARGs(sMachineName);
|
||
|
|
||
|
ASSERT(m_pIConnectionManager);
|
||
|
if( m_pIConnectionManager == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CConnectionManager::GetConnection failed. m_pIConnectionManager is NULL.\n"));
|
||
|
pIWbemServices = NULL;
|
||
|
bAvailable = FALSE;
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
BSTR bsMachineName = sMachineName.AllocSysString();
|
||
|
long lAvail = 0L;
|
||
|
|
||
|
HRESULT hr = m_pIConnectionManager->GetConnection(bsMachineName,&pIWbemServices,&lAvail);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
Destroy();
|
||
|
Create();
|
||
|
hr = m_pIConnectionManager->GetConnection(bsMachineName,&pIWbemServices,&lAvail);
|
||
|
}
|
||
|
|
||
|
if( hr == RPC_E_WRONG_THREAD )
|
||
|
{
|
||
|
CMarshalledConnection* pConnection = NULL;
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
m_MarshalMap.Lookup(dwThreadID,pConnection);
|
||
|
ASSERT(pConnection);
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a marshalled connection for the calling thread!\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
IConnectionManager* pCnxMgr = pConnection->GetConnection();
|
||
|
ASSERT(pCnxMgr);
|
||
|
if( pCnxMgr == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::GetConnection returns NULL. Failed.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
hr = pCnxMgr->GetConnection(bsMachineName,&pIWbemServices,&lAvail);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
}
|
||
|
|
||
|
if( !SUCCEEDED(hr) )
|
||
|
{
|
||
|
TRACE(_T("The marshalled connection manager's GetConnection failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SysFreeString(bsMachineName);
|
||
|
|
||
|
bAvailable = lAvail;
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : IConnectionManager::GetConnection failed.\n"));
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT CConnectionManager::ConnectToNamespace(const CString& sNamespace, IWbemServices*& pIWbemServices)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::ConnectToNamespace\n"));
|
||
|
TRACEARGs(sNamespace);
|
||
|
|
||
|
ASSERT(m_pIConnectionManager);
|
||
|
if( m_pIConnectionManager == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CConnectionManager::ConnectToNamespace failed. m_pIConnectionManager is NULL.\n"));
|
||
|
pIWbemServices = NULL;
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
BSTR bsNamespace = sNamespace.AllocSysString();
|
||
|
|
||
|
HRESULT hr = m_pIConnectionManager->ConnectToNamespace(bsNamespace,&pIWbemServices);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
// v-marfin 62501 HandleConnMgrException(hr);
|
||
|
CString sMsg;
|
||
|
sMsg.Format(IDS_STRING_TRANSPORT_ERROR,sNamespace);
|
||
|
AfxMessageBox(sMsg);
|
||
|
//Destroy();
|
||
|
|
||
|
// v-marfin 62501 - This was here originally, so keep?? --------------------
|
||
|
//Create();
|
||
|
//hr = m_pIConnectionManager->ConnectToNamespace(bsNamespace,&pIWbemServices);
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
SysFreeString(bsNamespace); // v-marfin 62501
|
||
|
return E_FAIL; // v-marfin 62501
|
||
|
}
|
||
|
|
||
|
if( hr == RPC_E_WRONG_THREAD )
|
||
|
{
|
||
|
CMarshalledConnection* pConnection = NULL;
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
m_MarshalMap.Lookup(dwThreadID,pConnection);
|
||
|
ASSERT(pConnection);
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a marshalled connection for the calling thread!\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
IConnectionManager* pCnxMgr = pConnection->GetConnection();
|
||
|
ASSERT(pCnxMgr);
|
||
|
if( pCnxMgr == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::GetConnection returns NULL. Failed.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
hr = pCnxMgr->ConnectToNamespace(bsNamespace,&pIWbemServices);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
}
|
||
|
|
||
|
if( !SUCCEEDED(hr) )
|
||
|
{
|
||
|
TRACE(_T("The marshalled connection manager's GetConnection failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SysFreeString(bsNamespace);
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : IConnectionManager::ConnectToNamespace failed.\n"));
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT CConnectionManager::RemoveConnection(const CString& sMachineName, IWbemObjectSink* pSink)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::RemoveConnection\n"));
|
||
|
TRACEARGs(sMachineName);
|
||
|
TRACEARGn(pSink);
|
||
|
|
||
|
ASSERT(m_pIConnectionManager);
|
||
|
if( m_pIConnectionManager == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CConnectionManager::RemoveConnection failed. m_pIConnectionManager is NULL.\n"));
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
BSTR bsMachineName = sMachineName.AllocSysString();
|
||
|
HRESULT hr = m_pIConnectionManager->RemoveConnection(bsMachineName,pSink);
|
||
|
|
||
|
SysFreeString(bsMachineName);
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : IConnectionManager::RemoveConnection failed.\n"));
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Event Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
HRESULT CConnectionManager::ExecQueryAsync(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::ExecQueryAsync\n"));
|
||
|
TRACEARGs(sMachineName);
|
||
|
TRACEARGs(sQuery);
|
||
|
|
||
|
if( ! GfxCheckPtr(m_pIConnectionManager,IConnectionManager) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : m_pIConnectionManager is not a valid pointer.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
BSTR bsMachineName = sMachineName.AllocSysString();
|
||
|
BSTR bsQuery = sQuery.AllocSysString();
|
||
|
|
||
|
HRESULT hr = m_pIConnectionManager->ExecQueryAsync(bsMachineName,bsQuery,pSink);
|
||
|
|
||
|
if( hr == RPC_E_WRONG_THREAD )
|
||
|
{
|
||
|
CMarshalledConnection* pConnection = NULL;
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
m_MarshalMap.Lookup(dwThreadID,pConnection);
|
||
|
ASSERT(pConnection);
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a marshalled connection for the calling thread!\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
IConnectionManager* pCnxMgr = pConnection->GetConnection();
|
||
|
ASSERT(pCnxMgr);
|
||
|
if( pCnxMgr == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::GetConnection returns NULL. Failed.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
hr = pCnxMgr->ExecQueryAsync(bsMachineName,bsQuery,pSink);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
}
|
||
|
|
||
|
if( !SUCCEEDED(hr) )
|
||
|
{
|
||
|
TRACE(_T("The marshalled connection manager's GetConnection failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SysFreeString(bsMachineName);
|
||
|
SysFreeString(bsQuery);
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : IConnectionManager::ExecQueryAsync failed.\n"));
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Event Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
HRESULT CConnectionManager::RegisterEventNotification(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::RegisterEventNotification\n"));
|
||
|
TRACEARGs(sMachineName);
|
||
|
TRACEARGs(sQuery);
|
||
|
|
||
|
if( ! GfxCheckPtr(m_pIConnectionManager,IConnectionManager) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : m_pIConnectionManager is not a valid pointer.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
BSTR bsMachineName = sMachineName.AllocSysString();
|
||
|
BSTR bsQuery = sQuery.AllocSysString();
|
||
|
|
||
|
HRESULT hr = m_pIConnectionManager->RegisterEventNotification(bsMachineName,bsQuery,pSink);
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
Destroy();
|
||
|
Create();
|
||
|
hr = m_pIConnectionManager->RegisterEventNotification(bsMachineName,bsQuery,pSink);
|
||
|
}
|
||
|
|
||
|
if( hr == RPC_E_WRONG_THREAD )
|
||
|
{
|
||
|
CMarshalledConnection* pConnection = NULL;
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
m_MarshalMap.Lookup(dwThreadID,pConnection);
|
||
|
ASSERT(pConnection);
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a marshalled connection for the calling thread!\n"));
|
||
|
SysFreeString(bsMachineName);
|
||
|
SysFreeString(bsQuery);
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
IConnectionManager* pCnxMgr = pConnection->GetConnection();
|
||
|
ASSERT(pCnxMgr);
|
||
|
if( pCnxMgr == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::GetConnection returns NULL. Failed.\n"));
|
||
|
SysFreeString(bsMachineName);
|
||
|
SysFreeString(bsQuery);
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
hr = pCnxMgr->RegisterEventNotification(bsMachineName,bsQuery,pSink);
|
||
|
|
||
|
if( HRESULT_CODE(hr) == RPC_S_SERVER_UNAVAILABLE )
|
||
|
{
|
||
|
HandleConnMgrException(hr);
|
||
|
}
|
||
|
|
||
|
if( !SUCCEEDED(hr) )
|
||
|
{
|
||
|
TRACE(_T("The marshalled connection manager's GetConnection failed.\n"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SysFreeString(bsMachineName);
|
||
|
SysFreeString(bsQuery);
|
||
|
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : IConnectionManager::RegisterEventNotification failed.\n"));
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Error Display Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
void CConnectionManager::DisplayErrorMsgBox(HRESULT hr, const CString& sMachineName)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::DisplayErrorMsgBox\n"));
|
||
|
TRACEARGn(hr);
|
||
|
TRACEARGs(sMachineName);
|
||
|
|
||
|
CString sText;
|
||
|
CString sTitle;
|
||
|
|
||
|
GetErrorString(hr,sMachineName,sText);
|
||
|
if( ! sText.IsEmpty() )
|
||
|
AfxMessageBox(sText);
|
||
|
}
|
||
|
|
||
|
void CConnectionManager::GetErrorString(HRESULT hr, const CString& sMachineName, CString& sErrorText)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::GetErrorString\n"));
|
||
|
TRACEARGn(hr);
|
||
|
TRACEARGs(sMachineName);
|
||
|
TRACEARGs(sErrorText);
|
||
|
|
||
|
if( hr == S_OK )
|
||
|
return;
|
||
|
|
||
|
switch( hr )
|
||
|
{
|
||
|
case E_FAIL:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_INVALID_MACHINE_NAME,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_INVALID_CLASS:
|
||
|
case E_NOTIMPL:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_INCORRECT_AGENT_VERSION,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case REGDB_E_CLASSNOTREG:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_WBEM_NOT_INSTALLED,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case E_ACCESSDENIED:
|
||
|
case WBEM_E_ACCESS_DENIED:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_NO_CONNECT,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_PROVIDER_FAILURE:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_PROVIDER_FAILURE,sMachineName,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_PROVIDER_LOAD_FAILURE:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_PROVIDER_LOAD_FAILURE,sMachineName,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_INVALID_NAMESPACE:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_INVALID_NAMESPACE,sMachineName,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_INVALID_PARAMETER:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_INVALID_PARAMETER,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_OUT_OF_MEMORY:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_OUT_OF_MEMORY,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_E_TRANSPORT_FAILURE:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_TRANSPORT_ERROR,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEM_S_OPERATION_CANCELLED:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_OPERATION_CANCELLED,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WBEMESS_E_REGISTRATION_TOO_PRECISE:
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_REGISTRATION_TOO_PRECISE,sMachineName);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
{
|
||
|
if( HRESULT_CODE(hr) == RPC_S_CALL_FAILED || HRESULT_CODE(hr) == RPC_S_CALL_FAILED_DNE )
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_WBEM_NOT_AVAILABLE,sMachineName);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
TCHAR szFacility[_FACILITYLEN];
|
||
|
TCHAR szErrorName[_ERRORNAMELEN];
|
||
|
TCHAR szErrorDesc[_ERRORDESCLEN];
|
||
|
ZeroMemory(szErrorName,sizeof(TCHAR)*_ERRORNAMELEN);
|
||
|
ZeroMemory(szFacility,sizeof(TCHAR)*_FACILITYLEN);
|
||
|
ZeroMemory(szErrorDesc,sizeof(TCHAR)*_ERRORDESCLEN);
|
||
|
|
||
|
DecodeHResult(hr,szFacility,szErrorName,szErrorDesc);
|
||
|
|
||
|
if( szFacility[0] == NULL || szErrorName[0] == NULL || szErrorDesc[0] == NULL )
|
||
|
{
|
||
|
sErrorText.Format(IDS_STRING_UNKNOWN_ERROR,sMachineName,hr);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CString sErrorDesc = szErrorDesc;
|
||
|
sErrorDesc.TrimRight();
|
||
|
sErrorText.Format(IDS_STRING_UNSPECIFIED_ERROR,sMachineName,sErrorDesc);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#define CASE_FACILITY(f) \
|
||
|
case f: \
|
||
|
_tcscpy((LPTSTR)szFacility, (LPTSTR)#f); \
|
||
|
break;
|
||
|
|
||
|
#define CASE_HRESULT(hr) \
|
||
|
case hr: \
|
||
|
_tcscpy((LPTSTR)szErrorName, (LPTSTR)#hr); \
|
||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, \
|
||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), \
|
||
|
szErrorDesc, sizeof(TCHAR)*_ERRORDESCLEN, NULL);\
|
||
|
break;
|
||
|
|
||
|
#define CASE_CODE(c) \
|
||
|
case c: \
|
||
|
_tcscpy((LPTSTR)szErrorName, (LPTSTR)#c); \
|
||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, \
|
||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), \
|
||
|
szErrorDesc, sizeof(TCHAR)*_ERRORDESCLEN, NULL);\
|
||
|
break;
|
||
|
|
||
|
#pragma warning( disable : 4245 )
|
||
|
|
||
|
void CConnectionManager::DecodeHResult(HRESULT hr, LPTSTR pszFacility, LPTSTR pszErrorName, LPTSTR pszErrorDesc)
|
||
|
{
|
||
|
TCHAR szFacility[_FACILITYLEN];
|
||
|
TCHAR szErrorName[_ERRORNAMELEN];
|
||
|
TCHAR szErrorDesc[_ERRORDESCLEN];
|
||
|
ZeroMemory(szErrorName,sizeof(TCHAR)*_ERRORNAMELEN);
|
||
|
ZeroMemory(szFacility,sizeof(TCHAR)*_FACILITYLEN);
|
||
|
ZeroMemory(szErrorDesc,sizeof(TCHAR)*_ERRORDESCLEN);
|
||
|
|
||
|
_tcscpy(szErrorDesc, _T(""));
|
||
|
|
||
|
switch (HRESULT_FACILITY(hr))
|
||
|
{
|
||
|
CASE_FACILITY(FACILITY_WINDOWS)
|
||
|
CASE_FACILITY(FACILITY_STORAGE)
|
||
|
CASE_FACILITY(FACILITY_RPC)
|
||
|
CASE_FACILITY(FACILITY_SSPI)
|
||
|
CASE_FACILITY(FACILITY_WIN32)
|
||
|
CASE_FACILITY(FACILITY_CONTROL)
|
||
|
CASE_FACILITY(FACILITY_NULL)
|
||
|
CASE_FACILITY(FACILITY_INTERNET)
|
||
|
CASE_FACILITY(FACILITY_ITF)
|
||
|
CASE_FACILITY(FACILITY_DISPATCH)
|
||
|
CASE_FACILITY(FACILITY_CERT)
|
||
|
|
||
|
default:
|
||
|
_tcscpy(szFacility, _T(""));
|
||
|
}
|
||
|
|
||
|
switch (hr)
|
||
|
{
|
||
|
CASE_HRESULT(E_UNEXPECTED)
|
||
|
CASE_HRESULT(E_NOTIMPL)
|
||
|
CASE_HRESULT(E_OUTOFMEMORY)
|
||
|
CASE_HRESULT(E_INVALIDARG)
|
||
|
CASE_HRESULT(E_NOINTERFACE)
|
||
|
CASE_HRESULT(E_POINTER)
|
||
|
CASE_HRESULT(E_HANDLE)
|
||
|
CASE_HRESULT(E_ABORT)
|
||
|
CASE_HRESULT(E_FAIL)
|
||
|
CASE_HRESULT(E_ACCESSDENIED)
|
||
|
CASE_HRESULT(E_PENDING)
|
||
|
CASE_HRESULT(CO_E_INIT_TLS)
|
||
|
CASE_HRESULT(CO_E_INIT_SHARED_ALLOCATOR)
|
||
|
CASE_HRESULT(CO_E_INIT_MEMORY_ALLOCATOR)
|
||
|
CASE_HRESULT(CO_E_INIT_CLASS_CACHE)
|
||
|
CASE_HRESULT(CO_E_INIT_RPC_CHANNEL)
|
||
|
CASE_HRESULT(CO_E_INIT_TLS_SET_CHANNEL_CONTROL)
|
||
|
CASE_HRESULT(CO_E_INIT_TLS_CHANNEL_CONTROL)
|
||
|
CASE_HRESULT(CO_E_INIT_UNACCEPTED_USER_ALLOCATOR)
|
||
|
CASE_HRESULT(CO_E_INIT_SCM_MUTEX_EXISTS)
|
||
|
CASE_HRESULT(CO_E_INIT_SCM_FILE_MAPPING_EXISTS)
|
||
|
CASE_HRESULT(CO_E_INIT_SCM_MAP_VIEW_OF_FILE)
|
||
|
CASE_HRESULT(CO_E_INIT_SCM_EXEC_FAILURE)
|
||
|
CASE_HRESULT(CO_E_INIT_ONLY_SINGLE_THREADED)
|
||
|
CASE_HRESULT(CO_E_CANT_REMOTE)
|
||
|
CASE_HRESULT(CO_E_BAD_SERVER_NAME)
|
||
|
CASE_HRESULT(CO_E_WRONG_SERVER_IDENTITY)
|
||
|
CASE_HRESULT(CO_E_OLE1DDE_DISABLED)
|
||
|
CASE_HRESULT(CO_E_RUNAS_SYNTAX)
|
||
|
CASE_HRESULT(CO_E_CREATEPROCESS_FAILURE)
|
||
|
CASE_HRESULT(CO_E_RUNAS_CREATEPROCESS_FAILURE)
|
||
|
CASE_HRESULT(CO_E_RUNAS_LOGON_FAILURE)
|
||
|
CASE_HRESULT(CO_E_LAUNCH_PERMSSION_DENIED)
|
||
|
CASE_HRESULT(CO_E_START_SERVICE_FAILURE)
|
||
|
CASE_HRESULT(CO_E_REMOTE_COMMUNICATION_FAILURE)
|
||
|
CASE_HRESULT(CO_E_SERVER_START_TIMEOUT)
|
||
|
CASE_HRESULT(CO_E_CLSREG_INCONSISTENT)
|
||
|
CASE_HRESULT(CO_E_IIDREG_INCONSISTENT)
|
||
|
CASE_HRESULT(CO_E_NOT_SUPPORTED)
|
||
|
CASE_HRESULT(S_OK)
|
||
|
CASE_HRESULT(S_FALSE)
|
||
|
CASE_HRESULT(OLE_E_OLEVERB)
|
||
|
CASE_HRESULT(OLE_E_ADVF)
|
||
|
CASE_HRESULT(OLE_E_ENUM_NOMORE)
|
||
|
CASE_HRESULT(OLE_E_ADVISENOTSUPPORTED)
|
||
|
CASE_HRESULT(OLE_E_NOCONNECTION)
|
||
|
CASE_HRESULT(OLE_E_NOTRUNNING)
|
||
|
CASE_HRESULT(OLE_E_NOCACHE)
|
||
|
CASE_HRESULT(OLE_E_BLANK)
|
||
|
CASE_HRESULT(OLE_E_CLASSDIFF)
|
||
|
CASE_HRESULT(OLE_E_CANT_GETMONIKER)
|
||
|
CASE_HRESULT(OLE_E_CANT_BINDTOSOURCE)
|
||
|
CASE_HRESULT(OLE_E_STATIC)
|
||
|
CASE_HRESULT(OLE_E_PROMPTSAVECANCELLED)
|
||
|
CASE_HRESULT(OLE_E_INVALIDRECT)
|
||
|
CASE_HRESULT(OLE_E_WRONGCOMPOBJ)
|
||
|
CASE_HRESULT(OLE_E_INVALIDHWND)
|
||
|
CASE_HRESULT(OLE_E_NOT_INPLACEACTIVE)
|
||
|
CASE_HRESULT(OLE_E_CANTCONVERT)
|
||
|
CASE_HRESULT(OLE_E_NOSTORAGE)
|
||
|
CASE_HRESULT(DV_E_FORMATETC)
|
||
|
CASE_HRESULT(DV_E_DVTARGETDEVICE)
|
||
|
CASE_HRESULT(DV_E_STGMEDIUM)
|
||
|
CASE_HRESULT(DV_E_STATDATA)
|
||
|
CASE_HRESULT(DV_E_LINDEX)
|
||
|
CASE_HRESULT(DV_E_TYMED)
|
||
|
CASE_HRESULT(DV_E_CLIPFORMAT)
|
||
|
CASE_HRESULT(DV_E_DVASPECT)
|
||
|
CASE_HRESULT(DV_E_DVTARGETDEVICE_SIZE)
|
||
|
CASE_HRESULT(DV_E_NOIVIEWOBJECT)
|
||
|
CASE_HRESULT(DRAGDROP_E_NOTREGISTERED)
|
||
|
CASE_HRESULT(DRAGDROP_E_ALREADYREGISTERED)
|
||
|
CASE_HRESULT(DRAGDROP_E_INVALIDHWND)
|
||
|
CASE_HRESULT(CLASS_E_NOAGGREGATION)
|
||
|
CASE_HRESULT(CLASS_E_CLASSNOTAVAILABLE)
|
||
|
CASE_HRESULT(VIEW_E_DRAW)
|
||
|
CASE_HRESULT(REGDB_E_READREGDB)
|
||
|
CASE_HRESULT(REGDB_E_WRITEREGDB)
|
||
|
CASE_HRESULT(REGDB_E_KEYMISSING)
|
||
|
CASE_HRESULT(REGDB_E_INVALIDVALUE)
|
||
|
CASE_HRESULT(REGDB_E_CLASSNOTREG)
|
||
|
CASE_HRESULT(REGDB_E_IIDNOTREG)
|
||
|
CASE_HRESULT(CACHE_E_NOCACHE_UPDATED)
|
||
|
CASE_HRESULT(OLEOBJ_E_NOVERBS)
|
||
|
CASE_HRESULT(OLEOBJ_E_INVALIDVERB)
|
||
|
CASE_HRESULT(INPLACE_E_NOTUNDOABLE)
|
||
|
CASE_HRESULT(INPLACE_E_NOTOOLSPACE)
|
||
|
CASE_HRESULT(CONVERT10_E_OLESTREAM_GET)
|
||
|
CASE_HRESULT(CONVERT10_E_OLESTREAM_PUT)
|
||
|
CASE_HRESULT(CONVERT10_E_OLESTREAM_FMT)
|
||
|
CASE_HRESULT(CONVERT10_E_OLESTREAM_BITMAP_TO_DIB)
|
||
|
CASE_HRESULT(CONVERT10_E_STG_FMT)
|
||
|
CASE_HRESULT(CONVERT10_E_STG_NO_STD_STREAM)
|
||
|
CASE_HRESULT(CONVERT10_E_STG_DIB_TO_BITMAP)
|
||
|
CASE_HRESULT(CLIPBRD_E_CANT_OPEN)
|
||
|
CASE_HRESULT(CLIPBRD_E_CANT_EMPTY)
|
||
|
CASE_HRESULT(CLIPBRD_E_CANT_SET)
|
||
|
CASE_HRESULT(CLIPBRD_E_BAD_DATA)
|
||
|
CASE_HRESULT(CLIPBRD_E_CANT_CLOSE)
|
||
|
CASE_HRESULT(MK_E_CONNECTMANUALLY)
|
||
|
CASE_HRESULT(MK_E_EXCEEDEDDEADLINE)
|
||
|
CASE_HRESULT(MK_E_NEEDGENERIC)
|
||
|
CASE_HRESULT(MK_E_UNAVAILABLE)
|
||
|
CASE_HRESULT(MK_E_SYNTAX)
|
||
|
CASE_HRESULT(MK_E_NOOBJECT)
|
||
|
CASE_HRESULT(MK_E_INVALIDEXTENSION)
|
||
|
CASE_HRESULT(MK_E_INTERMEDIATEINTERFACENOTSUPPORTED)
|
||
|
CASE_HRESULT(MK_E_NOTBINDABLE)
|
||
|
CASE_HRESULT(MK_E_NOTBOUND)
|
||
|
CASE_HRESULT(MK_E_CANTOPENFILE)
|
||
|
CASE_HRESULT(MK_E_MUSTBOTHERUSER)
|
||
|
CASE_HRESULT(MK_E_NOINVERSE)
|
||
|
CASE_HRESULT(MK_E_NOSTORAGE)
|
||
|
CASE_HRESULT(MK_E_NOPREFIX)
|
||
|
CASE_HRESULT(MK_E_ENUMERATION_FAILED)
|
||
|
CASE_HRESULT(CO_E_NOTINITIALIZED)
|
||
|
CASE_HRESULT(CO_E_ALREADYINITIALIZED)
|
||
|
CASE_HRESULT(CO_E_CANTDETERMINECLASS)
|
||
|
CASE_HRESULT(CO_E_CLASSSTRING)
|
||
|
CASE_HRESULT(CO_E_IIDSTRING)
|
||
|
CASE_HRESULT(CO_E_APPNOTFOUND)
|
||
|
CASE_HRESULT(CO_E_APPSINGLEUSE)
|
||
|
CASE_HRESULT(CO_E_ERRORINAPP)
|
||
|
CASE_HRESULT(CO_E_DLLNOTFOUND)
|
||
|
CASE_HRESULT(CO_E_ERRORINDLL)
|
||
|
CASE_HRESULT(CO_E_WRONGOSFORAPP)
|
||
|
CASE_HRESULT(CO_E_OBJNOTREG)
|
||
|
CASE_HRESULT(CO_E_OBJISREG)
|
||
|
CASE_HRESULT(CO_E_OBJNOTCONNECTED)
|
||
|
CASE_HRESULT(CO_E_APPDIDNTREG)
|
||
|
CASE_HRESULT(CO_E_RELEASED)
|
||
|
CASE_HRESULT(OLE_S_USEREG)
|
||
|
CASE_HRESULT(OLE_S_STATIC)
|
||
|
CASE_HRESULT(OLE_S_MAC_CLIPFORMAT)
|
||
|
CASE_HRESULT(DRAGDROP_S_DROP)
|
||
|
CASE_HRESULT(DRAGDROP_S_CANCEL)
|
||
|
CASE_HRESULT(DRAGDROP_S_USEDEFAULTCURSORS)
|
||
|
CASE_HRESULT(DATA_S_SAMEFORMATETC)
|
||
|
CASE_HRESULT(VIEW_S_ALREADY_FROZEN)
|
||
|
CASE_HRESULT(CACHE_S_FORMATETC_NOTSUPPORTED)
|
||
|
CASE_HRESULT(CACHE_S_SAMECACHE)
|
||
|
CASE_HRESULT(CACHE_S_SOMECACHES_NOTUPDATED)
|
||
|
CASE_HRESULT(OLEOBJ_S_INVALIDVERB)
|
||
|
CASE_HRESULT(OLEOBJ_S_CANNOT_DOVERB_NOW)
|
||
|
CASE_HRESULT(OLEOBJ_S_INVALIDHWND)
|
||
|
CASE_HRESULT(INPLACE_S_TRUNCATED)
|
||
|
CASE_HRESULT(CONVERT10_S_NO_PRESENTATION)
|
||
|
CASE_HRESULT(MK_S_REDUCED_TO_SELF)
|
||
|
CASE_HRESULT(MK_S_ME)
|
||
|
CASE_HRESULT(MK_S_HIM)
|
||
|
CASE_HRESULT(MK_S_US)
|
||
|
CASE_HRESULT(MK_S_MONIKERALREADYREGISTERED)
|
||
|
CASE_HRESULT(CO_E_CLASS_CREATE_FAILED)
|
||
|
CASE_HRESULT(CO_E_SCM_ERROR)
|
||
|
CASE_HRESULT(CO_E_SCM_RPC_FAILURE)
|
||
|
CASE_HRESULT(CO_E_BAD_PATH)
|
||
|
CASE_HRESULT(CO_E_SERVER_EXEC_FAILURE)
|
||
|
CASE_HRESULT(CO_E_OBJSRV_RPC_FAILURE)
|
||
|
CASE_HRESULT(MK_E_NO_NORMALIZED)
|
||
|
CASE_HRESULT(CO_E_SERVER_STOPPING)
|
||
|
CASE_HRESULT(MEM_E_INVALID_ROOT)
|
||
|
CASE_HRESULT(MEM_E_INVALID_LINK)
|
||
|
CASE_HRESULT(MEM_E_INVALID_SIZE)
|
||
|
CASE_HRESULT(CO_S_NOTALLINTERFACES)
|
||
|
CASE_HRESULT(DISP_E_UNKNOWNINTERFACE)
|
||
|
CASE_HRESULT(DISP_E_MEMBERNOTFOUND)
|
||
|
CASE_HRESULT(DISP_E_PARAMNOTFOUND)
|
||
|
CASE_HRESULT(DISP_E_TYPEMISMATCH)
|
||
|
CASE_HRESULT(DISP_E_UNKNOWNNAME)
|
||
|
CASE_HRESULT(DISP_E_NONAMEDARGS)
|
||
|
CASE_HRESULT(DISP_E_BADVARTYPE)
|
||
|
CASE_HRESULT(DISP_E_EXCEPTION)
|
||
|
CASE_HRESULT(DISP_E_OVERFLOW)
|
||
|
CASE_HRESULT(DISP_E_BADINDEX)
|
||
|
CASE_HRESULT(DISP_E_UNKNOWNLCID)
|
||
|
CASE_HRESULT(DISP_E_ARRAYISLOCKED)
|
||
|
CASE_HRESULT(DISP_E_BADPARAMCOUNT)
|
||
|
CASE_HRESULT(DISP_E_PARAMNOTOPTIONAL)
|
||
|
CASE_HRESULT(DISP_E_BADCALLEE)
|
||
|
CASE_HRESULT(DISP_E_NOTACOLLECTION)
|
||
|
CASE_HRESULT(TYPE_E_BUFFERTOOSMALL)
|
||
|
CASE_HRESULT(TYPE_E_INVDATAREAD)
|
||
|
CASE_HRESULT(TYPE_E_UNSUPFORMAT)
|
||
|
CASE_HRESULT(TYPE_E_REGISTRYACCESS)
|
||
|
CASE_HRESULT(TYPE_E_LIBNOTREGISTERED)
|
||
|
CASE_HRESULT(TYPE_E_UNDEFINEDTYPE)
|
||
|
CASE_HRESULT(TYPE_E_QUALIFIEDNAMEDISALLOWED)
|
||
|
CASE_HRESULT(TYPE_E_INVALIDSTATE)
|
||
|
CASE_HRESULT(TYPE_E_WRONGTYPEKIND)
|
||
|
CASE_HRESULT(TYPE_E_ELEMENTNOTFOUND)
|
||
|
CASE_HRESULT(TYPE_E_AMBIGUOUSNAME)
|
||
|
CASE_HRESULT(TYPE_E_NAMECONFLICT)
|
||
|
CASE_HRESULT(TYPE_E_UNKNOWNLCID)
|
||
|
CASE_HRESULT(TYPE_E_DLLFUNCTIONNOTFOUND)
|
||
|
CASE_HRESULT(TYPE_E_BADMODULEKIND)
|
||
|
CASE_HRESULT(TYPE_E_SIZETOOBIG)
|
||
|
CASE_HRESULT(TYPE_E_DUPLICATEID)
|
||
|
CASE_HRESULT(TYPE_E_INVALIDID)
|
||
|
CASE_HRESULT(TYPE_E_TYPEMISMATCH)
|
||
|
CASE_HRESULT(TYPE_E_OUTOFBOUNDS)
|
||
|
CASE_HRESULT(TYPE_E_IOERROR)
|
||
|
CASE_HRESULT(TYPE_E_CANTCREATETMPFILE)
|
||
|
CASE_HRESULT(TYPE_E_CANTLOADLIBRARY)
|
||
|
CASE_HRESULT(TYPE_E_INCONSISTENTPROPFUNCS)
|
||
|
CASE_HRESULT(TYPE_E_CIRCULARTYPE)
|
||
|
CASE_HRESULT(STG_E_INVALIDFUNCTION)
|
||
|
CASE_HRESULT(STG_E_FILENOTFOUND)
|
||
|
CASE_HRESULT(STG_E_PATHNOTFOUND)
|
||
|
CASE_HRESULT(STG_E_TOOMANYOPENFILES)
|
||
|
CASE_HRESULT(STG_E_ACCESSDENIED)
|
||
|
CASE_HRESULT(STG_E_INVALIDHANDLE)
|
||
|
CASE_HRESULT(STG_E_INSUFFICIENTMEMORY)
|
||
|
CASE_HRESULT(STG_E_INVALIDPOINTER)
|
||
|
CASE_HRESULT(STG_E_NOMOREFILES)
|
||
|
CASE_HRESULT(STG_E_DISKISWRITEPROTECTED)
|
||
|
CASE_HRESULT(STG_E_SEEKERROR)
|
||
|
CASE_HRESULT(STG_E_WRITEFAULT)
|
||
|
CASE_HRESULT(STG_E_READFAULT)
|
||
|
CASE_HRESULT(STG_E_SHAREVIOLATION)
|
||
|
CASE_HRESULT(STG_E_LOCKVIOLATION)
|
||
|
CASE_HRESULT(STG_E_FILEALREADYEXISTS)
|
||
|
CASE_HRESULT(STG_E_INVALIDPARAMETER)
|
||
|
CASE_HRESULT(STG_E_MEDIUMFULL)
|
||
|
CASE_HRESULT(STG_E_PROPSETMISMATCHED)
|
||
|
CASE_HRESULT(STG_E_ABNORMALAPIEXIT)
|
||
|
CASE_HRESULT(STG_E_INVALIDHEADER)
|
||
|
CASE_HRESULT(STG_E_INVALIDNAME)
|
||
|
CASE_HRESULT(STG_E_UNKNOWN)
|
||
|
CASE_HRESULT(STG_E_UNIMPLEMENTEDFUNCTION)
|
||
|
CASE_HRESULT(STG_E_INVALIDFLAG)
|
||
|
CASE_HRESULT(STG_E_INUSE)
|
||
|
CASE_HRESULT(STG_E_NOTCURRENT)
|
||
|
CASE_HRESULT(STG_E_REVERTED)
|
||
|
CASE_HRESULT(STG_E_CANTSAVE)
|
||
|
CASE_HRESULT(STG_E_OLDFORMAT)
|
||
|
CASE_HRESULT(STG_E_OLDDLL)
|
||
|
CASE_HRESULT(STG_E_SHAREREQUIRED)
|
||
|
CASE_HRESULT(STG_E_NOTFILEBASEDSTORAGE)
|
||
|
CASE_HRESULT(STG_E_EXTANTMARSHALLINGS)
|
||
|
CASE_HRESULT(STG_E_DOCFILECORRUPT)
|
||
|
CASE_HRESULT(STG_E_BADBASEADDRESS)
|
||
|
CASE_HRESULT(STG_E_INCOMPLETE)
|
||
|
CASE_HRESULT(STG_E_TERMINATED)
|
||
|
CASE_HRESULT(STG_S_CONVERTED)
|
||
|
CASE_HRESULT(STG_S_BLOCK)
|
||
|
CASE_HRESULT(STG_S_RETRYNOW)
|
||
|
CASE_HRESULT(STG_S_MONITORING)
|
||
|
CASE_HRESULT(RPC_E_CALL_REJECTED)
|
||
|
CASE_HRESULT(RPC_E_CALL_CANCELED)
|
||
|
CASE_HRESULT(RPC_E_CANTPOST_INSENDCALL)
|
||
|
CASE_HRESULT(RPC_E_CANTCALLOUT_INASYNCCALL)
|
||
|
CASE_HRESULT(RPC_E_CANTCALLOUT_INEXTERNALCALL)
|
||
|
CASE_HRESULT(RPC_E_CONNECTION_TERMINATED)
|
||
|
CASE_HRESULT(RPC_E_SERVER_DIED)
|
||
|
CASE_HRESULT(RPC_E_CLIENT_DIED)
|
||
|
CASE_HRESULT(RPC_E_INVALID_DATAPACKET)
|
||
|
CASE_HRESULT(RPC_E_CANTTRANSMIT_CALL)
|
||
|
CASE_HRESULT(RPC_E_CLIENT_CANTMARSHAL_DATA)
|
||
|
CASE_HRESULT(RPC_E_CLIENT_CANTUNMARSHAL_DATA)
|
||
|
CASE_HRESULT(RPC_E_SERVER_CANTMARSHAL_DATA)
|
||
|
CASE_HRESULT(RPC_E_SERVER_CANTUNMARSHAL_DATA)
|
||
|
CASE_HRESULT(RPC_E_INVALID_DATA)
|
||
|
CASE_HRESULT(RPC_E_INVALID_PARAMETER)
|
||
|
CASE_HRESULT(RPC_E_CANTCALLOUT_AGAIN)
|
||
|
CASE_HRESULT(RPC_E_SERVER_DIED_DNE)
|
||
|
CASE_HRESULT(RPC_E_SYS_CALL_FAILED)
|
||
|
CASE_HRESULT(RPC_E_OUT_OF_RESOURCES)
|
||
|
CASE_HRESULT(RPC_E_ATTEMPTED_MULTITHREAD)
|
||
|
CASE_HRESULT(RPC_E_NOT_REGISTERED)
|
||
|
CASE_HRESULT(RPC_E_FAULT)
|
||
|
CASE_HRESULT(RPC_E_SERVERFAULT)
|
||
|
CASE_HRESULT(RPC_E_CHANGED_MODE)
|
||
|
CASE_HRESULT(RPC_E_INVALIDMETHOD)
|
||
|
CASE_HRESULT(RPC_E_DISCONNECTED)
|
||
|
CASE_HRESULT(RPC_E_RETRY)
|
||
|
CASE_HRESULT(RPC_E_SERVERCALL_RETRYLATER)
|
||
|
CASE_HRESULT(RPC_E_SERVERCALL_REJECTED)
|
||
|
CASE_HRESULT(RPC_E_INVALID_CALLDATA)
|
||
|
CASE_HRESULT(RPC_E_CANTCALLOUT_ININPUTSYNCCALL)
|
||
|
CASE_HRESULT(RPC_E_WRONG_THREAD)
|
||
|
CASE_HRESULT(RPC_E_THREAD_NOT_INIT)
|
||
|
CASE_HRESULT(RPC_E_VERSION_MISMATCH)
|
||
|
CASE_HRESULT(RPC_E_INVALID_HEADER)
|
||
|
CASE_HRESULT(RPC_E_INVALID_EXTENSION)
|
||
|
CASE_HRESULT(RPC_E_INVALID_IPID)
|
||
|
CASE_HRESULT(RPC_E_INVALID_OBJECT)
|
||
|
CASE_HRESULT(RPC_S_CALLPENDING)
|
||
|
CASE_HRESULT(RPC_S_WAITONTIMER)
|
||
|
CASE_HRESULT(RPC_E_CALL_COMPLETE)
|
||
|
CASE_HRESULT(RPC_E_UNSECURE_CALL)
|
||
|
CASE_HRESULT(RPC_E_TOO_LATE)
|
||
|
CASE_HRESULT(RPC_E_NO_GOOD_SECURITY_PACKAGES)
|
||
|
CASE_HRESULT(RPC_E_ACCESS_DENIED)
|
||
|
CASE_HRESULT(RPC_E_REMOTE_DISABLED)
|
||
|
CASE_HRESULT(RPC_E_INVALID_OBJREF)
|
||
|
CASE_HRESULT(RPC_E_UNEXPECTED)
|
||
|
CASE_HRESULT(NTE_BAD_UID)
|
||
|
CASE_HRESULT(NTE_BAD_HASH)
|
||
|
CASE_HRESULT(NTE_BAD_KEY)
|
||
|
CASE_HRESULT(NTE_BAD_LEN)
|
||
|
CASE_HRESULT(NTE_BAD_DATA)
|
||
|
CASE_HRESULT(NTE_BAD_SIGNATURE)
|
||
|
CASE_HRESULT(NTE_BAD_VER)
|
||
|
CASE_HRESULT(NTE_BAD_ALGID)
|
||
|
CASE_HRESULT(NTE_BAD_FLAGS)
|
||
|
CASE_HRESULT(NTE_BAD_TYPE)
|
||
|
CASE_HRESULT(NTE_BAD_KEY_STATE)
|
||
|
CASE_HRESULT(NTE_BAD_HASH_STATE)
|
||
|
CASE_HRESULT(NTE_NO_KEY)
|
||
|
CASE_HRESULT(NTE_NO_MEMORY)
|
||
|
CASE_HRESULT(NTE_EXISTS)
|
||
|
CASE_HRESULT(NTE_PERM)
|
||
|
CASE_HRESULT(NTE_NOT_FOUND)
|
||
|
CASE_HRESULT(NTE_DOUBLE_ENCRYPT)
|
||
|
CASE_HRESULT(NTE_BAD_PROVIDER)
|
||
|
CASE_HRESULT(NTE_BAD_PROV_TYPE)
|
||
|
CASE_HRESULT(NTE_BAD_PUBLIC_KEY)
|
||
|
CASE_HRESULT(NTE_BAD_KEYSET)
|
||
|
CASE_HRESULT(NTE_PROV_TYPE_NOT_DEF)
|
||
|
CASE_HRESULT(NTE_PROV_TYPE_ENTRY_BAD)
|
||
|
CASE_HRESULT(NTE_KEYSET_NOT_DEF)
|
||
|
CASE_HRESULT(NTE_KEYSET_ENTRY_BAD)
|
||
|
CASE_HRESULT(NTE_PROV_TYPE_NO_MATCH)
|
||
|
CASE_HRESULT(NTE_SIGNATURE_FILE_BAD)
|
||
|
CASE_HRESULT(NTE_PROVIDER_DLL_FAIL)
|
||
|
CASE_HRESULT(NTE_PROV_DLL_NOT_FOUND)
|
||
|
CASE_HRESULT(NTE_BAD_KEYSET_PARAM)
|
||
|
CASE_HRESULT(NTE_FAIL)
|
||
|
CASE_HRESULT(NTE_SYS_ERR)
|
||
|
CASE_HRESULT(TRUST_E_PROVIDER_UNKNOWN)
|
||
|
CASE_HRESULT(TRUST_E_ACTION_UNKNOWN)
|
||
|
CASE_HRESULT(TRUST_E_SUBJECT_FORM_UNKNOWN)
|
||
|
CASE_HRESULT(TRUST_E_SUBJECT_NOT_TRUSTED)
|
||
|
CASE_HRESULT(DIGSIG_E_ENCODE)
|
||
|
CASE_HRESULT(DIGSIG_E_DECODE)
|
||
|
CASE_HRESULT(DIGSIG_E_EXTENSIBILITY)
|
||
|
CASE_HRESULT(DIGSIG_E_CRYPTO)
|
||
|
CASE_HRESULT(PERSIST_E_SIZEDEFINITE)
|
||
|
CASE_HRESULT(PERSIST_E_SIZEINDEFINITE)
|
||
|
CASE_HRESULT(PERSIST_E_NOTSELFSIZING)
|
||
|
CASE_HRESULT(TRUST_E_NOSIGNATURE)
|
||
|
CASE_HRESULT(CERT_E_EXPIRED)
|
||
|
// CASE_HRESULT(CERT_E_VALIDITYPERIODNESTING)
|
||
|
CASE_HRESULT(CERT_E_ROLE)
|
||
|
CASE_HRESULT(CERT_E_PATHLENCONST)
|
||
|
CASE_HRESULT(CERT_E_CRITICAL)
|
||
|
CASE_HRESULT(CERT_E_PURPOSE)
|
||
|
CASE_HRESULT(CERT_E_ISSUERCHAINING)
|
||
|
CASE_HRESULT(CERT_E_MALFORMED)
|
||
|
CASE_HRESULT(CERT_E_UNTRUSTEDROOT)
|
||
|
CASE_HRESULT(CERT_E_CHAINING)
|
||
|
|
||
|
// OLE controls
|
||
|
CASE_HRESULT(CTL_E_ILLEGALFUNCTIONCALL)
|
||
|
CASE_HRESULT(CTL_E_OVERFLOW)
|
||
|
CASE_HRESULT(CTL_E_OUTOFMEMORY)
|
||
|
CASE_HRESULT(CTL_E_DIVISIONBYZERO)
|
||
|
CASE_HRESULT(CTL_E_OUTOFSTRINGSPACE)
|
||
|
CASE_HRESULT(CTL_E_OUTOFSTACKSPACE)
|
||
|
CASE_HRESULT(CTL_E_BADFILENAMEORNUMBER)
|
||
|
CASE_HRESULT(CTL_E_FILENOTFOUND)
|
||
|
CASE_HRESULT(CTL_E_BADFILEMODE)
|
||
|
CASE_HRESULT(CTL_E_FILEALREADYOPEN)
|
||
|
CASE_HRESULT(CTL_E_DEVICEIOERROR)
|
||
|
CASE_HRESULT(CTL_E_FILEALREADYEXISTS)
|
||
|
CASE_HRESULT(CTL_E_BADRECORDLENGTH)
|
||
|
CASE_HRESULT(CTL_E_DISKFULL)
|
||
|
CASE_HRESULT(CTL_E_BADRECORDNUMBER)
|
||
|
CASE_HRESULT(CTL_E_BADFILENAME)
|
||
|
CASE_HRESULT(CTL_E_TOOMANYFILES)
|
||
|
CASE_HRESULT(CTL_E_DEVICEUNAVAILABLE)
|
||
|
CASE_HRESULT(CTL_E_PERMISSIONDENIED)
|
||
|
CASE_HRESULT(CTL_E_DISKNOTREADY)
|
||
|
CASE_HRESULT(CTL_E_PATHFILEACCESSERROR)
|
||
|
CASE_HRESULT(CTL_E_PATHNOTFOUND)
|
||
|
CASE_HRESULT(CTL_E_INVALIDPATTERNSTRING)
|
||
|
CASE_HRESULT(CTL_E_INVALIDUSEOFNULL)
|
||
|
CASE_HRESULT(CTL_E_INVALIDFILEFORMAT)
|
||
|
CASE_HRESULT(CTL_E_INVALIDPROPERTYVALUE)
|
||
|
CASE_HRESULT(CTL_E_INVALIDPROPERTYARRAYINDEX)
|
||
|
CASE_HRESULT(CTL_E_SETNOTSUPPORTEDATRUNTIME)
|
||
|
CASE_HRESULT(CTL_E_SETNOTSUPPORTED)
|
||
|
CASE_HRESULT(CTL_E_NEEDPROPERTYARRAYINDEX)
|
||
|
CASE_HRESULT(CTL_E_SETNOTPERMITTED)
|
||
|
CASE_HRESULT(CTL_E_GETNOTSUPPORTEDATRUNTIME)
|
||
|
CASE_HRESULT(CTL_E_GETNOTSUPPORTED)
|
||
|
CASE_HRESULT(CTL_E_PROPERTYNOTFOUND)
|
||
|
CASE_HRESULT(CTL_E_INVALIDCLIPBOARDFORMAT)
|
||
|
CASE_HRESULT(CTL_E_INVALIDPICTURE)
|
||
|
CASE_HRESULT(CTL_E_PRINTERERROR)
|
||
|
CASE_HRESULT(CTL_E_CANTSAVEFILETOTEMP)
|
||
|
CASE_HRESULT(CTL_E_SEARCHTEXTNOTFOUND)
|
||
|
CASE_HRESULT(CTL_E_REPLACEMENTSTOOLONG)
|
||
|
CASE_HRESULT(CLASS_E_NOTLICENSED)
|
||
|
|
||
|
default:
|
||
|
// Check if the HRESULT has FACILITY_WIN32. If so,
|
||
|
// extract the code and check against the codes in winerror.h
|
||
|
if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
|
||
|
{
|
||
|
switch (HRESULT_CODE(hr))
|
||
|
{
|
||
|
CASE_CODE(ERROR_SUCCESS)
|
||
|
CASE_CODE(ERROR_INVALID_FUNCTION)
|
||
|
CASE_CODE(ERROR_FILE_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_PATH_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_TOO_MANY_OPEN_FILES)
|
||
|
CASE_CODE(ERROR_ACCESS_DENIED)
|
||
|
CASE_CODE(ERROR_INVALID_HANDLE)
|
||
|
CASE_CODE(ERROR_ARENA_TRASHED)
|
||
|
CASE_CODE(ERROR_NOT_ENOUGH_MEMORY)
|
||
|
CASE_CODE(ERROR_INVALID_BLOCK)
|
||
|
CASE_CODE(ERROR_BAD_ENVIRONMENT)
|
||
|
CASE_CODE(ERROR_BAD_FORMAT)
|
||
|
CASE_CODE(ERROR_INVALID_ACCESS)
|
||
|
CASE_CODE(ERROR_INVALID_DATA)
|
||
|
CASE_CODE(ERROR_OUTOFMEMORY)
|
||
|
CASE_CODE(ERROR_INVALID_DRIVE)
|
||
|
CASE_CODE(ERROR_CURRENT_DIRECTORY)
|
||
|
CASE_CODE(ERROR_NOT_SAME_DEVICE)
|
||
|
CASE_CODE(ERROR_NO_MORE_FILES)
|
||
|
CASE_CODE(ERROR_WRITE_PROTECT)
|
||
|
CASE_CODE(ERROR_BAD_UNIT)
|
||
|
CASE_CODE(ERROR_NOT_READY)
|
||
|
CASE_CODE(ERROR_BAD_COMMAND)
|
||
|
CASE_CODE(ERROR_CRC)
|
||
|
CASE_CODE(ERROR_BAD_LENGTH)
|
||
|
CASE_CODE(ERROR_SEEK)
|
||
|
CASE_CODE(ERROR_NOT_DOS_DISK)
|
||
|
CASE_CODE(ERROR_SECTOR_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_OUT_OF_PAPER)
|
||
|
CASE_CODE(ERROR_WRITE_FAULT)
|
||
|
CASE_CODE(ERROR_READ_FAULT)
|
||
|
CASE_CODE(ERROR_GEN_FAILURE)
|
||
|
CASE_CODE(ERROR_SHARING_VIOLATION)
|
||
|
CASE_CODE(ERROR_LOCK_VIOLATION)
|
||
|
CASE_CODE(ERROR_WRONG_DISK)
|
||
|
CASE_CODE(ERROR_SHARING_BUFFER_EXCEEDED)
|
||
|
CASE_CODE(ERROR_HANDLE_EOF)
|
||
|
CASE_CODE(ERROR_HANDLE_DISK_FULL)
|
||
|
CASE_CODE(ERROR_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_REM_NOT_LIST)
|
||
|
CASE_CODE(ERROR_DUP_NAME)
|
||
|
CASE_CODE(ERROR_BAD_NETPATH)
|
||
|
CASE_CODE(ERROR_NETWORK_BUSY)
|
||
|
CASE_CODE(ERROR_DEV_NOT_EXIST)
|
||
|
CASE_CODE(ERROR_TOO_MANY_CMDS)
|
||
|
CASE_CODE(ERROR_ADAP_HDW_ERR)
|
||
|
CASE_CODE(ERROR_BAD_NET_RESP)
|
||
|
CASE_CODE(ERROR_UNEXP_NET_ERR)
|
||
|
CASE_CODE(ERROR_BAD_REM_ADAP)
|
||
|
CASE_CODE(ERROR_PRINTQ_FULL)
|
||
|
CASE_CODE(ERROR_NO_SPOOL_SPACE)
|
||
|
CASE_CODE(ERROR_PRINT_CANCELLED)
|
||
|
CASE_CODE(ERROR_NETNAME_DELETED)
|
||
|
CASE_CODE(ERROR_NETWORK_ACCESS_DENIED)
|
||
|
CASE_CODE(ERROR_BAD_DEV_TYPE)
|
||
|
CASE_CODE(ERROR_BAD_NET_NAME)
|
||
|
CASE_CODE(ERROR_TOO_MANY_NAMES)
|
||
|
CASE_CODE(ERROR_TOO_MANY_SESS)
|
||
|
CASE_CODE(ERROR_SHARING_PAUSED)
|
||
|
CASE_CODE(ERROR_REQ_NOT_ACCEP)
|
||
|
CASE_CODE(ERROR_REDIR_PAUSED)
|
||
|
CASE_CODE(ERROR_FILE_EXISTS)
|
||
|
CASE_CODE(ERROR_CANNOT_MAKE)
|
||
|
CASE_CODE(ERROR_FAIL_I24)
|
||
|
CASE_CODE(ERROR_OUT_OF_STRUCTURES)
|
||
|
CASE_CODE(ERROR_ALREADY_ASSIGNED)
|
||
|
CASE_CODE(ERROR_INVALID_PASSWORD)
|
||
|
CASE_CODE(ERROR_INVALID_PARAMETER)
|
||
|
CASE_CODE(ERROR_NET_WRITE_FAULT)
|
||
|
CASE_CODE(ERROR_NO_PROC_SLOTS)
|
||
|
CASE_CODE(ERROR_TOO_MANY_SEMAPHORES)
|
||
|
CASE_CODE(ERROR_EXCL_SEM_ALREADY_OWNED)
|
||
|
CASE_CODE(ERROR_SEM_IS_SET)
|
||
|
CASE_CODE(ERROR_TOO_MANY_SEM_REQUESTS)
|
||
|
CASE_CODE(ERROR_INVALID_AT_INTERRUPT_TIME)
|
||
|
CASE_CODE(ERROR_SEM_OWNER_DIED)
|
||
|
CASE_CODE(ERROR_SEM_USER_LIMIT)
|
||
|
CASE_CODE(ERROR_DISK_CHANGE)
|
||
|
CASE_CODE(ERROR_DRIVE_LOCKED)
|
||
|
CASE_CODE(ERROR_BROKEN_PIPE)
|
||
|
CASE_CODE(ERROR_OPEN_FAILED)
|
||
|
CASE_CODE(ERROR_BUFFER_OVERFLOW)
|
||
|
CASE_CODE(ERROR_DISK_FULL)
|
||
|
CASE_CODE(ERROR_NO_MORE_SEARCH_HANDLES)
|
||
|
CASE_CODE(ERROR_INVALID_TARGET_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_CATEGORY)
|
||
|
CASE_CODE(ERROR_INVALID_VERIFY_SWITCH)
|
||
|
CASE_CODE(ERROR_BAD_DRIVER_LEVEL)
|
||
|
CASE_CODE(ERROR_CALL_NOT_IMPLEMENTED)
|
||
|
CASE_CODE(ERROR_SEM_TIMEOUT)
|
||
|
CASE_CODE(ERROR_INSUFFICIENT_BUFFER)
|
||
|
CASE_CODE(ERROR_INVALID_NAME)
|
||
|
CASE_CODE(ERROR_INVALID_LEVEL)
|
||
|
CASE_CODE(ERROR_NO_VOLUME_LABEL)
|
||
|
CASE_CODE(ERROR_MOD_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_PROC_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_WAIT_NO_CHILDREN)
|
||
|
CASE_CODE(ERROR_CHILD_NOT_COMPLETE)
|
||
|
CASE_CODE(ERROR_DIRECT_ACCESS_HANDLE)
|
||
|
CASE_CODE(ERROR_NEGATIVE_SEEK)
|
||
|
CASE_CODE(ERROR_SEEK_ON_DEVICE)
|
||
|
CASE_CODE(ERROR_IS_JOIN_TARGET)
|
||
|
CASE_CODE(ERROR_IS_JOINED)
|
||
|
CASE_CODE(ERROR_IS_SUBSTED)
|
||
|
CASE_CODE(ERROR_NOT_JOINED)
|
||
|
CASE_CODE(ERROR_NOT_SUBSTED)
|
||
|
CASE_CODE(ERROR_JOIN_TO_JOIN)
|
||
|
CASE_CODE(ERROR_SUBST_TO_SUBST)
|
||
|
CASE_CODE(ERROR_JOIN_TO_SUBST)
|
||
|
CASE_CODE(ERROR_SUBST_TO_JOIN)
|
||
|
CASE_CODE(ERROR_BUSY_DRIVE)
|
||
|
CASE_CODE(ERROR_SAME_DRIVE)
|
||
|
CASE_CODE(ERROR_DIR_NOT_ROOT)
|
||
|
CASE_CODE(ERROR_DIR_NOT_EMPTY)
|
||
|
CASE_CODE(ERROR_IS_SUBST_PATH)
|
||
|
CASE_CODE(ERROR_IS_JOIN_PATH)
|
||
|
CASE_CODE(ERROR_PATH_BUSY)
|
||
|
CASE_CODE(ERROR_IS_SUBST_TARGET)
|
||
|
CASE_CODE(ERROR_SYSTEM_TRACE)
|
||
|
CASE_CODE(ERROR_INVALID_EVENT_COUNT)
|
||
|
CASE_CODE(ERROR_TOO_MANY_MUXWAITERS)
|
||
|
CASE_CODE(ERROR_INVALID_LIST_FORMAT)
|
||
|
CASE_CODE(ERROR_LABEL_TOO_LONG)
|
||
|
CASE_CODE(ERROR_TOO_MANY_TCBS)
|
||
|
CASE_CODE(ERROR_SIGNAL_REFUSED)
|
||
|
CASE_CODE(ERROR_DISCARDED)
|
||
|
CASE_CODE(ERROR_NOT_LOCKED)
|
||
|
CASE_CODE(ERROR_BAD_THREADID_ADDR)
|
||
|
CASE_CODE(ERROR_BAD_ARGUMENTS)
|
||
|
CASE_CODE(ERROR_BAD_PATHNAME)
|
||
|
CASE_CODE(ERROR_SIGNAL_PENDING)
|
||
|
CASE_CODE(ERROR_MAX_THRDS_REACHED)
|
||
|
CASE_CODE(ERROR_LOCK_FAILED)
|
||
|
CASE_CODE(ERROR_BUSY)
|
||
|
CASE_CODE(ERROR_CANCEL_VIOLATION)
|
||
|
CASE_CODE(ERROR_ATOMIC_LOCKS_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_INVALID_SEGMENT_NUMBER)
|
||
|
CASE_CODE(ERROR_INVALID_ORDINAL)
|
||
|
CASE_CODE(ERROR_ALREADY_EXISTS)
|
||
|
CASE_CODE(ERROR_INVALID_FLAG_NUMBER)
|
||
|
CASE_CODE(ERROR_SEM_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_STARTING_CODESEG)
|
||
|
CASE_CODE(ERROR_INVALID_STACKSEG)
|
||
|
CASE_CODE(ERROR_INVALID_MODULETYPE)
|
||
|
CASE_CODE(ERROR_INVALID_EXE_SIGNATURE)
|
||
|
CASE_CODE(ERROR_EXE_MARKED_INVALID)
|
||
|
CASE_CODE(ERROR_BAD_EXE_FORMAT)
|
||
|
CASE_CODE(ERROR_ITERATED_DATA_EXCEEDS_64k)
|
||
|
CASE_CODE(ERROR_INVALID_MINALLOCSIZE)
|
||
|
CASE_CODE(ERROR_DYNLINK_FROM_INVALID_RING)
|
||
|
CASE_CODE(ERROR_IOPL_NOT_ENABLED)
|
||
|
CASE_CODE(ERROR_INVALID_SEGDPL)
|
||
|
CASE_CODE(ERROR_AUTODATASEG_EXCEEDS_64k)
|
||
|
CASE_CODE(ERROR_RING2SEG_MUST_BE_MOVABLE)
|
||
|
CASE_CODE(ERROR_RELOC_CHAIN_XEEDS_SEGLIM)
|
||
|
CASE_CODE(ERROR_INFLOOP_IN_RELOC_CHAIN)
|
||
|
CASE_CODE(ERROR_ENVVAR_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_NO_SIGNAL_SENT)
|
||
|
CASE_CODE(ERROR_FILENAME_EXCED_RANGE)
|
||
|
CASE_CODE(ERROR_RING2_STACK_IN_USE)
|
||
|
CASE_CODE(ERROR_META_EXPANSION_TOO_LONG)
|
||
|
CASE_CODE(ERROR_INVALID_SIGNAL_NUMBER)
|
||
|
CASE_CODE(ERROR_THREAD_1_INACTIVE)
|
||
|
CASE_CODE(ERROR_LOCKED)
|
||
|
CASE_CODE(ERROR_TOO_MANY_MODULES)
|
||
|
CASE_CODE(ERROR_NESTING_NOT_ALLOWED)
|
||
|
CASE_CODE(ERROR_EXE_MACHINE_TYPE_MISMATCH)
|
||
|
CASE_CODE(ERROR_BAD_PIPE)
|
||
|
CASE_CODE(ERROR_PIPE_BUSY)
|
||
|
CASE_CODE(ERROR_NO_DATA)
|
||
|
CASE_CODE(ERROR_PIPE_NOT_CONNECTED)
|
||
|
CASE_CODE(ERROR_MORE_DATA)
|
||
|
CASE_CODE(ERROR_VC_DISCONNECTED)
|
||
|
CASE_CODE(ERROR_INVALID_EA_NAME)
|
||
|
CASE_CODE(ERROR_EA_LIST_INCONSISTENT)
|
||
|
CASE_CODE(ERROR_NO_MORE_ITEMS)
|
||
|
CASE_CODE(ERROR_CANNOT_COPY)
|
||
|
CASE_CODE(ERROR_DIRECTORY)
|
||
|
CASE_CODE(ERROR_EAS_DIDNT_FIT)
|
||
|
CASE_CODE(ERROR_EA_FILE_CORRUPT)
|
||
|
CASE_CODE(ERROR_EA_TABLE_FULL)
|
||
|
CASE_CODE(ERROR_INVALID_EA_HANDLE)
|
||
|
CASE_CODE(ERROR_EAS_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_NOT_OWNER)
|
||
|
CASE_CODE(ERROR_TOO_MANY_POSTS)
|
||
|
CASE_CODE(ERROR_PARTIAL_COPY)
|
||
|
CASE_CODE(ERROR_MR_MID_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_ADDRESS)
|
||
|
CASE_CODE(ERROR_ARITHMETIC_OVERFLOW)
|
||
|
CASE_CODE(ERROR_PIPE_CONNECTED)
|
||
|
CASE_CODE(ERROR_PIPE_LISTENING)
|
||
|
CASE_CODE(ERROR_EA_ACCESS_DENIED)
|
||
|
CASE_CODE(ERROR_OPERATION_ABORTED)
|
||
|
CASE_CODE(ERROR_IO_INCOMPLETE)
|
||
|
CASE_CODE(ERROR_IO_PENDING)
|
||
|
CASE_CODE(ERROR_NOACCESS)
|
||
|
CASE_CODE(ERROR_SWAPERROR)
|
||
|
CASE_CODE(ERROR_STACK_OVERFLOW)
|
||
|
CASE_CODE(ERROR_INVALID_MESSAGE)
|
||
|
CASE_CODE(ERROR_CAN_NOT_COMPLETE)
|
||
|
CASE_CODE(ERROR_INVALID_FLAGS)
|
||
|
CASE_CODE(ERROR_UNRECOGNIZED_VOLUME)
|
||
|
CASE_CODE(ERROR_FILE_INVALID)
|
||
|
CASE_CODE(ERROR_FULLSCREEN_MODE)
|
||
|
CASE_CODE(ERROR_NO_TOKEN)
|
||
|
CASE_CODE(ERROR_BADDB)
|
||
|
CASE_CODE(ERROR_BADKEY)
|
||
|
CASE_CODE(ERROR_CANTOPEN)
|
||
|
CASE_CODE(ERROR_CANTREAD)
|
||
|
CASE_CODE(ERROR_CANTWRITE)
|
||
|
CASE_CODE(ERROR_REGISTRY_RECOVERED)
|
||
|
CASE_CODE(ERROR_REGISTRY_CORRUPT)
|
||
|
CASE_CODE(ERROR_REGISTRY_IO_FAILED)
|
||
|
CASE_CODE(ERROR_NOT_REGISTRY_FILE)
|
||
|
CASE_CODE(ERROR_KEY_DELETED)
|
||
|
CASE_CODE(ERROR_NO_LOG_SPACE)
|
||
|
CASE_CODE(ERROR_KEY_HAS_CHILDREN)
|
||
|
CASE_CODE(ERROR_CHILD_MUST_BE_VOLATILE)
|
||
|
CASE_CODE(ERROR_NOTIFY_ENUM_DIR)
|
||
|
CASE_CODE(ERROR_DEPENDENT_SERVICES_RUNNING)
|
||
|
CASE_CODE(ERROR_INVALID_SERVICE_CONTROL)
|
||
|
CASE_CODE(ERROR_SERVICE_REQUEST_TIMEOUT)
|
||
|
CASE_CODE(ERROR_SERVICE_NO_THREAD)
|
||
|
CASE_CODE(ERROR_SERVICE_DATABASE_LOCKED)
|
||
|
CASE_CODE(ERROR_SERVICE_ALREADY_RUNNING)
|
||
|
CASE_CODE(ERROR_INVALID_SERVICE_ACCOUNT)
|
||
|
CASE_CODE(ERROR_SERVICE_DISABLED)
|
||
|
CASE_CODE(ERROR_CIRCULAR_DEPENDENCY)
|
||
|
CASE_CODE(ERROR_SERVICE_DOES_NOT_EXIST)
|
||
|
CASE_CODE(ERROR_SERVICE_CANNOT_ACCEPT_CTRL)
|
||
|
CASE_CODE(ERROR_SERVICE_NOT_ACTIVE)
|
||
|
CASE_CODE(ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)
|
||
|
CASE_CODE(ERROR_EXCEPTION_IN_SERVICE)
|
||
|
CASE_CODE(ERROR_DATABASE_DOES_NOT_EXIST)
|
||
|
CASE_CODE(ERROR_SERVICE_SPECIFIC_ERROR)
|
||
|
CASE_CODE(ERROR_PROCESS_ABORTED)
|
||
|
CASE_CODE(ERROR_SERVICE_DEPENDENCY_FAIL)
|
||
|
CASE_CODE(ERROR_SERVICE_LOGON_FAILED)
|
||
|
CASE_CODE(ERROR_SERVICE_START_HANG)
|
||
|
CASE_CODE(ERROR_INVALID_SERVICE_LOCK)
|
||
|
CASE_CODE(ERROR_SERVICE_MARKED_FOR_DELETE)
|
||
|
CASE_CODE(ERROR_SERVICE_EXISTS)
|
||
|
CASE_CODE(ERROR_ALREADY_RUNNING_LKG)
|
||
|
CASE_CODE(ERROR_SERVICE_DEPENDENCY_DELETED)
|
||
|
CASE_CODE(ERROR_BOOT_ALREADY_ACCEPTED)
|
||
|
CASE_CODE(ERROR_SERVICE_NEVER_STARTED)
|
||
|
CASE_CODE(ERROR_DUPLICATE_SERVICE_NAME)
|
||
|
CASE_CODE(ERROR_DIFFERENT_SERVICE_ACCOUNT)
|
||
|
CASE_CODE(ERROR_END_OF_MEDIA)
|
||
|
CASE_CODE(ERROR_FILEMARK_DETECTED)
|
||
|
CASE_CODE(ERROR_BEGINNING_OF_MEDIA)
|
||
|
CASE_CODE(ERROR_SETMARK_DETECTED)
|
||
|
CASE_CODE(ERROR_NO_DATA_DETECTED)
|
||
|
CASE_CODE(ERROR_PARTITION_FAILURE)
|
||
|
CASE_CODE(ERROR_INVALID_BLOCK_LENGTH)
|
||
|
CASE_CODE(ERROR_DEVICE_NOT_PARTITIONED)
|
||
|
CASE_CODE(ERROR_UNABLE_TO_LOCK_MEDIA)
|
||
|
CASE_CODE(ERROR_UNABLE_TO_UNLOAD_MEDIA)
|
||
|
CASE_CODE(ERROR_MEDIA_CHANGED)
|
||
|
CASE_CODE(ERROR_BUS_RESET)
|
||
|
CASE_CODE(ERROR_NO_MEDIA_IN_DRIVE)
|
||
|
CASE_CODE(ERROR_NO_UNICODE_TRANSLATION)
|
||
|
CASE_CODE(ERROR_DLL_INIT_FAILED)
|
||
|
CASE_CODE(ERROR_SHUTDOWN_IN_PROGRESS)
|
||
|
CASE_CODE(ERROR_NO_SHUTDOWN_IN_PROGRESS)
|
||
|
CASE_CODE(ERROR_IO_DEVICE)
|
||
|
CASE_CODE(ERROR_SERIAL_NO_DEVICE)
|
||
|
CASE_CODE(ERROR_IRQ_BUSY)
|
||
|
CASE_CODE(ERROR_MORE_WRITES)
|
||
|
CASE_CODE(ERROR_COUNTER_TIMEOUT)
|
||
|
CASE_CODE(ERROR_FLOPPY_ID_MARK_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_FLOPPY_WRONG_CYLINDER)
|
||
|
CASE_CODE(ERROR_FLOPPY_UNKNOWN_ERROR)
|
||
|
CASE_CODE(ERROR_FLOPPY_BAD_REGISTERS)
|
||
|
CASE_CODE(ERROR_DISK_RECALIBRATE_FAILED)
|
||
|
CASE_CODE(ERROR_DISK_OPERATION_FAILED)
|
||
|
CASE_CODE(ERROR_DISK_RESET_FAILED)
|
||
|
CASE_CODE(ERROR_EOM_OVERFLOW)
|
||
|
CASE_CODE(ERROR_NOT_ENOUGH_SERVER_MEMORY)
|
||
|
CASE_CODE(ERROR_POSSIBLE_DEADLOCK)
|
||
|
CASE_CODE(ERROR_MAPPED_ALIGNMENT)
|
||
|
CASE_CODE(ERROR_SET_POWER_STATE_VETOED)
|
||
|
CASE_CODE(ERROR_SET_POWER_STATE_FAILED)
|
||
|
CASE_CODE(ERROR_TOO_MANY_LINKS)
|
||
|
CASE_CODE(ERROR_OLD_WIN_VERSION)
|
||
|
CASE_CODE(ERROR_APP_WRONG_OS)
|
||
|
CASE_CODE(ERROR_SINGLE_INSTANCE_APP)
|
||
|
CASE_CODE(ERROR_RMODE_APP)
|
||
|
CASE_CODE(ERROR_INVALID_DLL)
|
||
|
CASE_CODE(ERROR_NO_ASSOCIATION)
|
||
|
CASE_CODE(ERROR_DDE_FAIL)
|
||
|
CASE_CODE(ERROR_DLL_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_BAD_USERNAME)
|
||
|
CASE_CODE(ERROR_NOT_CONNECTED)
|
||
|
CASE_CODE(ERROR_OPEN_FILES)
|
||
|
CASE_CODE(ERROR_ACTIVE_CONNECTIONS)
|
||
|
CASE_CODE(ERROR_DEVICE_IN_USE)
|
||
|
CASE_CODE(ERROR_BAD_DEVICE)
|
||
|
CASE_CODE(ERROR_CONNECTION_UNAVAIL)
|
||
|
CASE_CODE(ERROR_DEVICE_ALREADY_REMEMBERED)
|
||
|
CASE_CODE(ERROR_NO_NET_OR_BAD_PATH)
|
||
|
CASE_CODE(ERROR_BAD_PROVIDER)
|
||
|
CASE_CODE(ERROR_CANNOT_OPEN_PROFILE)
|
||
|
CASE_CODE(ERROR_BAD_PROFILE)
|
||
|
CASE_CODE(ERROR_NOT_CONTAINER)
|
||
|
CASE_CODE(ERROR_EXTENDED_ERROR)
|
||
|
CASE_CODE(ERROR_INVALID_GROUPNAME)
|
||
|
CASE_CODE(ERROR_INVALID_COMPUTERNAME)
|
||
|
CASE_CODE(ERROR_INVALID_EVENTNAME)
|
||
|
CASE_CODE(ERROR_INVALID_DOMAINNAME)
|
||
|
CASE_CODE(ERROR_INVALID_SERVICENAME)
|
||
|
CASE_CODE(ERROR_INVALID_NETNAME)
|
||
|
CASE_CODE(ERROR_INVALID_SHARENAME)
|
||
|
CASE_CODE(ERROR_INVALID_PASSWORDNAME)
|
||
|
CASE_CODE(ERROR_INVALID_MESSAGENAME)
|
||
|
CASE_CODE(ERROR_INVALID_MESSAGEDEST)
|
||
|
CASE_CODE(ERROR_SESSION_CREDENTIAL_CONFLICT)
|
||
|
CASE_CODE(ERROR_REMOTE_SESSION_LIMIT_EXCEEDED)
|
||
|
CASE_CODE(ERROR_DUP_DOMAINNAME)
|
||
|
CASE_CODE(ERROR_NO_NETWORK)
|
||
|
CASE_CODE(ERROR_CANCELLED)
|
||
|
CASE_CODE(ERROR_USER_MAPPED_FILE)
|
||
|
CASE_CODE(ERROR_CONNECTION_REFUSED)
|
||
|
CASE_CODE(ERROR_GRACEFUL_DISCONNECT)
|
||
|
CASE_CODE(ERROR_ADDRESS_ALREADY_ASSOCIATED)
|
||
|
CASE_CODE(ERROR_ADDRESS_NOT_ASSOCIATED)
|
||
|
CASE_CODE(ERROR_CONNECTION_INVALID)
|
||
|
CASE_CODE(ERROR_CONNECTION_ACTIVE)
|
||
|
CASE_CODE(ERROR_NETWORK_UNREACHABLE)
|
||
|
CASE_CODE(ERROR_HOST_UNREACHABLE)
|
||
|
CASE_CODE(ERROR_PROTOCOL_UNREACHABLE)
|
||
|
CASE_CODE(ERROR_PORT_UNREACHABLE)
|
||
|
CASE_CODE(ERROR_REQUEST_ABORTED)
|
||
|
CASE_CODE(ERROR_CONNECTION_ABORTED)
|
||
|
CASE_CODE(ERROR_RETRY)
|
||
|
CASE_CODE(ERROR_CONNECTION_COUNT_LIMIT)
|
||
|
CASE_CODE(ERROR_LOGIN_TIME_RESTRICTION)
|
||
|
CASE_CODE(ERROR_LOGIN_WKSTA_RESTRICTION)
|
||
|
CASE_CODE(ERROR_INCORRECT_ADDRESS)
|
||
|
CASE_CODE(ERROR_ALREADY_REGISTERED)
|
||
|
CASE_CODE(ERROR_SERVICE_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_NOT_AUTHENTICATED)
|
||
|
CASE_CODE(ERROR_NOT_LOGGED_ON)
|
||
|
CASE_CODE(ERROR_CONTINUE)
|
||
|
CASE_CODE(ERROR_ALREADY_INITIALIZED)
|
||
|
CASE_CODE(ERROR_NO_MORE_DEVICES)
|
||
|
CASE_CODE(ERROR_NOT_ALL_ASSIGNED)
|
||
|
CASE_CODE(ERROR_SOME_NOT_MAPPED)
|
||
|
CASE_CODE(ERROR_NO_QUOTAS_FOR_ACCOUNT)
|
||
|
CASE_CODE(ERROR_LOCAL_USER_SESSION_KEY)
|
||
|
CASE_CODE(ERROR_NULL_LM_PASSWORD)
|
||
|
CASE_CODE(ERROR_UNKNOWN_REVISION)
|
||
|
CASE_CODE(ERROR_REVISION_MISMATCH)
|
||
|
CASE_CODE(ERROR_INVALID_OWNER)
|
||
|
CASE_CODE(ERROR_INVALID_PRIMARY_GROUP)
|
||
|
CASE_CODE(ERROR_NO_IMPERSONATION_TOKEN)
|
||
|
CASE_CODE(ERROR_CANT_DISABLE_MANDATORY)
|
||
|
CASE_CODE(ERROR_NO_LOGON_SERVERS)
|
||
|
CASE_CODE(ERROR_NO_SUCH_LOGON_SESSION)
|
||
|
CASE_CODE(ERROR_NO_SUCH_PRIVILEGE)
|
||
|
CASE_CODE(ERROR_PRIVILEGE_NOT_HELD)
|
||
|
CASE_CODE(ERROR_INVALID_ACCOUNT_NAME)
|
||
|
CASE_CODE(ERROR_USER_EXISTS)
|
||
|
CASE_CODE(ERROR_NO_SUCH_USER)
|
||
|
CASE_CODE(ERROR_GROUP_EXISTS)
|
||
|
CASE_CODE(ERROR_NO_SUCH_GROUP)
|
||
|
CASE_CODE(ERROR_MEMBER_IN_GROUP)
|
||
|
CASE_CODE(ERROR_MEMBER_NOT_IN_GROUP)
|
||
|
CASE_CODE(ERROR_LAST_ADMIN)
|
||
|
CASE_CODE(ERROR_WRONG_PASSWORD)
|
||
|
CASE_CODE(ERROR_ILL_FORMED_PASSWORD)
|
||
|
CASE_CODE(ERROR_PASSWORD_RESTRICTION)
|
||
|
CASE_CODE(ERROR_LOGON_FAILURE)
|
||
|
CASE_CODE(ERROR_ACCOUNT_RESTRICTION)
|
||
|
CASE_CODE(ERROR_INVALID_LOGON_HOURS)
|
||
|
CASE_CODE(ERROR_INVALID_WORKSTATION)
|
||
|
CASE_CODE(ERROR_PASSWORD_EXPIRED)
|
||
|
CASE_CODE(ERROR_ACCOUNT_DISABLED)
|
||
|
CASE_CODE(ERROR_NONE_MAPPED)
|
||
|
CASE_CODE(ERROR_TOO_MANY_LUIDS_REQUESTED)
|
||
|
CASE_CODE(ERROR_LUIDS_EXHAUSTED)
|
||
|
CASE_CODE(ERROR_INVALID_SUB_AUTHORITY)
|
||
|
CASE_CODE(ERROR_INVALID_ACL)
|
||
|
CASE_CODE(ERROR_INVALID_SID)
|
||
|
CASE_CODE(ERROR_INVALID_SECURITY_DESCR)
|
||
|
CASE_CODE(ERROR_BAD_INHERITANCE_ACL)
|
||
|
CASE_CODE(ERROR_SERVER_DISABLED)
|
||
|
CASE_CODE(ERROR_SERVER_NOT_DISABLED)
|
||
|
CASE_CODE(ERROR_INVALID_ID_AUTHORITY)
|
||
|
CASE_CODE(ERROR_ALLOTTED_SPACE_EXCEEDED)
|
||
|
CASE_CODE(ERROR_INVALID_GROUP_ATTRIBUTES)
|
||
|
CASE_CODE(ERROR_BAD_IMPERSONATION_LEVEL)
|
||
|
CASE_CODE(ERROR_CANT_OPEN_ANONYMOUS)
|
||
|
CASE_CODE(ERROR_BAD_VALIDATION_CLASS)
|
||
|
CASE_CODE(ERROR_BAD_TOKEN_TYPE)
|
||
|
CASE_CODE(ERROR_NO_SECURITY_ON_OBJECT)
|
||
|
CASE_CODE(ERROR_CANT_ACCESS_DOMAIN_INFO)
|
||
|
CASE_CODE(ERROR_INVALID_SERVER_STATE)
|
||
|
CASE_CODE(ERROR_INVALID_DOMAIN_STATE)
|
||
|
CASE_CODE(ERROR_INVALID_DOMAIN_ROLE)
|
||
|
CASE_CODE(ERROR_NO_SUCH_DOMAIN)
|
||
|
CASE_CODE(ERROR_DOMAIN_EXISTS)
|
||
|
CASE_CODE(ERROR_DOMAIN_LIMIT_EXCEEDED)
|
||
|
CASE_CODE(ERROR_INTERNAL_DB_CORRUPTION)
|
||
|
CASE_CODE(ERROR_INTERNAL_ERROR)
|
||
|
CASE_CODE(ERROR_GENERIC_NOT_MAPPED)
|
||
|
CASE_CODE(ERROR_BAD_DESCRIPTOR_FORMAT)
|
||
|
CASE_CODE(ERROR_NOT_LOGON_PROCESS)
|
||
|
CASE_CODE(ERROR_LOGON_SESSION_EXISTS)
|
||
|
CASE_CODE(ERROR_NO_SUCH_PACKAGE)
|
||
|
CASE_CODE(ERROR_BAD_LOGON_SESSION_STATE)
|
||
|
CASE_CODE(ERROR_LOGON_SESSION_COLLISION)
|
||
|
CASE_CODE(ERROR_INVALID_LOGON_TYPE)
|
||
|
CASE_CODE(ERROR_CANNOT_IMPERSONATE)
|
||
|
CASE_CODE(ERROR_RXACT_INVALID_STATE)
|
||
|
CASE_CODE(ERROR_RXACT_COMMIT_FAILURE)
|
||
|
CASE_CODE(ERROR_SPECIAL_ACCOUNT)
|
||
|
CASE_CODE(ERROR_SPECIAL_GROUP)
|
||
|
CASE_CODE(ERROR_SPECIAL_USER)
|
||
|
CASE_CODE(ERROR_MEMBERS_PRIMARY_GROUP)
|
||
|
CASE_CODE(ERROR_TOKEN_ALREADY_IN_USE)
|
||
|
CASE_CODE(ERROR_NO_SUCH_ALIAS)
|
||
|
CASE_CODE(ERROR_MEMBER_NOT_IN_ALIAS)
|
||
|
CASE_CODE(ERROR_MEMBER_IN_ALIAS)
|
||
|
CASE_CODE(ERROR_ALIAS_EXISTS)
|
||
|
CASE_CODE(ERROR_LOGON_NOT_GRANTED)
|
||
|
CASE_CODE(ERROR_TOO_MANY_SECRETS)
|
||
|
CASE_CODE(ERROR_SECRET_TOO_LONG)
|
||
|
CASE_CODE(ERROR_INTERNAL_DB_ERROR)
|
||
|
CASE_CODE(ERROR_TOO_MANY_CONTEXT_IDS)
|
||
|
CASE_CODE(ERROR_LOGON_TYPE_NOT_GRANTED)
|
||
|
CASE_CODE(ERROR_NT_CROSS_ENCRYPTION_REQUIRED)
|
||
|
CASE_CODE(ERROR_NO_SUCH_MEMBER)
|
||
|
CASE_CODE(ERROR_INVALID_MEMBER)
|
||
|
CASE_CODE(ERROR_TOO_MANY_SIDS)
|
||
|
CASE_CODE(ERROR_LM_CROSS_ENCRYPTION_REQUIRED)
|
||
|
CASE_CODE(ERROR_NO_INHERITANCE)
|
||
|
CASE_CODE(ERROR_FILE_CORRUPT)
|
||
|
CASE_CODE(ERROR_DISK_CORRUPT)
|
||
|
CASE_CODE(ERROR_NO_USER_SESSION_KEY)
|
||
|
CASE_CODE(ERROR_LICENSE_QUOTA_EXCEEDED)
|
||
|
CASE_CODE(ERROR_INVALID_WINDOW_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_MENU_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_CURSOR_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_ACCEL_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_HOOK_HANDLE)
|
||
|
CASE_CODE(ERROR_INVALID_DWP_HANDLE)
|
||
|
CASE_CODE(ERROR_TLW_WITH_WSCHILD)
|
||
|
CASE_CODE(ERROR_CANNOT_FIND_WND_CLASS)
|
||
|
CASE_CODE(ERROR_WINDOW_OF_OTHER_THREAD)
|
||
|
CASE_CODE(ERROR_HOTKEY_ALREADY_REGISTERED)
|
||
|
CASE_CODE(ERROR_CLASS_ALREADY_EXISTS)
|
||
|
CASE_CODE(ERROR_CLASS_DOES_NOT_EXIST)
|
||
|
CASE_CODE(ERROR_CLASS_HAS_WINDOWS)
|
||
|
CASE_CODE(ERROR_INVALID_INDEX)
|
||
|
CASE_CODE(ERROR_INVALID_ICON_HANDLE)
|
||
|
CASE_CODE(ERROR_PRIVATE_DIALOG_INDEX)
|
||
|
CASE_CODE(ERROR_LISTBOX_ID_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_NO_WILDCARD_CHARACTERS)
|
||
|
CASE_CODE(ERROR_CLIPBOARD_NOT_OPEN)
|
||
|
CASE_CODE(ERROR_HOTKEY_NOT_REGISTERED)
|
||
|
CASE_CODE(ERROR_WINDOW_NOT_DIALOG)
|
||
|
CASE_CODE(ERROR_CONTROL_ID_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_COMBOBOX_MESSAGE)
|
||
|
CASE_CODE(ERROR_WINDOW_NOT_COMBOBOX)
|
||
|
CASE_CODE(ERROR_INVALID_EDIT_HEIGHT)
|
||
|
CASE_CODE(ERROR_DC_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_HOOK_FILTER)
|
||
|
CASE_CODE(ERROR_INVALID_FILTER_PROC)
|
||
|
CASE_CODE(ERROR_HOOK_NEEDS_HMOD)
|
||
|
CASE_CODE(ERROR_GLOBAL_ONLY_HOOK)
|
||
|
CASE_CODE(ERROR_JOURNAL_HOOK_SET)
|
||
|
CASE_CODE(ERROR_HOOK_NOT_INSTALLED)
|
||
|
CASE_CODE(ERROR_INVALID_LB_MESSAGE)
|
||
|
CASE_CODE(ERROR_SETCOUNT_ON_BAD_LB)
|
||
|
CASE_CODE(ERROR_LB_WITHOUT_TABSTOPS)
|
||
|
CASE_CODE(ERROR_DESTROY_OBJECT_OF_OTHER_THREAD)
|
||
|
CASE_CODE(ERROR_CHILD_WINDOW_MENU)
|
||
|
CASE_CODE(ERROR_NO_SYSTEM_MENU)
|
||
|
CASE_CODE(ERROR_INVALID_MSGBOX_STYLE)
|
||
|
CASE_CODE(ERROR_INVALID_SPI_VALUE)
|
||
|
CASE_CODE(ERROR_SCREEN_ALREADY_LOCKED)
|
||
|
CASE_CODE(ERROR_HWNDS_HAVE_DIFF_PARENT)
|
||
|
CASE_CODE(ERROR_NOT_CHILD_WINDOW)
|
||
|
CASE_CODE(ERROR_INVALID_GW_COMMAND)
|
||
|
CASE_CODE(ERROR_INVALID_THREAD_ID)
|
||
|
CASE_CODE(ERROR_NON_MDICHILD_WINDOW)
|
||
|
CASE_CODE(ERROR_POPUP_ALREADY_ACTIVE)
|
||
|
CASE_CODE(ERROR_NO_SCROLLBARS)
|
||
|
CASE_CODE(ERROR_INVALID_SCROLLBAR_RANGE)
|
||
|
CASE_CODE(ERROR_INVALID_SHOWWIN_COMMAND)
|
||
|
CASE_CODE(ERROR_NO_SYSTEM_RESOURCES)
|
||
|
CASE_CODE(ERROR_NONPAGED_SYSTEM_RESOURCES)
|
||
|
CASE_CODE(ERROR_PAGED_SYSTEM_RESOURCES)
|
||
|
CASE_CODE(ERROR_WORKING_SET_QUOTA)
|
||
|
CASE_CODE(ERROR_PAGEFILE_QUOTA)
|
||
|
CASE_CODE(ERROR_COMMITMENT_LIMIT)
|
||
|
CASE_CODE(ERROR_MENU_ITEM_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_KEYBOARD_HANDLE)
|
||
|
CASE_CODE(ERROR_HOOK_TYPE_NOT_ALLOWED)
|
||
|
CASE_CODE(ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION)
|
||
|
CASE_CODE(ERROR_EVENTLOG_FILE_CORRUPT)
|
||
|
CASE_CODE(ERROR_EVENTLOG_CANT_START)
|
||
|
CASE_CODE(ERROR_LOG_FILE_FULL)
|
||
|
CASE_CODE(ERROR_EVENTLOG_FILE_CHANGED)
|
||
|
CASE_CODE(RPC_S_INVALID_STRING_BINDING)
|
||
|
CASE_CODE(RPC_S_WRONG_KIND_OF_BINDING)
|
||
|
CASE_CODE(RPC_S_INVALID_BINDING)
|
||
|
CASE_CODE(RPC_S_PROTSEQ_NOT_SUPPORTED)
|
||
|
CASE_CODE(RPC_S_INVALID_RPC_PROTSEQ)
|
||
|
CASE_CODE(RPC_S_INVALID_STRING_UUID)
|
||
|
CASE_CODE(RPC_S_INVALID_ENDPOINT_FORMAT)
|
||
|
CASE_CODE(RPC_S_INVALID_NET_ADDR)
|
||
|
CASE_CODE(RPC_S_NO_ENDPOINT_FOUND)
|
||
|
CASE_CODE(RPC_S_INVALID_TIMEOUT)
|
||
|
CASE_CODE(RPC_S_OBJECT_NOT_FOUND)
|
||
|
CASE_CODE(RPC_S_ALREADY_REGISTERED)
|
||
|
CASE_CODE(RPC_S_TYPE_ALREADY_REGISTERED)
|
||
|
CASE_CODE(RPC_S_ALREADY_LISTENING)
|
||
|
CASE_CODE(RPC_S_NO_PROTSEQS_REGISTERED)
|
||
|
CASE_CODE(RPC_S_NOT_LISTENING)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_MGR_TYPE)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_IF)
|
||
|
CASE_CODE(RPC_S_NO_BINDINGS)
|
||
|
CASE_CODE(RPC_S_NO_PROTSEQS)
|
||
|
CASE_CODE(RPC_S_CANT_CREATE_ENDPOINT)
|
||
|
CASE_CODE(RPC_S_OUT_OF_RESOURCES)
|
||
|
CASE_CODE(RPC_S_SERVER_UNAVAILABLE)
|
||
|
CASE_CODE(RPC_S_SERVER_TOO_BUSY)
|
||
|
CASE_CODE(RPC_S_INVALID_NETWORK_OPTIONS)
|
||
|
CASE_CODE(RPC_S_NO_CALL_ACTIVE)
|
||
|
CASE_CODE(RPC_S_CALL_FAILED)
|
||
|
CASE_CODE(RPC_S_CALL_FAILED_DNE)
|
||
|
CASE_CODE(RPC_S_PROTOCOL_ERROR)
|
||
|
CASE_CODE(RPC_S_UNSUPPORTED_TRANS_SYN)
|
||
|
CASE_CODE(RPC_S_UNSUPPORTED_TYPE)
|
||
|
CASE_CODE(RPC_S_INVALID_TAG)
|
||
|
CASE_CODE(RPC_S_INVALID_BOUND)
|
||
|
CASE_CODE(RPC_S_NO_ENTRY_NAME)
|
||
|
CASE_CODE(RPC_S_INVALID_NAME_SYNTAX)
|
||
|
CASE_CODE(RPC_S_UNSUPPORTED_NAME_SYNTAX)
|
||
|
CASE_CODE(RPC_S_UUID_NO_ADDRESS)
|
||
|
CASE_CODE(RPC_S_DUPLICATE_ENDPOINT)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_AUTHN_TYPE)
|
||
|
CASE_CODE(RPC_S_MAX_CALLS_TOO_SMALL)
|
||
|
CASE_CODE(RPC_S_STRING_TOO_LONG)
|
||
|
CASE_CODE(RPC_S_PROTSEQ_NOT_FOUND)
|
||
|
CASE_CODE(RPC_S_PROCNUM_OUT_OF_RANGE)
|
||
|
CASE_CODE(RPC_S_BINDING_HAS_NO_AUTH)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_AUTHN_SERVICE)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_AUTHN_LEVEL)
|
||
|
CASE_CODE(RPC_S_INVALID_AUTH_IDENTITY)
|
||
|
CASE_CODE(RPC_S_UNKNOWN_AUTHZ_SERVICE)
|
||
|
CASE_CODE(EPT_S_INVALID_ENTRY)
|
||
|
CASE_CODE(EPT_S_CANT_PERFORM_OP)
|
||
|
CASE_CODE(EPT_S_NOT_REGISTERED)
|
||
|
CASE_CODE(RPC_S_NOTHING_TO_EXPORT)
|
||
|
CASE_CODE(RPC_S_INCOMPLETE_NAME)
|
||
|
CASE_CODE(RPC_S_INVALID_VERS_OPTION)
|
||
|
CASE_CODE(RPC_S_NO_MORE_MEMBERS)
|
||
|
CASE_CODE(RPC_S_NOT_ALL_OBJS_UNEXPORTED)
|
||
|
CASE_CODE(RPC_S_INTERFACE_NOT_FOUND)
|
||
|
CASE_CODE(RPC_S_ENTRY_ALREADY_EXISTS)
|
||
|
CASE_CODE(RPC_S_ENTRY_NOT_FOUND)
|
||
|
CASE_CODE(RPC_S_NAME_SERVICE_UNAVAILABLE)
|
||
|
CASE_CODE(RPC_S_INVALID_NAF_ID)
|
||
|
CASE_CODE(RPC_S_CANNOT_SUPPORT)
|
||
|
CASE_CODE(RPC_S_NO_CONTEXT_AVAILABLE)
|
||
|
CASE_CODE(RPC_S_INTERNAL_ERROR)
|
||
|
CASE_CODE(RPC_S_ZERO_DIVIDE)
|
||
|
CASE_CODE(RPC_S_ADDRESS_ERROR)
|
||
|
CASE_CODE(RPC_S_FP_DIV_ZERO)
|
||
|
CASE_CODE(RPC_S_FP_UNDERFLOW)
|
||
|
CASE_CODE(RPC_S_FP_OVERFLOW)
|
||
|
CASE_CODE(RPC_X_NO_MORE_ENTRIES)
|
||
|
CASE_CODE(RPC_X_SS_CHAR_TRANS_OPEN_FAIL)
|
||
|
CASE_CODE(RPC_X_SS_CHAR_TRANS_SHORT_FILE)
|
||
|
CASE_CODE(RPC_X_SS_IN_NULL_CONTEXT)
|
||
|
CASE_CODE(RPC_X_SS_CONTEXT_DAMAGED)
|
||
|
CASE_CODE(RPC_X_SS_HANDLES_MISMATCH)
|
||
|
CASE_CODE(RPC_X_SS_CANNOT_GET_CALL_HANDLE)
|
||
|
CASE_CODE(RPC_X_NULL_REF_POINTER)
|
||
|
CASE_CODE(RPC_X_ENUM_VALUE_OUT_OF_RANGE)
|
||
|
CASE_CODE(RPC_X_BYTE_COUNT_TOO_SMALL)
|
||
|
CASE_CODE(RPC_X_BAD_STUB_DATA)
|
||
|
CASE_CODE(ERROR_INVALID_USER_BUFFER)
|
||
|
CASE_CODE(ERROR_UNRECOGNIZED_MEDIA)
|
||
|
CASE_CODE(ERROR_NO_TRUST_LSA_SECRET)
|
||
|
CASE_CODE(ERROR_NO_TRUST_SAM_ACCOUNT)
|
||
|
CASE_CODE(ERROR_TRUSTED_DOMAIN_FAILURE)
|
||
|
CASE_CODE(ERROR_TRUSTED_RELATIONSHIP_FAILURE)
|
||
|
CASE_CODE(ERROR_TRUST_FAILURE)
|
||
|
CASE_CODE(RPC_S_CALL_IN_PROGRESS)
|
||
|
CASE_CODE(ERROR_NETLOGON_NOT_STARTED)
|
||
|
CASE_CODE(ERROR_ACCOUNT_EXPIRED)
|
||
|
CASE_CODE(ERROR_REDIRECTOR_HAS_OPEN_HANDLES)
|
||
|
CASE_CODE(ERROR_PRINTER_DRIVER_ALREADY_INSTALLED)
|
||
|
CASE_CODE(ERROR_UNKNOWN_PORT)
|
||
|
CASE_CODE(ERROR_UNKNOWN_PRINTER_DRIVER)
|
||
|
CASE_CODE(ERROR_UNKNOWN_PRINTPROCESSOR)
|
||
|
CASE_CODE(ERROR_INVALID_SEPARATOR_FILE)
|
||
|
CASE_CODE(ERROR_INVALID_PRIORITY)
|
||
|
CASE_CODE(ERROR_INVALID_PRINTER_NAME)
|
||
|
CASE_CODE(ERROR_PRINTER_ALREADY_EXISTS)
|
||
|
CASE_CODE(ERROR_INVALID_PRINTER_COMMAND)
|
||
|
CASE_CODE(ERROR_INVALID_DATATYPE)
|
||
|
CASE_CODE(ERROR_INVALID_ENVIRONMENT)
|
||
|
CASE_CODE(RPC_S_NO_MORE_BINDINGS)
|
||
|
CASE_CODE(ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT)
|
||
|
CASE_CODE(ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT)
|
||
|
CASE_CODE(ERROR_NOLOGON_SERVER_TRUST_ACCOUNT)
|
||
|
CASE_CODE(ERROR_DOMAIN_TRUST_INCONSISTENT)
|
||
|
CASE_CODE(ERROR_SERVER_HAS_OPEN_HANDLES)
|
||
|
CASE_CODE(ERROR_RESOURCE_DATA_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_RESOURCE_TYPE_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_RESOURCE_NAME_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_RESOURCE_LANG_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_NOT_ENOUGH_QUOTA)
|
||
|
CASE_CODE(RPC_S_NO_INTERFACES)
|
||
|
CASE_CODE(RPC_S_CALL_CANCELLED)
|
||
|
CASE_CODE(RPC_S_BINDING_INCOMPLETE)
|
||
|
CASE_CODE(RPC_S_COMM_FAILURE)
|
||
|
CASE_CODE(RPC_S_UNSUPPORTED_AUTHN_LEVEL)
|
||
|
CASE_CODE(RPC_S_NO_PRINC_NAME)
|
||
|
CASE_CODE(RPC_S_NOT_RPC_ERROR)
|
||
|
CASE_CODE(RPC_S_UUID_LOCAL_ONLY)
|
||
|
CASE_CODE(RPC_S_SEC_PKG_ERROR)
|
||
|
CASE_CODE(RPC_S_NOT_CANCELLED)
|
||
|
CASE_CODE(RPC_X_INVALID_ES_ACTION)
|
||
|
CASE_CODE(RPC_X_WRONG_ES_VERSION)
|
||
|
CASE_CODE(RPC_X_WRONG_STUB_VERSION)
|
||
|
CASE_CODE(RPC_X_INVALID_PIPE_OBJECT)
|
||
|
CASE_CODE(RPC_X_INVALID_PIPE_OPERATION)
|
||
|
CASE_CODE(RPC_X_WRONG_PIPE_VERSION)
|
||
|
CASE_CODE(RPC_S_GROUP_MEMBER_NOT_FOUND)
|
||
|
CASE_CODE(EPT_S_CANT_CREATE)
|
||
|
CASE_CODE(RPC_S_INVALID_OBJECT)
|
||
|
CASE_CODE(ERROR_INVALID_TIME)
|
||
|
CASE_CODE(ERROR_INVALID_FORM_NAME)
|
||
|
CASE_CODE(ERROR_INVALID_FORM_SIZE)
|
||
|
CASE_CODE(ERROR_ALREADY_WAITING)
|
||
|
CASE_CODE(ERROR_PRINTER_DELETED)
|
||
|
CASE_CODE(ERROR_INVALID_PRINTER_STATE)
|
||
|
CASE_CODE(ERROR_PASSWORD_MUST_CHANGE)
|
||
|
CASE_CODE(ERROR_DOMAIN_CONTROLLER_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_ACCOUNT_LOCKED_OUT)
|
||
|
CASE_CODE(OR_INVALID_OXID)
|
||
|
CASE_CODE(OR_INVALID_OID)
|
||
|
CASE_CODE(OR_INVALID_SET)
|
||
|
CASE_CODE(RPC_S_SEND_INCOMPLETE)
|
||
|
CASE_CODE(ERROR_NO_BROWSER_SERVERS_FOUND)
|
||
|
CASE_CODE(ERROR_INVALID_PIXEL_FORMAT)
|
||
|
CASE_CODE(ERROR_BAD_DRIVER)
|
||
|
CASE_CODE(ERROR_INVALID_WINDOW_STYLE)
|
||
|
CASE_CODE(ERROR_METAFILE_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_TRANSFORM_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_CLIPPING_NOT_SUPPORTED)
|
||
|
CASE_CODE(ERROR_UNKNOWN_PRINT_MONITOR)
|
||
|
CASE_CODE(ERROR_PRINTER_DRIVER_IN_USE)
|
||
|
CASE_CODE(ERROR_SPOOL_FILE_NOT_FOUND)
|
||
|
CASE_CODE(ERROR_SPL_NO_STARTDOC)
|
||
|
CASE_CODE(ERROR_SPL_NO_ADDJOB)
|
||
|
CASE_CODE(ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED)
|
||
|
CASE_CODE(ERROR_PRINT_MONITOR_ALREADY_INSTALLED)
|
||
|
CASE_CODE(ERROR_INVALID_PRINT_MONITOR)
|
||
|
CASE_CODE(ERROR_PRINT_MONITOR_IN_USE)
|
||
|
CASE_CODE(ERROR_PRINTER_HAS_JOBS_QUEUED)
|
||
|
CASE_CODE(ERROR_SUCCESS_REBOOT_REQUIRED)
|
||
|
CASE_CODE(ERROR_SUCCESS_RESTART_REQUIRED)
|
||
|
CASE_CODE(ERROR_WINS_INTERNAL)
|
||
|
CASE_CODE(ERROR_CAN_NOT_DEL_LOCAL_WINS)
|
||
|
CASE_CODE(ERROR_STATIC_INIT)
|
||
|
CASE_CODE(ERROR_INC_BACKUP)
|
||
|
CASE_CODE(ERROR_FULL_BACKUP)
|
||
|
CASE_CODE(ERROR_REC_NON_EXISTENT)
|
||
|
CASE_CODE(ERROR_RPL_NOT_ALLOWED)
|
||
|
|
||
|
default:
|
||
|
_tcscpy(szErrorName, _T(""));
|
||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr,
|
||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
|
||
|
szErrorDesc, sizeof(TCHAR)*_ERRORDESCLEN, NULL);
|
||
|
}
|
||
|
} // if FACILITY_WIN32
|
||
|
else if (HRESULT_FACILITY(hr) == FACILITY_CONTROL && HRESULT_CODE(hr) >= 600)
|
||
|
{
|
||
|
szErrorName[0] = _T('\0');
|
||
|
_tcscpy(szErrorDesc, _T(""));
|
||
|
}
|
||
|
else if (HRESULT_FACILITY(hr) == FACILITY_ITF && HRESULT_CODE(hr) >= 0x200)
|
||
|
{
|
||
|
szErrorName[0] = _T('\0');
|
||
|
_tcscpy(szErrorDesc, _T(""));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_tcscpy(szErrorName, _T("")); // Not FACILITY_WIN32 or FACILITY_ITF(code >= 0x200) or FACILTY_CONTROL(code >= 600)
|
||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr,
|
||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
|
||
|
szErrorDesc, sizeof(TCHAR)*_ERRORDESCLEN, NULL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_tcscpy(pszFacility,szFacility);
|
||
|
_tcscpy(pszErrorName,szErrorName);
|
||
|
_tcscpy(pszErrorDesc,szErrorDesc);
|
||
|
}
|
||
|
|
||
|
#pragma warning( default : 4245 )
|
||
|
|
||
|
inline void CConnectionManager::HandleConnMgrException(HRESULT hr)
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::HandleConnMgrException\n"));
|
||
|
TRACEARGn(hr);
|
||
|
|
||
|
AfxMessageBox(IDS_STRING_CONNMGR_DEAD);
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Marshalling Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// I support these only because we now need to use Property Pages in the
|
||
|
// snap-in. Since property pages run in their own thread and the snap-in
|
||
|
// architeture uses apartment threading model, ANY COM interface pointers
|
||
|
// to be used within the property page thread must be marshalled...fortunately
|
||
|
// I have only to marshal IConnectionManager.
|
||
|
|
||
|
HRESULT CConnectionManager::MarshalCnxMgr()
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::MarshalCnxMgr\n"));
|
||
|
|
||
|
HRESULT hr = S_OK;
|
||
|
|
||
|
// we are called from the snapin's main thread here in prep for marshalling
|
||
|
|
||
|
CMarshalledConnection* pNewConnection = new CMarshalledConnection;
|
||
|
hr = pNewConnection->Marshal(m_pIConnectionManager);
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::Marshal failed.\n"));
|
||
|
}
|
||
|
|
||
|
m_MarshalStack.AddHead(pNewConnection);
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT CConnectionManager::UnMarshalCnxMgr()
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::UnMarshalCnxMgr\n"));
|
||
|
|
||
|
HRESULT hr = S_OK;
|
||
|
|
||
|
// unmarshal the connection now that we are in the new property page thread
|
||
|
|
||
|
// v-marfin : bug 59643
|
||
|
// Check for empty list before proceeding.
|
||
|
if (m_MarshalStack.IsEmpty())
|
||
|
{
|
||
|
TRACE(_T("WARNING : Could not find a connection waiting on the stack!\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
CMarshalledConnection* pConnection = m_MarshalStack.RemoveTail();
|
||
|
ASSERT(pConnection);
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a connection waiting on the stack!\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
// now insert the marshalled connection into the map of thread ids to connections.
|
||
|
// first check if a connection has already been marshalled before inserting
|
||
|
// the connection into the map
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
CMarshalledConnection* pExistingConnection = NULL;
|
||
|
if( m_MarshalMap.Lookup(dwThreadID,pExistingConnection) )
|
||
|
{
|
||
|
ASSERT(pExistingConnection);
|
||
|
|
||
|
// delete the connection we were going to add, because it has already been
|
||
|
// marshalled for this thread id
|
||
|
delete pConnection;
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_MarshalMap.SetAt(dwThreadID,pConnection);
|
||
|
}
|
||
|
|
||
|
|
||
|
// unmarshal the connection now
|
||
|
hr = pConnection->UnMarshal();
|
||
|
if( !CHECKHRESULT(hr) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : CMarshalledConnection::UnMarshal failed.\n"));
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
void CConnectionManager::CleanUpMarshalCnxMgr()
|
||
|
{
|
||
|
TRACEX(_T("CConnectionManager::CleanUpMarshalCnxMgr\n"));
|
||
|
|
||
|
// we are called here by the dying thread of the property page which is about to be
|
||
|
// destroyed. We must clean up by removing the marshalled connection from the map
|
||
|
DWORD dwThreadID = GetCurrentThreadId();
|
||
|
CMarshalledConnection* pConnection = NULL;
|
||
|
|
||
|
m_MarshalMap.Lookup(dwThreadID,pConnection);
|
||
|
|
||
|
if( pConnection == NULL )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not find a connection for the calling thread!\n"));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if( ! m_MarshalMap.RemoveKey(dwThreadID) )
|
||
|
{
|
||
|
TRACE(_T("FAILED : Could not remove the key from the marshal map.\n"));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
delete pConnection;
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Implementation Operations
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|