次の方法で共有


FN_VMB_PACKET_SEND_WITH_EXTERNAL_PFNS コールバック関数 (vmbuskernelmodeclientlibapi.h)

[一部の情報はリリース前の製品に関することであり、正式版がリリースされるまでに大幅に変更される可能性があります。 ここに記載された情報について、Microsoft は明示または黙示を問わずいかなる保証をするものでもありません。]

VmbPacketSendWithExternalPfns 関数は、パケット バッファーまたは外部データのデータをページ フレーム番号 (PFN) の配列として送信します。 関数は、そのデータを VMBus パケット オブジェクトに関連付けます。これは、トランザクションの有効期間中のパケットを表します。

構文

FN_VMB_PACKET_SEND_WITH_EXTERNAL_PFNS FnVmbPacketSendWithExternalPfns;

NTSTATUS FnVmbPacketSendWithExternalPfns(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PPFN_NUMBER ExternalDataPfns,
  UINT32 PfnLength,
  UINT32 Flags
)
{...}

パラメーター

PacketObject

VMBus パケット オブジェクトへのハンドル。

Buffer

VMBus リング バッファーを介して送信されるコマンド パケットを含むバッファー。

BufferLength

Buffer パラメーター内のバッファーの長さ (バイト単位)。

ExternalDataPfns

パケットに関連付けられたデータ バッファーを記述するページ フレーム番号の配列。

PfnLength

ExternalDataPfns から送信する PFN の数。 最後に参照される配列インデックスは包括的です ExternalDataPfns[PfnOffset+PfnLength-1]

Flags

フラグ。 関連フラグを次に示します。

意味
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
このパケットは完了と見なすことができず、そのリソースは、完了パケットが反対のエンドポイントから戻るまで解放できません。 このフラグを設定する必要があります。
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
インライン バッファーはページングされ、それに応じて処理する必要があります。つまり、DPC レベルに入る前にコピーする必要があります。 ユーザー モード バッファーのプローブまたはアクセス違反の処理は、呼び出し元の責任です。

戻り値

操作が成功した場合はSTATUS_SUCCESSを返し、それ以外の場合は適切な NTSTATUS エラー コードを返します。

注釈

この関数は、PFN の配列 (実質的には物理アドレス) を渡すことができるという点で 、VmbPacketSend 関数とは異なります。

重要

この関数は、Vmbkmcl.sys バス ドライバーによって提供される VMBus カーネル モード クライアント ライブラリ (KMCL) インターフェイスを介して呼び出されます。 これは、 KMCL_CLIENT_INTERFACE_V1 構造体からアクセスされるクライアント関数です。

詳細については、 KMCL_CLIENT_INTERFACE_V1の「解説」セクションを参照してください。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 1803
Header vmbuskernelmodeclientlibapi.h

こちらもご覧ください

VmbPacketSend