Kullanıcı hazırlama
Kullanıcı sıralama, transmit_as benzer bir biçim dizesine sahiptir:
FC_USER_MARSHAL
flags<1>
quadruple_index<2>
user_type_memory_size<2>
transmitted_type_buffer size<2>
offset_to_the_transmitted_type<2>
1> bayt<bayraklar üst bayrak nibble ve alt hizalama nibble oluşur.
Bayrak parçacığının üst 2 biti, tel türünün benzersiz bir işaretçi olarak mı, başvuru işaretçisi mi yoksa işaretçi yok mu (ptr olamaz) olarak tanımlanıp tanımlanmadığını açıklamak için kullanılır. Bayrakları ayarlamak/almak için aşağıdaki bildirimler tanımlanmıştır:
#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 */
Bayrak sözcüğünün hizalaması, iletilen türün kablo hizalamasını korur.
quadruple_index<2>, kullanıcı hazırlama işlevlerinin dörtlü geri çağırma yordamının dizinidir. Rutin konumlar aşağıdaki gibidir: boyutlandırma, sıralama, özetleme ve serbest yordam.
user_type_memory_size<2>, kullanıcıya özgü tür için bilinmeyen türler de dahil olmak üzere bir boyut sağlar.
boyut değiştiğinde transmitted_type_buffer_size<2> sıfır veya gerçek sabit boyut. Bu, MIDL'nin arabelleği boyutlandırırken ve serbest bırakılırken geri çağırmaları atlamasını sağlayan bir iyileştirmedir.
Aralık
[range] denetimi NDR katmanında bağımsız değişken doğrulaması için ek araçlar sağlar. [range] tanımlayıcısı aşağıdaki biçime sahiptir:
FC_RANGE, flags_type <1>
low value<4>
high value<4>
Bayraklar üst nibble alır ve ikinci bayt alt nibble türü. Düşük ve yüksek değerler denetlenecek değişkenin türüne bağlıdır.
Bayraklar bir genişletme aracı olarak tasarlanıyor; derleyicisi, nibble'yi sıfır olarak ayarlıyor.