程序標頭描述元
標頭在 NDR 引擎的生命週期中已延伸數次。 目前的編譯程式仍會根據編譯程式的模式產生不同的標頭。 不過,較新的標頭是較舊標頭的超集。
舊 –Oi 標頭
標頭的格式如下:
handle_type<1>
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>
stack_size<2>
[explicit_handle_description<>]
其中 handle_type<1> 可以是下表所示的其中一個值。
十六進位 | 處理 |
---|---|
31 | FC_BIND_GENERIC |
32 | FC_BIND_PRIMITIVE |
33 | FC_AUTO_HANDLE |
34 | FC_CALLBACK_HANDLE |
0 | (明確句柄) |
如果handle_type<1> 欄位為非零,則程式會使用所指示類型的隱含句柄。 如需詳細資訊,請參閱 句柄 主題。 如果handle_type<1> 欄位為零,則用於系結的句柄是程式的其中一個參數。
明確句柄可以是基本、泛型和內容;最後一個具有下列FC令牌。
十六進位 | 處理 |
---|---|
30 | FC_BIND_CONTEXT |
依照慣例,DCOM 介面的句柄類型FC_AUTO_HANDLE。
Oi_flags<1> 字段是下列旗標的 8 位遮罩。
十六進位 | 旗 | 意義 |
---|---|---|
01 | Oi_FULL_PTR_USED | 使用完整指標套件。 |
02 | Oi_RPCSS_ALLOC_USED | 使用 RpcSs 記憶體套件。 |
04 | Oi_OBJECT_PROC | 物件介面中的程式。 |
08 | Oi_HAS_RPCFLAGS | 此程式具有非零 Rpc 旗標。 |
10 | Oi_* | 重載。 |
20 | Oi_* | 重載。 |
40 | Oi_USE_NEW_INIT_ROUTINES | 使用 Windows NT3.5 Beta2+ init 例程。 |
80 | 閑置。 |
下列旗標會多載。
十六進位 | 旗 | 意義 |
---|---|---|
10 | ENCODE_IS_USED | 僅用於採摘。 |
20 | DECODE_IS_USED | 僅用於採摘。 |
10 | Oi_IGNORE_OBJECT_EXCEPTION_HANDLING | 不再使用 (舊 OLE)。 |
20 | Oi_HAS_COMM_OR_FAULT | 僅在原始 RPC 中,[comm _, fault_status]。 |
20 | Oi_OBJ_USE_V2_INTERPRETER | 在僅限 DCOM 中,使用 –Oif 解釋器。 |
rpc_flags<4> 欄位描述如何設定 RPC_MESSAGE 結構的 RpcFlags 字段。 只有當Oi_flags<1> 欄位已設定Oi_HAD_RPCFLAGS時,才會顯示此欄位。 如果此欄位不存在,則遠端程式的 RPC 旗標為零。
注意
為了達到效能,異步解釋器一律會有rpc_flags<4> 字段。
[proc_num<2>] 字段會提供程式的程序編號。
stack_size<2> 提供堆疊上所有參數的總大小,包括此指標和/或傳回值。
本檔稍後會說明explicit_handle_description<>字段。 如果程式使用隱含句柄,則此欄位不存在。