陣列 (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<>是相互关联描述元,根據是否使用 /robust,具有 4 或 6 個字節。
一致變化陣列
一致不同的陣列也可以進行區塊複製。
FC_CVARRAY alignment<1>
element_size<2>
conformance_description<>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
conformance_description<>和variance_description<>是相互关联描述元,根據是否使用 /robust,具有 4 或 6 個字節。
Varying Array
根據陣列的大小,不同的陣列有兩種可能性。
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<>是相互关联描述元,根據所使用的 /強固,具有 4 或 6 個字節。
對於內嵌在 結構內的不同數位,<2> 字段的位移variance_description<>是结构中不同数组位置到描述字段变异数的相对位移。 位移通常相對於 結構的開頭。
複雜陣列
複雜陣列是任何具有元素的陣列,可防止它遭到區塊複製,因此需要採取其他動作。 這些元素會使數位變得複雜:
- 簡單類型:ENUM16、__INT3264(僅限 64 位平臺上),具有 [範圍] 的整數
- 參考和介面指標(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<>字段(s) 具有有效的描述,否則相互關聯描述元的前 4 個字節會設定為 0xFFFFFFFF。 當存在時,旗標會設定為零。