RPC) (陣列
已根據其效能特性定義數個數組類別,主要是陣列是否可以進行區塊複製。
對於某些類別,例如固定大小的陣列,有兩種類型的陣列描述元存在;它們會以前置 FC 權杖名稱中的修正來表示。
格式化字元 | 說明 |
---|---|
SM | 類型的總大小可以用 16 位不帶正負號的 int 表示。 |
LG | 類型的總大小需要 32 位無符號長來表示。 |
陣列通用的欄位:
total_size
記憶體中陣列的大小總計,以位元組為單位。 這與對齊後的線大小相同。 系統會針對填補問題不存在且大小為實際陣列大小的類別計算總大小。
element_size
陣列中單一元素的記憶體大小總計,包括填補 (複雜陣列可能只會發生) 。
element_description
陣列專案類型的描述。
pointer_layout
如需詳細資訊,請參閱 指標配置 主題。
固定大小的陣列格式字串會針對具有已知大小的陣列產生,因此可能會區塊複製到封送處理緩衝區。 兩個固定陣列描述元格式如下所示。
FC_SMFARRAY alignment<1>
total_size<2>
[pointer_layout<>]
element_description<>
FC_END
及
FC_LGFARRAY alignment<1>
total_size<4>
[pointer_layout<>]
element_description<>
FC_END
一旦已知陣列的大小,就可以封鎖複製一個一致性陣列。
FC_CARRAY alignment<1>
element_size<2>
conformance_description<>
[pointer_layout<>]
element_description<>
FC_END
conformance_description <> 是相互關聯描述元,且有 4 或 6 個位元組,視 是否使用 /robust 而定。
一致性的變異陣列也可以進行區塊複製。
FC_CVARRAY alignment<1>
element_size<2>
conformance_description<>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
conformance_description <> 和variance_description <> 是相互關聯描述元,並根據 是否使用 /robust ,具有 4 或 6 個位元組。
根據陣列的大小,不同的陣列有兩種可能性。
FC_SMVARRAY alignment<1>
total_size<2>
number_elements<2>
element_size<2>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
FC_LGVARRAY alignment<1>
total_size<4>
number_elements<4>
element_size<2>
variance_description<4>
[pointer_layout<>]
element_description<>
FC_END
variance_description <> 是相互關聯描述元,根據所使用的 /robust ,具有 4 或 6 個位元組。
對於內嵌在 結構內的不同陣列,variance_description的位 < 移 2 > 欄位是結構中不同陣列位置到描述欄位差異的相對位 <> 移。 位移通常相對於 結構的開頭。
複雜陣列是任何具有元素的陣列,其可防止它遭到區塊複製,因此需要採取額外的動作。 這些元素會使陣列變得複雜:
- 簡單類型:64 位平臺上的 ENUM16、__INT3264 (只) ,這是具有 [range] 的整數
- 參考和介面指標 (64 位平臺上的所有指標)
- 等位
- 複雜結構 (如需結構複雜原因的完整清單,請參閱複雜結構描述主題)
- 使用 [transmit_as]、 [user_marshal] 定義的元素
- 不論基礎元素類型為何,至少有一個一個一致性和/或不同維度的所有多維度陣列都很複雜。
複雜陣列描述如下所示:
FC_BOGUS_ARRAY alignment<1>
number_of_elements<2>
conformance_description<>
variance_description<>
element_description<>
FC_END
如果陣列一致性,則number_of_elements < 2 > 欄位為零。
conformance_description <> 和variance_description <> 是相互關聯描述元,並根據 是否使用 /robust ,具有 4 或 6 個位元組。 如果陣列具有一致性和/或變異數,則conformance_description <> 和/或variance_description <> 欄位 () 具有有效的描述,否則相互關聯描述元的前 4 個位元組會設定為 0xFFFFFFFF。 當存在時,旗標會設定為零。