C# HRESULT如何显示在MIDL文件中?
我正在用IDL文件开发一些COM接口。一些接口方法返回HRESULT,但我已经检查了,没有HRESULT的线索。那么我在哪里可以找到这种数据类型的官方定义呢 更新 多亏了Shog9,我在wtypes.idl中找到了它。我将其粘贴到此处以供他人查看:C# HRESULT如何显示在MIDL文件中?,c#,c++,com,interop,C#,C++,Com,Interop,我正在用IDL文件开发一些COM接口。一些接口方法返回HRESULT,但我已经检查了,没有HRESULT的线索。那么我在哪里可以找到这种数据类型的官方定义呢 更新 多亏了Shog9,我在wtypes.idl中找到了它。我将其粘贴到此处以供他人查看: ... cpp_quote("#ifndef _HRESULT_DEFINED") cpp_quote("#define _HRESULT_DEFINED") #if defined(_STRICT_HRESULT)
...
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"
有点可笑…任何实用的.idl文件都应该以
import "oaidl.idl";
import "ocidl.idl";
它声明了基本类型。如HRESULT和变体。等等。它实际上只是
DWORD
的别名(这是无符号long的别名)。它是由标准导入机制引入的wtypes.idl中为MIDL定义的
HRESULT
的目的是以一致可识别的方式表示返回代码-无论值中编码的来源或其他信息如何,都可以识别成功和失败,并且某些系统定义的值在与标准接口结合时具有特殊意义。有关详细信息。我已检查了这两个文件。找不到HRESULT的定义。我遗漏了什么吗?你可能遗漏了那些文件中的所有include指令。你真的有问题吗?