Sdílet prostřednictvím


Zařazování uživatelů

Zařazování uživatele má formátovací řetězec podobný transmit_as:

FC_USER_MARSHAL
flags<1>
quadruple_index<2>
user_type_memory_size<2>
transmitted_type_buffer size<2>
offset_to_the_transmitted_type<2>

Příznaky<1> bajtu se skládají z nitě horního příznaku a dolního zarovnání nibble.

K popisu, zda je typ drátu definován jako jedinečný ukazatel, referenční ukazatel nebo žádný ukazatel (nemůže to být ptr), se používají horní 2 bity příznaku. Pro nastavení/získání příznaků byly definovány následující manifesty:

#define USER_MARSHAL_UNIQUE         0x80
#define USER_MARSHAL_REF            0x40
#define USER_MARSHAL_POINTER        0xc0  /* unique or ref */
#define USER_MARSHAL_IID            0x20  /* JIT compiler only */

Zarovnání nibble slova příznaku udržuje zarovnání drátu přenášeného typu.

Quadruple_index<2> je index rutiny zpětného volání čtyřnásobných funkcí zařazování uživatelů. Rutinní pozice jsou následující: určení velikosti, zařazování, zrušení ohraničení a uvolnění rutiny.

User_type_memory_size<2> poskytuje velikost konkrétního typu uživatele, včetně neznámých typů.

Transmitted_type_buffer_size<2> je buď nula, pokud se velikost liší, nebo skutečná pevná velikost. Toto je optimalizace, která umožňuje MIDL přeskočit zpětná volání při změně velikosti vyrovnávací paměti a také při uvolnění.

Rozmezí

Kontrola [rozsahu] poskytuje další prostředky pro ověřování argumentů ve vrstvě oznámení o nedoručení. Popisovač [range] má následující formát:

FC_RANGE,   flags_type <1>
low value<4>
high value<4>

Vlajky převezmou horní nibble a typ dolní nibble druhého bajtu. Nízké a vysoké hodnoty závisí na typu proměnné, která se má zkontrolovat.

Vlajky jsou určeny jako rozšiřující vozidlo; Kompilátor nastavil nibble na nulu.