2013-10-22 30 views
1

我有一些代码调用_com_object的ErroerMessage()函数在try,catch中返回错误代码。Windows ErrorMessage返回代码而不是消息

catch(const _com_error& error) 
{ 
    myError = _T("Failed, Reason:")+error.ErrorMessage(); 
} 

而不是获取实际的Windows字符串解释错误我得到错误代码返回。在这种情况下0xC00E001E

我已经包含mqoa.dll允许访问Windows DLL的MSMQ

伊夫使用断点,并通过加强与发现返回的wCode始终为0

任何帮助将不胜感激。

由于

+0

什么是'myError'的类型?它看起来像添加了两个指针而不是连接字符串。 –

+0

CString&csError是myError,我收到错误信息说失败的原因:0xC00E001E和它的错误代码,但我认为可能有一个问题得到代码的定义 – PowPowPowell

回答

1

_T("Failed, Reason:")是一个const指针TCHARErrorMessage()也返回一个指向TCHAR的常量指针。 +运算符最终执行指针算术而不是连接字符串。

如果myErrorCString,你可以使用它的+=操作:

myError = _T("Failed, Reason: "); 
myError += error.ErrorMessage(); 

或其Format()方法:

myError.Format(_T("Failed, Reason: %s"), error.ErrorMessage()); 
+0

试图使用这两种方法,我不断得到同样的问题,我得到的错误代码,但不是字符串版本。 失败原因:0xC00E001E是输出 – PowPowPowell

+0

@user,它*可能是因为FormatMessage()不知道如何格式化MSMQ错误。它是否像预期的那样使用标准的COM错误(例如'E_FAIL')? –

+0

我认为它确实如此,因为它返回未指定的错误 – PowPowPowell

相关问题