次の方法で共有


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

[一部の情報は、商用リリース前に大幅に変更される可能性があるプレリリース製品に関連しています。 Microsoft は、ここで提供される情報に関して明示的または黙示的な保証を行いません。

VmbPacketSendWithExternalMdl 関数は、パケット バッファーまたは外部データメモリ記述子リスト (MDL) 内のデータを送信します。 この関数は、そのデータを VMBus パケット オブジェクトに関連付けます。これは、トランザクションの有効期間中のパケットを表します。

構文

FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL FnVmbPacketSendWithExternalMdl;

NTSTATUS FnVmbPacketSendWithExternalMdl(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PMDL ExternalDataMdl,
  UINT32 MdlOffset,
  UINT32 MdlLength,
  UINT32 Flags
)
{...}

パラメーター

PacketObject

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

Buffer

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

BufferLength

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

ExternalDataMdl

パケットに関連付けられたデータ バッファーを記述する MDL。

MdlOffset

データが開始される MDL によって記述されたバッファーからのオフセット。

MdlLength

送信するサブバッファーの長さ。 MDL 全体に 0 を使用します。

Flags

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

価値 意味
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
このパケットは完了と見なすことができず、そのリソースは、完了パケットが反対のエンドポイントから戻るまで解放できません。 このフラグは設定する必要があります。
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
外部データ MDL の長さが MDL の ByteCount フィールドより長い場合でも、MdlLength 常に使用してください。 これにより、ページ境界に切り上げて MDL の長さを超えるだけです。 このフラグが設定されている場合は、MDL チェーン内の最初の MDL のみが使用されます。
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
インライン バッファーはページングされ、それに応じて処理する必要があります。つまり、DPC レベルに入る前にコピーする必要があります。 ユーザー モード バッファーのプローブまたはアクセス違反の処理は、呼び出し元の責任です。

戻り値

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

備考

この関数は、MDL オフセットと MDL の長さを渡すことができるという点で、VmbPacketSend 関数とは異なります。

大事な

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1803
ヘッダー vmbuskernelmodeclientlibapi.h

関連項目

VmbPacketSend する