EVT_VMB_CHANNEL_STARTED 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 EvtVmbChannelStarted callback function is invoked at either endpoint when a channel is fully configured but before any packets have been delivered. This occurs when the opposite endpoint opened the channel or reopened it after closing it.

Syntax

EVT_VMB_CHANNEL_STARTED EvtVmbChannelStarted;

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

Parameters

[in] Channel

The channel which is started.

Return value

None

Remarks

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

If a paused channel is opened or an opened channel is started, Kernel Mode Client Library (KMCL) calls EvtVmbChannelStarted after it calls the EvtVmbChannelOpened callback. EvtVmbChannelStarted can call the VmbPacketSend, VmbPacketSendWithExternalMdl, and VmbPacketSendWithExternalPfns functions to queue up outgoing packets. Because the incoming queue is not running at this point, this callback must not block on incoming packets or completions.

Most drivers using KMCL do not implement this callback. An alternative is the EvtVmbChannelPostStarted callback function.

Waiting for a sent packet to complete, such as by the VmbChannelSendSynchronousRequest function, never returns because packets are not flowing when this callback is invoked.

Requirements

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

See also

EvtVmbChannelOpened

EvtVmbChannelPostStarted

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelSendSynchronousRequest

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns