程式標頭描述元
標頭在 NDR 引擎的生命週期中已延伸數次。 目前的編譯器仍會根據編譯器的模式產生不同的標頭。 不過,較新的標頭是較舊標頭的超集合。
舊 –Oi 標頭
標頭的格式如下:
handle_type<1>
Oi_flags<1>
[rpc_flags<4>]
proc_num<2>
stack_size<2>
[explicit_handle_description<>]
其中 handle_type < 1 > 可以是下表所示的其中一個值。
Hex | Handle |
---|---|
31 | FC_BIND_GENERIC |
32 | FC_BIND_PRIMITIVE |
33 | FC_AUTO_HANDLE |
34 | FC_CALLBACK_HANDLE |
0 | (明確控制碼) |
如果handle_type < 1 > 欄位為非零,則程式會使用所指示類型的隱含控制碼。 如需詳細資訊,請參閱 控制碼 主題。 如果handle_type < 1 > 欄位為零,則用於系結的控制碼是程式的其中一個參數。
明確控制碼可以是基本、泛型和內容;最後一個具有下列 FC 權杖。
Hex | Handle |
---|---|
30 | FC_BIND_CONTEXT |
根據慣例,DCOM 介面的控制碼類型FC_AUTO_HANDLE。
Oi_flags < 1 > 欄位是下列旗標的 8 位遮罩。
Hex | 旗標 | 意義 |
---|---|---|
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 | 未使用的。 |
下列旗標會多載。
Hex | 旗標 | 意義 |
---|---|---|
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 <> 欄位。 如果程式使用隱含控制碼,則此欄位不存在。