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.