HRESULT

✍ dations ◷ 2025-06-29 13:53:34 #数据类型

在计算机编程领域中,HRESULT是一种在 Windows 操作系统中使用的数据类型,并且曾更早在 IBM/Microsoft OS/2 操作系统中使用。用来表示错误和警告的情况。

HRESULT的最初目的是为了防止OS/2操作系统的不同子系统中的错误代码之间的冲突,正式地规定第三方和微软内部使用的错误代码范围。它是基于数字的错误代码,HRESULT中的各个位编码包含有关错误代码的性质及其来源的信息。

HRESULT 错误码在COM编程领域很常见,它们构成了标准化的COM错误处理约定的基础。

HRESULT值有32位,分为三个字段:严重性代码、设施代码和错误代码。严重性代码指示返回值是表示信息、警告还是错误。设施代码标识负责错误的系统区域。错误代码是分配用于表示异常的唯一编号。 每个异常映射到不同的HRESULT。

HRESULT的结构如下:

ITF设施代码随后被再次用作COM组件可以定义自己的组件特定错误代码的范围。

HRESULT是一个不透明的结果句柄,定义为从函数成功返回为0或正值,对失败为负值。一般的, 成功的函数返回 S_OK HRESULT 值 (这个HRESULT等于0)。但在极少数情况下,函数可能返回成功代码与附加信息,例如S_FALSE=0x01

当显示HRESULT时,它们通常呈现为 无符号十六进制值, 通常用 0x 做前缀。在这种情况下,可以通过以十六进制数字8或更高开始来标识指示故障的数字。

HRESULT最初在IBM/Microsoft OS/2操作系统中作为一般目的的错误返回代码,并随后在Windows NT中使用。 Microsoft Visual Basic 的大幅度增加HRESULT错误报告机制,通过关联的一个 IErrorInfo 对象错误代码,通过存储指向一个IErrorInfoCOM对象的线程本地存储。 IErrorInfo机制允许程序将各种信息与特定的HRESULT错误相关联:引发错误的对象的类,引发错误的对象的接口,错误文本; 以及帮助文件中帮助主题的链接。 此外,HRESULT错误的接收器可以根据需要获得错误消息的本地化文本。

随后,HRESULT和相关联的 IErrorInfo 机制用作COM中的默认错误报告机制。

在Windows中支持IErrorInfo机制是非常不一致的。 较旧的Windows API往往不支持它,返回HRESULTS没有任何 IErrorInfo 数据。 更多的现代Windows COM子系统通常会在IErrorInfo对象的消息描述中提供大量的错误信息。 IErrorInfo错误机制的更高级功能——帮助链接和按需定位,很少使用。

在.NET Framework中,从本机代码转换为托管代码时,HRESULT / IErrorInfo错误代码将转换为CLR异常; 当从托管转换为本机COM代码时,CLR异常将转换为HRESULT / IErrorInfo错误代码。

winerror.h文件定义了一些通用的HRESULT值。 有些HRESULT值被硬编码在给定子系统的关联头文件(.h文件)中。 这些值也使用Microsoft Windows平台SDK或DDK在相应的标题(.h)文件中定义。

要检查返回HRESULT的调用是否成功,请确保S字段为0(即数字为非负数)或使用FAILED()。要获取HRESULT的代码部分,请使用HRESULT_CODE()。您还可以使用名为ERR.EXE的工具获取值,并将其转换为相应的错误字符串。 另一个名为ERRLOOK.EXE的工具也可用于显示与给定HRESULT值相关联的错误字符串。 可以在Visual Studio命令提示符下运行ERRLOOK.EXE。

Windows 原生的 SetErrorInfoGetErrorInfo API 用于将 HRESULT 返回码与对应的IErrorInfo对象相关联。

FormatMessage API函数可用于将一些非IErrorInfo HRESULT转换为用户可读的字符串。

相关

  • 硫嘌呤类硫嘌呤(thiopurine)是嘌呤类抗代谢物,常用来治疗急性淋巴性白血病及自体免疫性疾病(如克隆氏症、类风湿性关节炎),其在体内需经代谢转化成具有生物活性的巯基鸟嘌呤核苷酸,发挥杀死
  • 亚马逊森林亚马孙雨林(葡萄牙语:Amazônia、西班牙语:Amazonia),又称亚马孙河雨林,位于南美洲亚马孙盆地的热带雨林,占地550万平方公里,使这片雨林生机盎然的就是亚马孙河。雨林横越了8个国家:
  • 刘易斯·芒福德刘易斯·芒福德(英语:Lewis Mumford,1895年10月19日-1990年1月26日),美国历史学家,科学哲学家,著名文学评论家。以其对城市和城市建筑的研究闻名,是个兴趣广泛的作家。芒福德深受苏格
  • 群体智能群体智能源于对以蚂蚁、蜜蜂等为代表的社会性昆虫的群体行为的研究。最早被用在细胞机器人系统的描述中。它的控制是分布式的,不存在中心控制。群体具有自组织性。
  • 西伯利亚语支西伯利亚语支又名东北突厥语支,是突厥语族六个主要语支的其中一个。以下表格列出本语支的组成语言,乃基于Lars Johanson在1998年的出版作出的分类:
  • 奥拉夫王子山脉奥拉夫王子山脉(英语:Prince Olav Mountains)是南极洲的山脉,位于杜费克海岸,属于毛德王后山脉的一部分,在1911年被挪威探险家罗尔德·阿蒙森发现,现时由南极条约体系管理。坐标:84
  • 圣·奥古斯丁教堂 (马尼拉)圣奥斯定堂、圣奥古斯丁教堂(英语:San Agustin Church)位于马尼拉王城区的古城墙内,是1607年落成的罗马天主教奥斯定会教堂,教堂建筑本身是菲律宾最古老的建筑物。1976年,圣奥斯定
  • 2008年8月逝世人物列表2008年逝世人物列表:1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月以下是2008年8月逝世的知名人士列表:
  • 直接逆转式柴油机直接逆转式柴油机(英语:Direct Reversing Diesel Engine)是一种曲轴可以转向的柴油机。一般常见于大型低转速的船用引擎,低速特性可让螺旋桨有更高的推进效率,无需经过减速齿轮装
  • 祁东县第一中学祁东县第一中学(英语:No.1 Meddle School Qidong County)位于湖南省衡阳市祁东县洪桥镇学前路44号,为公立学校,湖南省示范性中学之一。1941年,“湖南私立达孝中学”创办,它是祁东县