[输入],[输出],[输入,输出]和[输出,重新评估]之间有什么区别?



[in][out][in, out][out, retval]的区别是什么?

从我读过的一些代码中,我认为[in]用于将参数传递给一个方法。[out, retval]是返回一个值。[in, out]用于表示我们可以覆盖该参数,并且它是返回的参数。但是,我似乎最后一个属性可以在方法的创建上多次使用,为什么呢?这里的[out]是多少?

我想我讲错了,有人能解释一下这些属性的区别吗?

这些是用于在IDL文件中规范com接口方法参数的MIDL语言属性。说明符的含义来自它们的名称,通常可以理解为通过值(in)、引用(in、out)和返回值(out、retval)传递参数。Out表示只返回值——但是通过形参传递,因此该方法可以返回多个值。

在文档中:[In]属性指定输入参数,[out] -仅输出参数,[In, out]-输入和输出,[out, retval] -返回值。不要忘记,低级IDL描述可以使用这个com对象在不同的语言中使用。例如,我们可以有IDL描述(不严格):

// [out, retval] must be last
genererate([in] item_name, [out] size, [out, retval] res); 

,用法如下:

var sz; // will be initialized in the COM-method
var res = FooObj.generate("new_item", sz); // FooObj is our COM-object

最新更新