这个 C++ [out] 参数是指向枚举的指针,还是只是一个值

Is this C++ [out] parameter a pointer to an enumeration, or just a single value?

本文关键字:一个 指针 out C++ 参数 枚举 这个      更新时间:2023-10-16

目前我正在使用 DirectShow.NET,这是一个用于Microsoft DirectShow(C++)的非官方.NET"端口"。

IAMAnalogVideoDecoder 和 IAMTVTuner 都声明该方法get_AvailableVideoFormats 。这是官方文档中定义该方法的方式:

HRESULT get_AvailableTVFormats(
  [out]  long *lAnalogVideoStandard
);

我不清楚这个参数是指向单个AnalogVideoStandard的指针,还是枚举。不幸的是,我对C++太缺乏经验,无法完全理解文档。由于方法名称,我希望它是一个枚举,但是吗?

我问这个问题的原因是,在 .NET 库中,此参数不是枚举,只是一个值。我觉得这很奇怪,因为我希望在这里获得多种"可用的视频格式"。


顺便说一下,AnalogVideoStandard是一个枚举。

我不清楚这个参数是指向单个 AnalogVideoStandard 的指针,还是枚举。

它既不是1

指向从模拟视频标准枚举接收零个或多个标志的按位 OR 的变量的指针。

它是指向表示零个或多个 AnalogVideoStandard s 的值的指针。

这个答案应该解释其余的。您应该能够将此答案应用于 .NET 代码。

1 从技术上讲,它可以是 C# 中的枚举值,因为enum类型可以应用FlagsAttribute,但在C++中没有等效项,您只需将值|在一起,无需特别大张旗鼓。