Sdílet prostřednictvím


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.