次の方法で共有


NDK_FN_BINDコールバック関数 (ndkpi.h)

NdkBind (NDK_FN_BIND) 関数は、メモリ 領域 (MR) の特定のサブ領域にメモリ ウィンドウをバインドします。

構文

NDK_FN_BIND NdkFnBind;

NTSTATUS NdkFnBind(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           NDK_MW *pMw,
  [in]           PVOID VirtualAddress,
  [in]           SIZE_T Length,
  [in]           ULONG Flags
)
{...}

パラメーター

[in] pNdkQp

NDK キュー ペア (QP) オブジェクト (NDK_QP) へのポインター。

[in, optional] RequestContext

この要求の NDK_RESULT 構造体の RequestContext メンバーで返されるコンテキスト値。

[in] pMr

NDK メモリ領域 (MR) オブジェクト (NDK_MR) へのポインター。

[in] pMw

NDK メモリ ウィンドウ (MW) オブジェクト (NDK_MW) へのポインター。

[in] VirtualAddress

MR の MDL の仮想アドレス以上で、MR の MDL の仮想アドレスと Length パラメーターの値より小さい必要がある仮想アドレス。

MmGetMdlVirtualAddress マクロを使用して、MR の MDL の仮想アドレスを取得します。

[in] Length

MW に結合する MR の長さ。

[in] Flags

許可される操作を指定するフラグのビットごとの OR。 次のフラグがサポートされています。

価値 意味
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
この要求が正常に完了しても、送信完了キューに完了イベントが生成されないことを示します。 ただし、失敗した要求では、完了キューに完了が生成されます。
NDK_OP_FLAG_READ_FENCE
0x00000002
ハードウェアがこの要求の処理を開始する前に、以前のすべての読み取り要求を完了する必要があることを示します。
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
接続されているピアのメモリ ウィンドウへの読み取りアクセスを有効にします。 メモリ ウィンドウにアクセスするには、接続されているピアに有効なトークンが必要です。
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
接続されているピアのメモリ ウィンドウへの書き込みアクセスを有効にします。 メモリ ウィンドウにアクセスするには、接続されているピアに有効なトークンが必要です。
NDK_OP_FLAG_DEFER
0x00000200
NDK プロバイダーに対して、処理の要求をハードウェアに示す遅延が発生する可能性があることを示します。 このフラグの詳細については、「NDKPI 遅延処理スキームを参照してください。

このフラグは、NDKPI 1.2 (Windows Server 2012 R2) 以降でのみサポートされます。

戻り値

NdkBind 関数は、次の NTSTATUS コードのいずれかを返します。

リターン コード 形容
STATUS_SUCCESS
要求が正常に投稿されました。 作業要求が完了すると、完了エントリが CQ にキューに入れられます。
STATUS_CONNECTION_INVALID
キュー ペア (QP) が接続されていません。
STATUS_ACCESS_VIOLATION
メモリ領域では、メモリ ウィンドウに対して要求されたアクセスの種類は許可されません。 NDK_OP_FLAG_ALLOW_WRITE フラグには、NDK_MR_FLAG_ALLOW_LOCAL_WRITE フラグに登録されたメモリ領域が必要です。
その他の状態コードの
エラーが発生しました。

備考

NdkBind は、メモリ 領域 (MR) の特定のサブ領域にメモリ ウィンドウ (MW) をバインドします。

VirtualAddress パラメーターのアドレスは、メモリ登録中に指定された MDL チェーンによって記述される、仮想的に連続した領域内のアドレスである必要があります。 アドレスは、プロバイダーがメモリ領域のインデックスとして扱う必要があります。 このアドレスは、バッファーの内容を読み取ったり書き込んだりするための有効な仮想アドレスとしてプロバイダーが使用することはできません。

この呼び出しが戻ると、リモート トークンは NdkGetRemotetokenFromMw 関数 (NDK_FN_GET_REMOTE_TOKEN_FROM_MW) で使用できるようになります。

この関数は、0 から始まる仮想アドレスをサポートしていません。

必要条件

要件 価値
サポートされる最小クライアント サポートされていません。NDIS 6.30 以降でサポートされています。
サポートされる最小サーバー Windows Server 2012
ターゲット プラットフォーム ウィンドウズ
ヘッダー ndkpi.h (Ndkpi.h を含む)
IRQL <=DISPATCH_LEVEL

関連項目

MmGetMdlVirtualAddress

NDKPI 遅延処理スキーム

NDKPI 作業依頼転記要件

NDK_FN_GET_REMOTE_TOKEN_FROM_MW

NDK_MR

NDK_MW

NDK_QP

NDK_RESULT