本文整理汇总了C++中SetErrorInfo函数的典型用法代码示例。如果您正苦于以下问题:C++ SetErrorInfo函数的具体用法?C++ SetErrorInfo怎么用?C++ SetErrorInfo使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SetErrorInfo函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetErrorInfo
STDMETHODIMP CBHttpRequest::Read(long nSize, VARIANT *retVal)
{
DWORD dwTempSize = m_dwDataAvailable;
if(!m_eventComplete.Wait(0))
return SetErrorInfo(L"Response is not yet available.");
if(m_nReadyState < 3)
return SetErrorInfo(L"Response is not yet available.");
if(nSize <= 0 || nSize > (long)(dwTempSize - m_dwReadPos))
nSize = dwTempSize - m_dwReadPos;
CBVarPtr varPtr;
varPtr.Create(nSize);
if(nSize)
{
CopyMemory(varPtr.m_pData, m_aBuffer + m_dwReadPos, nSize);
m_dwReadPos += nSize;
if(m_dwReadPos == m_dwDataAvailable)
{
m_dwDataAvailable = 0;
m_dwReadPos = 0;
ReadBuffer();
}
}
return varPtr.GetVariant(retVal);
}
示例2: OpenConnection
//重新连接
bool __cdecl CDataBase::TryConnectAgain(bool bFocusConnect, CComError * pComError)
{
try
{
//判断重连
bool bReConnect = bFocusConnect;
if (bReConnect == false)
{
DWORD dwNowTime = (DWORD)time(NULL);
if ((m_dwConnectErrorTime + m_dwResumeConnectTime) > dwNowTime) bReConnect = true;
}
if ((bReConnect == false) && (m_dwConnectCount > m_dwResumeConnectCount)) bReConnect = true;
//设置变量
m_dwConnectCount++;
m_dwConnectErrorTime = (DWORD)time(NULL);
if (bReConnect == false)
{
if (pComError != NULL) SetErrorInfo(SQLException_Connect, GetComErrorDescribe(*pComError));
return false;
}
//重新连接
OpenConnection();
return true;
}
catch (IDataBaseException * pIDataBaseException)
{
//重新连接错误
if (pComError != NULL) SetErrorInfo(SQLException_Connect, GetComErrorDescribe(*pComError));
else throw pIDataBaseException;
}
return false;
}
示例3: PyCom_SetCOMErrorFromExcepInfo
// Given an EXCEPINFO, register the error information with the
// IErrorInfo interface.
BOOL PyCom_SetCOMErrorFromExcepInfo(const EXCEPINFO *pexcepinfo, REFIID riid)
{
ICreateErrorInfo *pICEI;
HRESULT hr = CreateErrorInfo(&pICEI);
if ( SUCCEEDED(hr) )
{
pICEI->SetGUID(riid);
pICEI->SetHelpContext(pexcepinfo->dwHelpContext);
if ( pexcepinfo->bstrDescription )
pICEI->SetDescription(pexcepinfo->bstrDescription);
if ( pexcepinfo->bstrHelpFile )
pICEI->SetHelpFile(pexcepinfo->bstrHelpFile);
if ( pexcepinfo->bstrSource )
pICEI->SetSource(pexcepinfo->bstrSource);
IErrorInfo *pIEI;
Py_BEGIN_ALLOW_THREADS
hr = pICEI->QueryInterface(IID_IErrorInfo, (LPVOID*) &pIEI);
Py_END_ALLOW_THREADS
if ( SUCCEEDED(hr) )
{
SetErrorInfo(0, pIEI);
pIEI->Release();
}
pICEI->Release();
}
return SUCCEEDED(hr);
}
示例4: ASSERT
//执行语句
VOID __cdecl CDataBase::ExecuteProcess(LPCTSTR pszSPName, bool bRecordset)
{
ASSERT(pszSPName != NULL);
try
{
//关闭记录集
CloseRecordset();
m_DBCommand->CommandText = pszSPName;
//执行命令
if (bRecordset == true)
{
m_DBRecordset->PutRefSource(m_DBCommand);
m_DBRecordset->CursorLocation = adUseClient;
EfficacyResult(m_DBRecordset->Open((IDispatch *)m_DBCommand, vtMissing, adOpenForwardOnly, adLockReadOnly, adOptionUnspecified));
}
else
{
m_DBConnection->CursorLocation = adUseClient;
EfficacyResult(m_DBCommand->Execute(NULL, NULL, adExecuteNoRecords));
}
}
catch (CComError & ComError)
{
if (IsConnectError() == true) TryConnectAgain(false, &ComError);
else SetErrorInfo(SQLException_Syntax, GetComErrorDescribe(ComError));
}
}
示例5: Error
/**
* Sets the COM error from a result code and text message. This is the base
* implementation for subsequent string based overrides
* @param hResult the COM error code to be used
* @param message the message to put in the error
* @return the error code passed in via hResult
*/
static HRESULT Error(HRESULT hResult, const CComBSTR & message)
{
CComPtr<ICreateErrorInfo> pCreateError;
CComPtr<IErrorInfo> pError;
HRESULT result = CreateErrorInfo(&pCreateError);
if(FAILED(result))
return E_NOTIMPL;
result = pCreateError->QueryInterface(&pError);
if(FAILED(result))
return E_NOTIMPL;
result = pCreateError->SetDescription(message);
if(FAILED(result))
return E_NOTIMPL;
result = pCreateError->SetGUID(IID_IDispatch);
if(FAILED(result))
return E_NOTIMPL;
CComBSTR source(L"@mozilla.XPCDispatchTearOff");
result = pCreateError->SetSource(source);
if(FAILED(result))
return E_NOTIMPL;
result = SetErrorInfo(0, pError);
if(FAILED(result))
return E_NOTIMPL;
return hResult;
}
示例6: IRowsetInfo_GetProperties_Proxy
HRESULT CALLBACK IRowsetInfo_GetProperties_Proxy(IRowsetInfo* This, const ULONG cPropertyIDSets, const DBPROPIDSET rgPropertyIDSets[],
ULONG *pcPropertySets, DBPROPSET **prgPropertySets)
{
HRESULT hr;
IErrorInfo *error;
ULONG i;
TRACE("(%p)->(%d, %p, %p, %p)\n", This, cPropertyIDSets, rgPropertyIDSets, pcPropertySets, prgPropertySets);
for(i = 0; i < cPropertyIDSets; i++)
{
int j;
TRACE("%d: %s %d props\n", i, debugstr_guid(&rgPropertyIDSets[i].guidPropertySet), rgPropertyIDSets[i].cPropertyIDs);
for(j = 0; j < rgPropertyIDSets[i].cPropertyIDs; j++)
TRACE("\t%d: prop id %d\n", j, rgPropertyIDSets[i].rgPropertyIDs[j]);
}
hr = IRowsetInfo_RemoteGetProperties_Proxy(This, cPropertyIDSets, rgPropertyIDSets, pcPropertySets, prgPropertySets, &error);
if(error)
{
SetErrorInfo(0, error);
IErrorInfo_Release(error);
}
return hr;
}
示例7: IAccessor_CreateAccessor_Proxy
HRESULT CALLBACK IAccessor_CreateAccessor_Proxy(IAccessor* This, DBACCESSORFLAGS dwAccessorFlags, DBCOUNTITEM cBindings,
const DBBINDING rgBindings[], DBLENGTH cbRowSize, HACCESSOR *phAccessor,
DBBINDSTATUS rgStatus[])
{
HRESULT hr;
IErrorInfo *error;
DBCOUNTITEM i;
TRACE("(%p)->(%08x, %d, %p, %d, %p, %p)\n", This, dwAccessorFlags, cBindings, rgBindings,
cbRowSize, phAccessor, rgStatus);
for(i = 0; i < cBindings; i++)
{
TRACE("%d: ord %d val off %d len off %d stat off %d part %04x mem_owner %d max_len %d type %04x\n",
i, rgBindings[i].iOrdinal, rgBindings[i].obValue, rgBindings[i].obLength, rgBindings[i].obStatus,
rgBindings[i].dwPart, rgBindings[i].dwMemOwner, rgBindings[i].cbMaxLen, rgBindings[i].wType);
}
hr = IAccessor_RemoteCreateAccessor_Proxy(This, dwAccessorFlags, cBindings, (DBBINDING *)rgBindings,
cbRowSize, phAccessor, rgStatus, &error);
if(error)
{
SetErrorInfo(0, error);
IErrorInfo_Release(error);
}
TRACE("returning %08x accessor %lx\n", hr, *phAccessor);
return hr;
}
示例8: someText
STDMETHODIMP nsXPCDispTestMethods::CreateError()
{
CComBSTR someText(L"CreateError Test");
ICreateErrorInfo * pCreateError;
IErrorInfo * pError;
HRESULT result = CreateErrorInfo(&pCreateError);
if (FAILED(result))
return E_NOTIMPL;
result = pCreateError->QueryInterface(&pError);
if (FAILED(result))
return E_NOTIMPL;
result = pCreateError->SetDescription(someText);
if (FAILED(result))
return E_NOTIMPL;
result = pCreateError->SetGUID(IID_nsIXPCDispTestMethods);
if (FAILED(result))
return E_NOTIMPL;
CComBSTR source(L"XPCIDispatchTest.nsXPCDispTestMethods.1");
result = pCreateError->SetSource(source);
if (FAILED(result))
return E_NOTIMPL;
result = SetErrorInfo(0, pError);
if (FAILED(result))
return E_NOTIMPL;
pError->Release();
pCreateError->Release();
return E_FAIL;
}
示例9: ISessionProperties_SetProperties_Proxy
HRESULT CALLBACK ISessionProperties_SetProperties_Proxy(ISessionProperties* This, ULONG cPropertySets, DBPROPSET rgPropertySets[])
{
ULONG prop_set, prop, total_props = 0;
HRESULT hr;
IErrorInfo *error;
DBPROPSTATUS *status;
TRACE("(%p, %d, %p)\n", This, cPropertySets, rgPropertySets);
for(prop_set = 0; prop_set < cPropertySets; prop_set++)
total_props += rgPropertySets[prop_set].cProperties;
if(total_props == 0) return S_OK;
status = CoTaskMemAlloc(total_props * sizeof(*status));
if(!status) return E_OUTOFMEMORY;
hr = ISessionProperties_RemoteSetProperties_Proxy(This, cPropertySets, rgPropertySets,
total_props, status, &error);
if(error)
{
SetErrorInfo(0, error);
IErrorInfo_Release(error);
}
total_props = 0;
for(prop_set = 0; prop_set < cPropertySets; prop_set++)
for(prop = 0; prop < rgPropertySets[prop_set].cProperties; prop++)
rgPropertySets[prop_set].rgProperties[prop].dwStatus = status[total_props++];
CoTaskMemFree(status);
return hr;
}
示例10: get_HashSize
STDMETHODIMP CBHash::get_HashSize(short *pVal)
{
if(m_iAlgo < 0)return SetErrorInfo(s_strAlgoError);
*pVal = s_HashAlgos[m_iAlgo].Size;
return S_OK;
}
示例11: switch
//获取参数
bool __cdecl CDataBase::GetFieldValue(LPCTSTR lpFieldName, INT & nValue)
{
try
{
nValue=0;
_variant_t vtFld = m_DBRecordset->Fields->GetItem(lpFieldName)->Value;
switch(vtFld.vt)
{
case VT_BOOL:
{
nValue = vtFld.boolVal;
break;
}
case VT_I2:
case VT_UI1:
{
nValue = vtFld.iVal;
break;
}
case VT_NULL:
case VT_EMPTY:
{
nValue = 0;
break;
}
default: nValue = vtFld.iVal;
}
return true;
}
catch (CComError & ComError) { SetErrorInfo(ErrorType_Other,GetComErrorDescribe(ComError)); }
return false;
}
示例12: switch
//获取参数
bool __cdecl CDataBase::GetFieldValue(LPCTSTR lpFieldName, bool & bValue)
{
try
{
_variant_t vtFld = m_DBRecordset->Fields->GetItem(lpFieldName)->Value;
switch (vtFld.vt)
{
case VT_BOOL:
{
bValue = (vtFld.boolVal == 0) ? false : true;
break;
}
case VT_EMPTY:
case VT_NULL:
{
bValue = false;
break;
}
default:
return false;
}
return true;
}
catch (CComError & ComError)
{
SetErrorInfo(SQLException_Syntax, GetComErrorDescribe(ComError));
}
return false;
}
示例13: CloseRecordset
//执行命令
bool __cdecl CDataBase::ExecuteCommand(bool bRecordset)
{
try
{
//关闭记录集
CloseRecordset();
//执行命令
if (bRecordset==true)
{
m_DBRecordset->PutRefSource(m_DBCommand);
m_DBRecordset->CursorLocation=adUseClient;
EfficacyResult(m_DBRecordset->Open((IDispatch *)m_DBCommand,vtMissing,adOpenForwardOnly,adLockReadOnly,adOptionUnspecified));
}
else
{
m_DBConnection->CursorLocation=adUseClient;
EfficacyResult(m_DBCommand->Execute(NULL,NULL,adExecuteNoRecords));
}
return true;
}
catch (CComError & ComError)
{
if (IsConnectError()==true) TryConnectAgain(false,&ComError);
else SetErrorInfo(ErrorType_Other,GetComErrorDescribe(ComError));
}
return false;
}
示例14: MakeHRESULT
//
//
// makes an HRESULT with a code based on the DOM error code
//
HRESULT MakeHRESULT(DOMException& ex)
{
ICreateErrorInfo* pCErr = NULL;
HRESULT sc = CreateErrorInfo(&pCErr);
if(SUCCEEDED(sc)) {
const XMLCh* msg = ex.msg;
if(msg == NULL)
{
if(ex.code >= DOMException::INDEX_SIZE_ERR &&
ex.code <= DOMException::VALIDATION_ERR)
{
sc = pCErr->SetDescription(Msgs[ex.code]);
}
else
{
sc = pCErr->SetDescription(Msgs[0]);
}
}
else
{
sc = pCErr->SetDescription(SysAllocString(ex.msg));
}
IErrorInfo* pErr = NULL;
sc = pCErr->QueryInterface(IID_IErrorInfo,(void**) &pErr);
if(SUCCEEDED(sc))
{
sc = SetErrorInfo(0,pErr);
pErr->Release();
}
pCErr->Release();
}
return 0x80040600 + ex.code;
}
示例15: CreateComErrorInfo
// The CreateComErrorInfo function uses CreateErrorInfo to create error
// object, which is then filled with the error information and passed to
// the acceptor by a call to SetErrorInfo.
void CreateComErrorInfo(const char* description, const char* source,
const char* helpFile, UInt32 helpContext)
{
ICreateErrorInfo* createErrInfo;
IErrorInfo* errInfo;
std::basic_string<wchar_t> buf;
if (CreateErrorInfo(&createErrInfo) == S_OK)
{
createErrInfo->SetGUID(IID_IErrorInfo);
if (description != NULL)
{
buf = WideStringFromMultiByteString(description);
createErrInfo->SetDescription(const_cast<wchar_t*>(buf.c_str()));
}
if (source != NULL)
{
buf = WideStringFromMultiByteString(source);
createErrInfo->SetSource(const_cast<wchar_t*>(buf.c_str()));
}
if (helpFile != NULL)
{
buf = WideStringFromMultiByteString(helpFile);
createErrInfo->SetHelpFile(const_cast<wchar_t*>(buf.c_str()));
}
createErrInfo->SetHelpContext(helpContext);
if (createErrInfo->QueryInterface(IID_IErrorInfo, (void**)(&errInfo)) == S_OK)
{
SetErrorInfo(0, errInfo);
errInfo->Release();
}
createErrInfo->Release();
}
}