Aracılığıyla paylaş


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.