Megosztás a következőn keresztül:


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.