HRESULT

✍ dations ◷ 2025-10-06 12:37:11 #数据类型

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

相关

  • 哈里·霍普金斯哈里·劳埃德·霍普金斯(Harry Lloyd Hopkins,1890年8月17日 - 1946年1月29日),美国政治家,美国民主党人,曾任美国商务部长(1938年-1940年)。霍普金斯是美国总统富兰克林·D·罗斯福
  • 美丽人生《美丽人生》(意大利语:La vita è bella,意为“人生是美好的”),1997年电影,由导演罗伯托·贝尼尼自编自演,荣获奥斯卡最佳男主角、欧洲电影奖最佳影片及多个国际大奖。电影讲述意
  • 无舵雪橇无舵雪橇(英文:Luge)又称之为“平底雪橇”、“仰式雪橇”、“运动雪橇”以及“短雪橇”,它是一种单人或双人的冬季运动,其雪橇是由木制成。现时,冬季奥运中设有男子单人、男子双人
  • 地球相似指数地球相似指数(Earth Similarity Index,缩写作ESI)是一个标定其他行星和地球相似程度的指数,范围在0和1之间,地球自身的相似指数以1表示。地球相似指数是针对行星而设计,但也可以用
  • 威廉·萨默塞特·毛姆威廉·萨默塞特·毛姆, CH(英语:William Somerset Maugham,1874年1月25日-1965年12月16日),英国现代小说家、剧作家。他是那个时代最受欢迎的作家之一,据说是20世纪30年代收入最高
  • R-7弹道导弹火箭R-7(俄语:Р-7 "Семёрка",意为R-7“洲际弹道导弹第7号”,北约代号SS-6“警棍”,因导弹长相奇特,所以苏联战略火箭军又将其昵称为“芭蕾舞娘”。)而R-7是世界上第一枚真正意
  • 胎生 (佛教)胎生(梵语:jarāyu-ja),佛教术语,指从母胎出生,又作腹生,为四生(四种众生出生的方式)之一,胎生,意为有情先为胎藏缠裹、后破胎藏而出生,不同于卵生(从卵中孵化生出)、湿生(在湿润处由湿气生
  • 6.5mm Creedmoor大号步枪底火测试枪管长度:28 英寸 来源:Hornady, SAAMI, C.I.P.6.5毫米口径克里德莫尔弹(英语:6.5mm Creedmoor cartridge),简称6.5mm CM或6.5 CM,是总部位于美国内布拉斯加州格兰
  • 朱月婷朱月婷(印尼语:Cut Nyak Dhien,又译朱亚典;1848年-1908年11月6日),亚齐游击队领袖,曾于丈夫特库·乌玛尔(英语:Teuku Umar)死后带领游击队参与亚齐战争,抵抗荷军25年。印尼政府在1964年5
  • 弗兰基谢克·莫拉维克弗兰基谢克·莫拉维克(František Moravec,1939年-)是捷克寄生虫学家,专攻线虫病。莫拉维克于1939年1月1日在捷克斯洛伐克共和国奥洛穆茨州的大比斯特日采出生。他在奥洛穆茨接受