首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HRESULT如何出现在MIDL文件中?

HRESULT如何出现在MIDL文件中?
EN

Stack Overflow用户
提问于 2010-08-10 15:48:49
回答 2查看 1.1K关注 0票数 4

我正在开发一些与IDL文件的COM接口。一些接口方法返回HRESULT,但是我检查了MSDN上的MIDL语言参考,没有HRESULT的线索。那么,我在哪里可以找到这种数据类型的官方定义呢?

更新

多亏了Shog9,我在wtypes.idl找到了它。我把它贴在这里供别人看:

代码语言:javascript
复制
    ...
    cpp_quote("#ifndef _HRESULT_DEFINED")
    cpp_quote("#define _HRESULT_DEFINED")
    #if defined(_STRICT_HRESULT)
    typedef struct _HRESULT_STRUCT {
            DWORD Data1;
    } HRESULT_STRUCT, *PHRESULT_STRUCT;
    typedef PHRESULT_STRUCT HRESULT;
    #else // defined(_STRICT_HRESULT)
    cpp_quote("#ifdef __midl")
    typedef LONG HRESULT;
    ...

但是,当我在IDL文件中使用DWORD或LONG显式时,MIDL编译器将报告一个错误:

代码语言:javascript
复制
"error MIDL2269: procedures in an object interface must return an HRESULT" 

有点可笑..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 15:55:03

任何实用的.idl文件都应该从

代码语言:javascript
复制
import "oaidl.idl";
import "ocidl.idl";

宣布了基本类型。比如HRESULT和变体。等等。

票数 4
EN

Stack Overflow用户

发布于 2010-08-10 16:00:33

它实际上只是DWORD的别名(它是未签名long的别名)。它是为wtypes.idl中的MIDL定义的,正如汉斯指出的是通过标准导入机制引入的。

HRESULT的目的是以一致可识别的方式表示返回代码--成功和失败可以被识别,而不管编码在值中的源信息或其他信息如何,当与标准接口相结合时,某些系统定义的值被赋予了特殊的意义。见MSDN提供详细信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3450821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档