使用者封送處理
使用者封送處理具有類似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>
旗標<1 個> 位元組包含上層旗號和下對齊點。
旗標擷取的上 2 位是用來描述線類型是否定義為唯一指標、參考指標或沒有指標(不能是 ptr)。 已定義下列指令清單來設定/取得旗標:
#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 */
旗標字的對齊範圍會保持傳輸型別的線對齊方式。
quadruple_index<2> 是使用者封送處理函式四倍回呼例程的索引。 例程位置如下:重設大小、封送處理、取消封送處理和釋放例程。
user_type_memory_size<2> 提供使用者特定類型的大小,包括未知的類型。
當大小不同或實際固定大小時,transmitted_type_buffer_size<2> 為零。 這是一項優化,可讓 MIDL 在重設大小緩衝區時略過回呼,以及在釋放時也略過回呼。
範圍
[range] 檢查提供 NDR 層自變數驗證的額外方法。 [range] 描述元的格式如下:
FC_RANGE, flags_type <1>
low value<4>
high value<4>
旗標會採用上層小號,並輸入第二個字節的下角。 低值和高值取決於要檢查的變數類型。
國旗是作為擴張車輛:編譯程式已將nibble設定為零。