共用方式為


程式標頭描述元

標頭在 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 <> 欄位。 如果程式使用隱含控制碼,則此欄位不存在。