EVT_VMB_CHANNEL_SUSPEND функции обратного вызова (vmbuskernelmodeclientlibapi.h)
[Некоторые сведения относятся к предварительно выпущенным продуктам, которые могут быть существенно изменены до его коммерческого выпуска. Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.]
Функция обратного вызова EvtVmbChannelSuspend вызывается в конечной точке сервера при закрытии или удалении канала конечной точкой клиента, которая перемещает сервер в состояние Остановлено.
Синтаксис
EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;
void EvtVmbChannelSuspend(
[in] VMBCHANNEL Channel
)
{...}
Параметры
[in] Channel
Приостановленный канал.
Возвращаемое значение
None
Remarks
После создания канала драйвер клиента может указать функции обратного вызова для изменения состояния, включая EvtVmbChannelSuspend, с помощью функции VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT .
Если запущенный канал приостановлен с помощью функции VmbChannelPause или закрыт с помощью функции VmbChannelDisable или противоположной конечной точки, клиентская библиотека режима ядра (KMCL) вызывает EvtVmbChannelSuspend. Этот обратный вызов гарантирует, что обратные вызовы EvtVmbChannelProcessPacket не выполняются или не будут помещены в очередь.
EvtVmbChannelSuspend также является уведомлением о том, что клиент KMCL должен в конечном итоге завершить все незавершенные пакеты, указанные с помощью EvtVmbChannelProcessPacket . Эти пакеты не нужно заполнять синхронно. KMCL блокируется до тех пор, пока они не будут завершены.
Клиент KMCL также должен прекратить отправку пакетов с помощью функций VmbPacketSend, VmbPacketSendWithExternalMdl или VmbPacketSendWithExternalPfns .
Вызов VmbChannelPause в активном канале блокируется, пока не будет вызван Метод EvtVmbChannelSuspend и больше не будут существовать незадачлые входящие пакеты.
Вызов блока VmbChannelDisable , пока канал не будет приостановлен и закрыт.
Эта функция гарантирует завершение невыполненных транзакций. Клиент может быть ошибкой, вредоносным или сбой гостевой виртуальной машины. Сервер должен снять с учета все невыполненные транзакции, вероятно, отменив их.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | vmbuskernelmodeclientlibapi.h (включая VmbusKernelModeClientLibApi.h) |
IRQL | PASSIVE_LEVEL |