0x800a1421 HRESULT是什么意思?

What is the meaning of 0x800a1421 HRESULT?

本文关键字:意思 是什么 HRESULT 0x800a1421      更新时间:2023-10-16

我有一个用c++编写的dll。它的主要目的是通过OLE调用Word上的方法。我尝试调用一个方法" savea ":

HRESULT hr;
szFunction = OLESTR("SaveAs");
    hr = doc->GetIDsOfNames(IID_NULL, &szFunction, 1, 
            LOCALE_USER_DEFAULT, 
            &dispid_Cap);
    hr = doc->Invoke(dispid_Cap, IID_NULL, 
            LOCALE_USER_DEFAULT, DISPATCH_METHOD, 
            &dpCap, NULL, NULL, NULL);

它失败了,我不知道为什么。hr的值为-2146823135。我把它转换成十六进制:

sprintf(hex_buff, "%x", (unsigned int)hr);

0x800a1421

我试图找出这段代码对这个程序的含义:http://www.microsoft.com/en-us/download/details.aspx?id=985但结果是:

as an HRESULT: Severity: FAILURE (1), Facility: 0xa, Code 0x1421
NOT FOUND: 800a1421

这是什么意思?我应该如何找出我的方法失败的原因?

无法诊断错误的一个重要原因是走了太多捷径。您正在为IDispatch::Invoke()的pExcepInfo参数传递NULL。这对于IDispatch来说是没问题的,它基本上意味着"不用麻烦告诉我你对异常的了解,我会自己从错误代码中整理出来"您将错过诸如错误的文本描述和记录它的帮助文件之类的好东西。如果可用。当你问这个问题时,显然你不想走这种捷径。

无论如何,您仍然可以从异常代码中逆向工程问题。设施0x0a是为OLE自动化应用程序保留的,错误代码是特定于应用程序的。它在"Word错误5153"中变为0x1421。把它放在谷歌查询中,第二个点击会给你一个链接,让你找到一个知道错误5153是什么意思的人。

您正在尝试覆盖别人打开的文件。很常见的不幸。

修复你的代码,你会想要显示错误描述给一个人,这样他们就可以照顾它。

关于0x800a1421的信息来自'HR Plus'工具:

  • 错误类型:OLE HRESULT
  • 错误Facility: FACILITY_CONTROL 0x0000000A
  • 严重性:SEVERITY_ERROR 0x00000001
  • 代码:0x00001421

0x00001421从'错误查找'工具:控件ID没有找到