【发布时间】:2011-03-27 22:06:35
【问题描述】:
我正在开发一些带有 IDL 文件的 COM 接口。一些接口方法返回HRESULT,但是我检查了MIDL language reference on MSDN,没有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"
有点可笑……
【问题讨论】: