partial_ignore 属性

ACF 属性 [partial_ignore] 定义提供可选输出语义的 [unique] 指针的专用版本。

[ [function-attribute-list <>] ] type-specifier <> [pointer- <>declarator <>] function-name <>( [ partial_ignore [ , parameter-attribute-list <> ] ] type-specifier <> [declarator <>] , ...);

备注

创建函数时,通常允许用户指定指向可选返回数据(通常称为可选输出指针)的非 NULL 指针。 通常不需要初始化用户指向的内存。 当函数通过 RPC 使用时,此方法表示问题。

如果 optional-out 指针有效,但指向未初始化的数据,RPC 会尝试封送该数据并将其发送到服务器,这可能会导致封送处理失败并中止调用。 即使封送处理成功,也会将大量无用数据发送到服务器。

通过将指针标记为 [in、out、unique、partial_ignore],可以解决这些问题。 所有四个属性都必须存在。 在客户端封送 [partial_ignore] 指针时,发送到服务器的唯一数据是显示指针是否为 NULL 的指示器。 如果指针为非 NULL,则服务器端例程会收到指向已用零初始化的内存块的有效指针。 如果指针为 NULL,则服务器端例程将接收 NULL 指针。

在这种情况下,必须在编译时或基于输入参数正确定义指针的最大大小,因为服务器需要为所指向的内存位置分配空间。 例如,简单的 [string] 指针没有明确定义的大小,因为字符串被 NULL 字符隐式终止。 在这种情况下,通过添加 [size_is] 属性指定字符串的最大大小将实现明确定义的大小要求。

示例

/* The MoveLeft function will move one position to the left and optionally return the previous position */
void MoveLeft([in, out, unique, partial_ignore] long *pPrevPosition);

另请参阅

unique