我正在开发一些与IDL文件的COM接口。一些接口方法返回HRESULT,但是我检查了MSDN上的MIDL语言参考,没有HRESULT的线索。那么,我在哪里可以找到这种数据类型的官方定义呢?
更新
多亏了Shog9,我在wtypes.idl找到了它。我把它贴在这里供别人看:
...
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编译器将报告一个错误:
"error MIDL2269: procedures in an object interface must return an HRESULT" 有点可笑..。
发布于 2010-08-10 15:55:03
任何实用的.idl文件都应该从
import "oaidl.idl";
import "ocidl.idl";宣布了基本类型。比如HRESULT和变体。等等。
发布于 2010-08-10 16:00:33
它实际上只是DWORD的别名(它是未签名long的别名)。它是为wtypes.idl中的MIDL定义的,正如汉斯指出的是通过标准导入机制引入的。
HRESULT的目的是以一致可识别的方式表示返回代码--成功和失败可以被识别,而不管编码在值中的源信息或其他信息如何,当与标准接口相结合时,某些系统定义的值被赋予了特殊的意义。见MSDN提供详细信息。
https://stackoverflow.com/questions/3450821
复制相似问题