Pole (RPC)
Na základě charakteristik výkonu bylo definováno několik kategorií polí, a to především na základě toho, zda lze pole zkopírovat do bloku.
U některých kategorií, například pole s pevnou velikostí, existují dva typy popisovačů pole; jsou označeny in-fix v názvu úvodního tokenu FC.
Formát znaku | Popis |
---|---|
SM | Celková velikost typu může být reprezentována v 16bitovém bez znaménka. |
LG | Celková velikost typu musí být reprezentována 32bitová bez znaménka. |
Pole společná pro pole:
total_size
Celková velikost pole v paměti v bajtech To je stejné jako velikost drátu po zarovnání. Celková velikost se vypočítá pro kategorie, pro které problém s odsazením neexistuje a velikost je skutečná velikost pole.
element_size
Celková velikost v paměti jednoho prvku pole, včetně odsazení (to se může stát pouze u složitých polí).
element_description
Popis typu prvku pole
pointer_layout
Další informace najdete v tématu rozložení ukazatele.
Pole s pevnou velikostí
Řetězec formátu pole s pevnou velikostí je generován pro pole se známou velikostí, a proto může být blokován do vyrovnávací paměti zařazování. Dva pevné formáty popisovače pole jsou následující.
FC_SMFARRAY alignment<1>
total_size<2>
[pointer_layout<>]
element_description<>
FC_END
a
FC_LGFARRAY alignment<1>
total_size<4>
[pointer_layout<>]
element_description<>
FC_END
Pole shodná
Konformní pole může být zkopírováno blokem, jakmile je velikost pole známá.
FC_CARRAY alignment<1>
element_size<2>
conformance_description<>
[pointer_layout<>]
element_description<>
FC_END
Conformance_description<> je popisovač korelace a má 4 nebo 6 bajtů v závislosti na tom, jestli se používá /robustní.
Shoda s proměnlivou maticí
Odpovídající pole se dá také zkopírovat do bloku.
FC_CVARRAY alignment<1>
element_size<2>
conformance_description<>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
Conformance_description<> a variance_description<> je popisovač korelace a má 4 nebo 6 bajtů v závislosti na tom, jestli se používá /robustní.
Různá pole
Různá pole mají dvě možnosti v závislosti na velikosti pole.
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<> je popisovač korelace a má 4 nebo 6 bajtů v závislosti na použitém /robustním.
Pro různá pole vložená do struktury je posun<2> pole variance_description<> relativní posun od pozice různé matice ve struktuře na rozptyl popisující pole. Posun je obvykle relativní vzhledem k začátku struktury.
Komplexní pole
Komplexní pole je jakékoli pole s prvkem, který brání v blokování kopírování, a proto je třeba provést další akci. Tyto prvky tvoří komplexní pole:
- jednoduché typy: ENUM16, __INT3264 (pouze na 64bitových platformách), integrál s [rozsah]
- odkazy a ukazatele rozhraní (všechny ukazatele na 64bitových platformách)
- odbory
- komplexní struktury (v tématu Popis komplexní struktury najdete úplný seznam důvodů, proč je struktura složitá)
- prvky definované [transmit_as], [user_marshal]
- Všechna multidimenzionální pole s alespoň jednou vyhovující a/nebo různou dimenzí jsou složitá bez ohledu na typ základního prvku.
Komplexní popis pole je následující:
FC_BOGUS_ARRAY alignment<1>
number_of_elements<2>
conformance_description<>
variance_description<>
element_description<>
FC_END
Pole number_of_elements<2> je nulové, pokud je pole v souladu.
Conformance_description<> a variance_description<> je popisovač korelace a má 4 nebo 6 bajtů v závislosti na tom, jestli se používá /robustní. Pokud má matice shodu nebo odchylku, pak conformance_description<> a/nebo variance_description<> pole mají platné popisy, jinak je prvních 4 bajtů popisovače korelace nastaveno na 0xFFFFFFFF. Příznaky, pokud jsou k dispozici, jsou nastaveny na nulu.