EVT_VMB_CHANNEL_SUSPEND callback function (vmbuskernelmodeclientlibapi.h)

[Some information relates to pre-released product which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.]

The EvtVmbChannelSuspend callback function is invoked at the server endpoint when the channel is being closed or deleted by the client endpoint, which moves the server into the Stopped state.

Syntax

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

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

Parameters

[in] Channel

The channel which is suspended.

Return value

None

Remarks

After a channel is created, a client driver can specify callback functions for state changes, including EvtVmbChannelSuspend, by using the VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT function.

If a running channel is suspended by using the VmbChannelPause function or closed by using the VmbChannelDisable function or by the opposite endpoint, Kernel Mode Client Library (KMCL) calls EvtVmbChannelSuspend. This callback guarantees that no more EvtVmbChannelProcessPacket callbacks are running or will be queued.

EvtVmbChannelSuspend is also a notification that the KMCL client must eventually complete all outstanding packets indicated by using EvtVmbChannelProcessPacket These packets do not have to be completed synchronously. KMCL blocks until they have been completed.

The KMCL client must also stop sending packets by using the VmbPacketSend, VmbPacketSendWithExternalMdl, or VmbPacketSendWithExternalPfns functions.

A call to VmbChannelPause on an active channel blocks until EvtVmbChannelSuspend is called and no more outstanding incoming packets exist.
A call to VmbChannelDisable block until the channel is paused and closed.

This function does guarantee completion of outstanding transactions. The client may be buggy, malicious, or the guest virtual machine may have crashed. The server must retire any outstanding transactions, probably by cancelling them.

Requirements

Requirement Value
Target Platform Windows
Header vmbuskernelmodeclientlibapi.h (include VmbusKernelModeClientLibApi.h)
IRQL PASSIVE_LEVEL

See also

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns