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

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

EvtVmbChannelSuspend コールバック関数は、チャネルがクライアント エンドポイントによって閉じられたり削除されたりすると、サーバー エンドポイントで呼び出され、サーバーが停止状態になります。

構文

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

void EvtVmbChannelSuspend(
  [in] VMBCHANNEL Channel
)
{...}

パラメーター

[in] Channel

中断されているチャネル。

戻り値

なし

解説

チャネルが作成された後、クライアント ドライバーは、VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT関数を使用して、EvtVmbChannelSuspend などの状態変更のコールバック関数を指定できます。

実行中のチャネルが VmbChannelPause 関数を使用して中断されるか、 VmbChannelDisable 関数または反対のエンドポイントを使用して閉じられた場合、カーネル モード クライアント ライブラリ (KMCL) は EvtVmbChannelSuspend を呼び出します。 このコールバックにより、 EvtVmbChannelProcessPacket コールバックが実行されなくなったか、キューに登録されます。

EvtVmbChannelSuspend は、KMCL クライアントが最終的に EvtVmbChannelProcessPacket を使用して示されたすべての未処理のパケットを完了する必要があることを示す通知でもあります。これらのパケットを同期的に完了する必要はありません。 KMCL は、完了するまでブロックします。

KMCL クライアントは、VmbPacketSend、VmbPacketSendWithExternalMdl、または VmbPacketSendWithExternalPfns 関数を使用してパケットの送信を停止する必要もあります。

アクティブ チャネルの VmbChannelPause の呼び出しは、 EvtVmbChannelSuspend が呼び出され、未処理の受信パケットが存在しなくなるまでブロックされます。
チャネルが一時停止して閉じられるまで 、VmbChannelDisable ブロックの呼び出し。

この関数は、未処理のトランザクションの完了を保証します。 クライアントがバグ、悪意のある、またはゲスト仮想マシンがクラッシュしている可能性があります。 サーバーは、未処理のトランザクションを取り消すことによって、削除する必要があります。

要件

要件
対象プラットフォーム Windows
ヘッダー vmbuskernelmodeclientlibapi.h (VmbusKernelModeClientLibApi.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns