共用方式為


程序標頭描述元

標頭在 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<>字段。 如果程式使用隱含句柄,則此欄位不存在。