次の方法で共有


プロシージャ ヘッダー記述子

ヘッダーは、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> フィールドが 0 以外の場合、プロシージャは指定された種類の暗黙的なハンドルを使用します。 詳細については、 ハンドル に関するトピックを参照してください。 handle_type<1> フィールドが 0 の場合、バインディングに使用されるハンドルはプロシージャのパラメーターの 1 つです。

明示的なハンドルには、プリミティブ、ジェネリック、およびコンテキストを指定できます。最後の 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 プロシージャには 0 以外の Rpc フラグがあります。
10 大井_* オーバーロードされます。
20 大井_* オーバーロードされます。
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 フラグは 0 になります。

注意

パフォーマンスのために、非同期インタープリターには常に rpc_flags<4> フィールドが存在します。

 

proc_num<2> フィールドには、プロシージャのプロシージャ番号が表示されます。

stack_size<2> は、このポインターや戻り値を含め、スタック上のすべてのパラメーターの合計サイズを提供します。

explicit_handle_description<> フィールドについては、このドキュメントで後述します。 プロシージャが暗黙的なハンドルを使用している場合、このフィールドは存在しません。