Application-Allocated 緩衝區
ACF 屬性 [byte_count] 會指示存根使用未由客戶端支援例程配置或釋放的預先配置緩衝區。 [byte_count] 屬性會套用至指向緩衝區的指標或陣列參數。 它需要參數,以位元組為單位指定緩衝區大小。
用戶端配置的記憶體區域可以包含具有多個指標的複雜數據結構。 由於記憶體區域是連續的,因此應用程式不需要進行數次呼叫,即可個別釋放每個指標和結構。 如同使用 [allocate(all_nodes)] 屬性時,可以使用記憶體配置例程或可用例程的一個呼叫來配置或釋放記憶體區域。 不過,不同於使用 [allocate(all_nodes)] 屬性,緩衝區參數不是由用戶端存根管理,而是由用戶端應用程式管理。
緩衝區必須是 [out]-only 參數,且位元組中的緩衝區長度必須是 []-only 參數中的 []。 [byte_count] 屬性只能套用至指標類型。 [byte_count] ACF 屬性是 DCE IDL 的Microsoft延伸模組,因此,如果您使用 MIDL /osf 參數進行編譯,則無法使用。
在下列範例中,pRoot 參數 使用位元組計數:
/* function prototype in IDL file (fragment) */
void SortNames(
[in] short cNames,
[in, size_is(cNames)] STRINGTYPE pszArray[],
[in] short cBytes,
[out, ref] P_TREE_TYPE pRoot /* tree with sorted data */
);
[byte_count] 屬性會出現在 ACF 中,如下所示:
/* ACF file (fragment) */
SortNames([byte_count(cBytes)] pRoot);
從這些 IDL 和 ACF 檔案產生的用戶端存根不會配置或釋放此緩衝區的記憶體。 伺服器存根會使用提供的size參數,在單一呼叫中配置並釋放緩衝區。 如果數據太大而無法指定緩衝區大小,則會引發例外狀況。