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 使用函式時發生問題。

如果選擇性輸出指標有效,但指向未初始化的資料,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);

另請參閱

獨特