Felhasználó-marshal
A felhasználói marshal formátumsztringje hasonló a 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>
A zászlók<1> bájt áll a felső zászló nibble és az alsó igazítási nibble.
A jelző jelölő 2 bitjének felső 2 bitje annak leírására szolgál, hogy a dróttípus egyedi mutatóként, referenciamutatóként vagy mutató nélkül van-e definiálva (nem lehet ptr). A jelölők beállításához/lekéréséhez a következő jegyzékfájlokat definiáltuk:
#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 */
A jelzőszó igazítási köve megtartja az átvitt típus vezeték-igazítását.
A quadruple_index<2> a felhasználói marshal függvények visszahívási rutinjának négyesének indexe. A rutinhelyzetek a következők: méretezés, marsallozás, házasság nélküli és szabadító rutin.
A user_type_memory_size<2> méretet biztosít a felhasználó által megadott típushoz, beleértve az ismeretlen típusokat is.
A transmitted_type_buffer_size<2> vagy nulla, ha a méret változó, vagy a tényleges rögzített méret. Ez egy optimalizálás, amely lehetővé teszi, hogy a MIDL kihagyja a visszahívásokat a puffer méretezésekor és felszabadításkor is.
Tartomány
A [tartomány] ellenőrzése további eszközöket biztosít az argumentumok érvényesítéséhez az NDR-rétegben. A [tartomány] leíró formátuma a következő:
FC_RANGE, flags_type <1>
low value<4>
high value<4>
A zászlók a felső nibble és a típus az alsó nibble a második bájt. Az alacsony és a magas értékek az ellenőrizendő változó típusától függenek.
A zászlók tágulási járműként szolgálnak; a fordító nullára állította a nibble-t.