我从类型库(硬件 SDK 的一部分)导入的 COM 接口的一些方法返回或接收 IUnknown 类型的值。例如,SDK 文档指定方法如下:
bool SetInput1Selection(InputSelection inputSelection)
InputSelection GetInput1Selection()
但是 Delphi 像这样导入了这些方法:
function SetInput1Selection(const inputSelection: IUnknown): WordBool; safecall;
function GetInput1Selection: IUnknown; safecall;
InputSelection 类型似乎是一个简单的整数或枚举类型,但没有在任何地方指定。该文档仅提供了 14 种不同可能值及其含义的表格。
理想情况下,我想声明我自己的类型:
TInputSelection = (isCustom, isStartReset, ...)
以下是类型库如何定义这些函数:
virtual HRESULT __stdcall SetInput1Selection (/*[in]*/ IUnknown * inputSelection, /*[out,retval]*/ VARIANT_BOOL * pRetVal ) = 0;
virtual HRESULT __stdcall GetInput1Selection (/*[out,retval]*/ IUnknown * * pRetVal ) = 0;
但我怎样才能使这项工作?