指標 (RPC)
一般指標
通用指標定義為介面指標和位元組計數指標以外的所有專案。
描述有兩個可能的版面配置:
pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD
–或–
pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>
如果指標是簡單類型或非化字串指標的指標,則會使用第一個格式。 第二種格式用於所有其他類型的指標。 指標屬性會指出其具有FC_SIMPLE_POINTER旗標的描述配置。
pointer_type<1> 是下列其中一項。
格式字元 | 描述 |
---|---|
FC_RP | 參考指標。 |
FC_UP | 唯一指標。 |
FC_FP | 完整指標。 |
FC_OP | 物件介面中的唯一指標。 |
區分FC_OP的原因是語意:在物件介面中,應該釋放 [in,out] 指標,再取消分割新的物件並指派新的指標值。
Pointer_attributes<1> 下表所示的任何旗標。
屬性 | 旗 | 描述 |
---|---|---|
01 | FC_ALLOCATE_ALL_NODES | 指標是allocate(all_nodes) 配置配置的一部分。 |
02 | FC_DONT_FREE | allocate(dont_free) 指標。 |
04 | FC_ALLOCED_ON_STACK | 參考項配置於存根堆疊上的指標。 |
08 | FC_SIMPLE_POINTER | 簡單型別或不符合規範字串的指標。 所設定的這個旗標會以上述簡單指標配置表示指標描述的配置,否則會指出具有位移的描述元格式。 |
10 | FC_POINTER_DEREF | 必須取值才能處理指標參考的指標。 |
套用size_is()、max_is()、length_is()、套用last_is()和/或first_is() 的指標,其格式字串描述與適當類型的陣列指標相同(例如,套用size_is() 時符合規範的數位,如果套用了size_is()和length_is,則為一致的陣列。
介面指標
物件介面指標格式字串有兩種格式之一,取決於編譯程式是否知道對應的 IID。
具有常數 IID 的介面指標具有下列描述:
FC_IP FC_CONSTANT_IID
iid<16>
iid<16> 部分是介面指標的實際 IID。 iid 會以與 GUID 數據結構相同的格式寫入格式字串:long、short、short、char [8]。
套用iid_is() 介面指標的描述如下:
FC_IP FC_PAD
iid_description<>
iid_description<>是相互关联描述元,根據是否使用 /robust,具有 4 或 6 個字節。 NdrComputeConformance 函式所計算的值是 IID 指標。
位元組計數指標
位元組計數指標與稱為 [byte_count] 的特殊優化屬性有關。 使用下列格式:
FC_BYTE_COUNT_POINTER
simple_type<1>
byte_count_description<>
–和–
FC_BYTE_COUNT_POINTER
FC_PAD
byte_count_description<>
pointee_description<>
byte_count_description<>是相互关联描述元,根據是否使用 /robust,具有 4 或 6 個字節。
pointee_description<>是指点类型的描述。