HRESULT

✍ dations ◷ 2025-11-09 06:33:42 #数据类型

在计算机编程领域中,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转换为用户可读的字符串。

相关

  • 角蛋白角蛋白是纤维结构蛋白家族之一。 它是构成头发,角,爪,蹄和人体皮肤外层的关键结构材料。 角蛋白也是保护上皮组织细胞免受损伤或压力的蛋白质。 角蛋白极不溶于水和有机溶剂。
  • 大卫一世马尔科姆之子大卫(中世纪盖尔语:Dabíd mac Maíl Choluim;现代盖尔语:Daibhidh I mac Chaluim;,1084年-1153年5月24日),12世纪的坎布里亚亲王(1113年–1124年在位)、北安普顿和亨廷顿
  • 芽孢乳酸菌凝结芽孢杆菌(学名:Bacillus coagulans),又称芽孢乳酸菌(Lactobacillus sporogene),是一种可以产生乳酸的革兰氏阳性菌。此种细菌为杆菌,大小约为0.9*3-5微米,具有过氧化氢酶,营养型态
  • 杀人鲸虎鲸(学名:Orcinus orca, 英文:Killer whale 或 Orca)为齿鲸小目海豚科下体型最大的物种,又称杀手鲸、杀人鲸、逆戟鲸。地球上的所有大洋中都有虎鲸生活,且为全球性分布,除了在波罗
  • 毕苏语毕苏语又称米苏语、米毕苏语是居住于中国、泰国、老挝、缅甸四国边界地区的毕苏人的本民族语言。毕苏人分布于以上四国境内,据1998年的统计,人口接近一万人,其中约五千余人居住
  • 泰内雷沙漠泰内雷(Ténéré、或译“特内雷”)是位于非洲撒哈拉南端;介于尼日尔共和国东北方与乍得共和国西方之间的沙漠,所覆盖的面积在40万平方公里以上。所界定的边境范围是北起阿哈加
  • 齐康齐康(1931年10月26日-)原名齐毓康,原籍浙江天台,生于江苏南京,建筑学家、建筑教育家,东南大学教授,东南大学建筑设计研究院总顾问,中国科学院院士,法国建筑科学院外籍院士,国家建筑设计
  • 太阳系探索年表这是一个按航天器发射日期排列的太阳系探索年表。其中包括:但不包括:下表的日期为发射日期,但可能需一段时间后才能达到目标。如旅行者2号,发射于1977年8月20日,但于1989年才造访
  • 南桥南桥(英语:Southbridge)是基于个人电脑主板芯片组架构中的其中一枚芯片。南桥设计用来处理低速信号,通过北桥与中央处理器联系。各芯片组厂商的南桥名称都有所不同,例如英特尔称
  • 龟鹿二仙胶龟鹿二仙胶又称龟鹿二仙膏,是一种以龟板和鹿角作为主要原料的中药制剂,作用为强健筋骨,补气、生精髓的药方,并具有补充骨骼“钙”不足,防止骨质疏松症。龟板、鹿角、枸杞、人参。