次の方法で共有


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 クライアントは、VmbPacketSendVmbPacketSendWithExternalMdl、または VmbPacketSendWithExternalPfns 関数を して、パケットの送信を停止する必要もあります。

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

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

必要条件

要件 価値
ターゲット プラットフォーム ウィンドウズ
ヘッダー vmbuskernelmodeclientlibapi.h (VmbusKernelModeClientLibApi.h を含む)
IRQL PASSIVE_LEVEL

関連項目

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend する

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns する