KMCL_CLIENT_INTERFACE_V1 structure

The KMCL_CLIENT_INTERFACE_V1 structure contains function pointers for client functions for the VMBus Kernel Mode Client Library (KMCL) interface.

For more information about how to access the KMCL interface, see the Remarks section.

Syntax

typedef struct _KMCL_CLIENT_INTERFACE_V1 {
    INTERFACE;
    PFN_VMB_CHANNEL_ALLOCATE                                         VmbChannelAllocate;
    PFN_VMB_CHANNEL_CLEANUP                                          VmbChannelCleanup;
    PFN_VMB_CHANNEL_CREATE_GPADL_FROM_BUFFER                         VmbChannelCreateGpadlFromBuffer;
    PFN_VMB_CHANNEL_CREATE_GPADL_FROM_MDL                            VmbChannelCreateGpadlFromMdl;
    PFN_VMB_CHANNEL_DELETE_GPADL                                     VmbChannelDeleteGpadl;
    PFN_VMB_CHANNEL_DISABLE                                          VmbChannelDisable;
    PFN_VMB_CHANNEL_ENABLE                                           VmbChannelEnable;
    PFN_VMB_CHANNEL_GET_INTERFACE_INSTANCE                           VmbChannelGetInterfaceInstance;
    PFN_VMB_CHANNEL_GET_MMIO_SPACE                                   VmbChannelGetMmioSpace;
    PFN_VMB_CHANNEL_GET_POINTER                                      VmbChannelGetPointer;
    PFN_VMB_CHANNEL_INIT_SET_CLIENT_CONTEXT_SIZE                     VmbChannelInitSetClientContextSize;
    PFN_VMB_CHANNEL_INIT_SET_FLAGS                                   VmbChannelInitSetFlags;
    PFN_VMB_CHANNEL_INIT_SET_FRIENDLY_NAME                           VmbChannelInitSetFriendlyName;
    PFN_VMB_CHANNEL_INIT_SET_MAXIMUM_EXTERNAL_DATA                   VmbChannelInitSetMaximumExternalData;
    PFN_VMB_CHANNEL_INIT_SET_MAXIMUM_PACKET_SIZE                     VmbChannelInitSetMaximumPacketSize;
    PFN_VMB_CHANNEL_INIT_SET_PROCESS_PACKET_CALLBACKS                VmbChannelInitSetProcessPacketCallbacks;
    PFN_VMB_CHANNEL_INIT_SET_STATE_CHANGE_CALLBACKS                  VmbChannelInitSetStateChangeCallbacks;
    PFN_VMB_CHANNEL_PACKET_COMPLETE                                  VmbChannelPacketComplete;
    PFN_VMB_CHANNEL_PACKET_DEFER_TO_PASSIVE                          VmbChannelPacketDeferToPassive;
    PFN_VMB_CHANNEL_PACKET_FAIL                                      VmbChannelPacketFail;
    PFN_VMB_CHANNEL_PACKET_GET_EXTERNAL_DATA                         VmbChannelPacketGetExternalData;
    PFN_VMB_CHANNEL_PAUSE                                            VmbChannelPause;
    PFN_VMB_CHANNEL_SEND_SYNCHRONOUS_REQUEST                         VmbChannelSendSynchronousRequest;
    PFN_VMB_CHANNEL_SET_INCOMING_PROCESSING_AT_PASSIVE               VmbChannelSetIncomingProcessingAtPassive;
    PFN_VMB_CHANNEL_SET_INTERRUPT_LATENCY                            VmbChannelSetInterruptLatency;
    PFN_VMB_CHANNEL_SET_POINTER                                      VmbChannelSetPointer;
    PFN_VMB_CHANNEL_SET_TRANSACTION_QUOTA                            VmbChannelSetTransactionQuota;
    PFN_VMB_CHANNEL_SIZEOF_PACKET                                    VmbChannelSizeofPacket;
    PFN_VMB_CHANNEL_START                                            VmbChannelStart;
    PFN_VMB_CLIENT_CHANNEL_INIT_SET_RING_BUFFER_PAGE_COUNT           VmbClientChannelInitSetRingBufferPageCount;
    PFN_VMB_CLIENT_CHANNEL_INIT_SET_TARGET_PNP                       VmbClientChannelInitSetTargetPnp;
    PFN_VMB_PACKET_ALLOCATE                                          VmbPacketAllocate;
    PFN_VMB_PACKET_FREE                                              VmbPacketFree;
    PFN_VMB_PACKET_GET_CHANNEL                                       VmbPacketGetChannel;
    PFN_VMB_PACKET_GET_POINTER                                       VmbPacketGetPointer;
    PFN_VMB_PACKET_INITIALIZE                                        VmbPacketInitialize;
    PFN_VMB_PACKET_SEND                                              VmbPacketSend;
    PFN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL                            VmbPacketSendWithExternalMdl;
    PFN_VMB_PACKET_SEND_WITH_EXTERNAL_PFNS                           VmbPacketSendWithExternalPfns;
    PFN_VMB_PACKET_SET_COMPLETION_ROUTINE                            VmbPacketSetCompletionRoutine;
    PFN_VMB_PACKET_SET_POINTER                                       VmbPacketSetPointer;

} KMCL_CLIENT_INTERFACE_V1, *PKMCL_CLIENT_INTERFACE_V1;

Inheritance

The KMCL_CLIENT_INTERFACE_V1 structure implements INTERFACE.

Members

_KMCL_CLIENT_INTERFACE_V1

_KMCL_CLIENT_INTERFACE_V1.VmbChannelAllocate

A pointer to the VmbChannelAllocate function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCleanup

A pointer to the VmbChannelCleanup function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCreateGpadlFromBuffer

A pointer to the VmbChannelCreateGpadlFromBuffer function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCreateGpadlFromMdl

A pointer to the VmbChannelCreateGpadlFromMdl function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelDeleteGpadl

A pointer to the VmbChannelDeleteGpadl function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelDisable

A pointer to the VmbChannelDisable function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelEnable

A pointer to the VmbChannelEnable function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetInterfaceInstance

A pointer to the VmbChannelGetInterfaceInstance function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetMmioSpace

A pointer to the VmbChannelGetMmioSpace function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetPointer

A pointer to the VmbChannelGetPointer function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetClientContextSize

A pointer to the VmbChannelInitSetClientContextSize function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetFlags

A pointer to the VmbChannelInitSetFlags function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetFriendlyName

A pointer to the VmbChannelInitSetFriendlyName function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetMaximumExternalData

A pointer to the VmbChannelInitSetMaximumExternalData function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetMaximumPacketSize

A pointer to the VmbChannelInitSetMaximumPacketSize function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetProcessPacketCallbacks

A pointer to the VmbChannelInitSetProcessPacketCallbacks function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetStateChangeCallbacks

A pointer to the VmbChannelInitSetStateChangeCallbacks function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketComplete

A pointer to the VmbChannelPacketComplete function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketDeferToPassive

A pointer to the VmbChannelPacketDeferToPassive function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketFail

A pointer to the VmbChannelPacketFail function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketGetExternalData

A pointer to the VmbChannelPacketGetExternalData function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPause

A pointer to the VmbChannelPause function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSendSynchronousRequest

A pointer to the VmbChannelPause function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetIncomingProcessingAtPassive

A pointer to the VmbChannelSetIncomingProcessingAtPassive function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetInterruptLatency

A pointer to the VmbChannelSetInterruptLatency function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetPointer

A pointer to the VmbChannelSetPointer function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetTransactionQuota

A pointer to the VmbChannelSetTransactionQuota function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSizeofPacket

A pointer to the VmbChannelSizeofPacket function.

_KMCL_CLIENT_INTERFACE_V1.VmbChannelStart

A pointer to the VmbChannelStart function.

_KMCL_CLIENT_INTERFACE_V1.VmbClientChannelInitSetRingBufferPageCount

A pointer to the VmbClientChannelInitSetRingBufferPageCount function.

_KMCL_CLIENT_INTERFACE_V1.VmbClientChannelInitSetTargetPnp

A pointer to the VmbClientChannelInitSetTargetPnp function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketAllocate

A pointer to the VmbPacketAllocate function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketFree

A pointer to the VmbPacketFree function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketGetChannel

A pointer to the VmbPacketGetChannel function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketGetPointer

A pointer to the VmbPacketGetPointer function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketInitialize

A pointer to the VmbPacketInitialize function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSend

A pointer to the VmbPacketSend function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSendWithExternalMdl

A pointer to the VmbPacketSendWithExternalMdl function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSendWithExternalPfns

A pointer to the VmbPacketSendWithExternalPfns function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSetCompletionRoutine

A pointer to the VmbPacketSetCompletionRoutine function.

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSetPointer

A pointer to the VmbPacketSetPointer function.

C_ASSERT

_KMCL_CLIENT_INTERFACE_V2

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V2

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V2.VmbChannelPacketGetClientContext

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V2.VmbChannelGetTargetDeviceObject

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V2.VmbChannelGetParentDeviceObject

_KMCL_CLIENT_INTERFACE_V2.C_ASSERT

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V3

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V3.VmbChannelInitSetBounceBufferSizes

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V3.VmbChannelAllocateBounceBuffer

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3.C_ASSERT

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_CLIENT_INTERFACE_V4

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_CLIENT_INTERFACE_V4.VmbChannelInitSetMaximumPacketCount

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_CLIENT_INTERFACE_V4.VmbChannelCreateGpadlFromPfnList

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4.C_ASSERT

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4.KMCL_SERVER_INTERFACE_TYPE

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_SERVER_INTERFACE_V1

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_SERVER_INTERFACE_V1._KMCL_SERVER_INTERFACE_V1

_KMCL_CLIENT_INTERFACE_V2._KMCL_CLIENT_INTERFACE_V3._KMCL_CLIENT_INTERFACE_V4._KMCL_SERVER_INTERFACE_V1.C_ASSERT

Remarks

The first member of this structure is an INTERFACE structure that describes the KMCL interface exported by the Vmbuskmcl.sys bus driver.

The function pointers in KMCL_CLIENT_INTERFACE_V1 are called through the VMBus Kernel Mode Client Library (KMCL) interface, provided by the Vmbkmcl.sys bus driver. This structure contains function pointers for client functions.

To access client functions of the KMCL interface, allocate a KMCL_CLIENT_INTERFACE_V1 structure to receive the interface, then call either WdfFdoQueryForInterface or WdfIoTargetQueryForInterface with these parameters:

  • InterfaceType parameter: KMCL_CLIENT_INTERFACE_TYPE
  • Size parameter: sizeof(KMCL_CLIENT_INTERFACE_V1)
  • Version parameter: KMCL_CLIENT_INTERFACE_VERSION_V1

If the interface query function succeeds, the KMCL_CLIENT_INTERFACE_V1 structure contains function pointers that you can use to call VMBus KMCL client functions.

For server-only methods, see the KMCL_SERVER_ONLY_METHODS structure.

For more information about driver-defined interfaces, see Using Driver-Defined Interfaces.

Requirements

   
Minimum supported client Windows 10, version 1803
Header vmbuskernelmodeclientlibapi.h

See also

Using Driver-Defined Interfaces

WdfFdoQueryForInterface

WdfIoTargetQueryForInterface

KMCL_SERVER_ONLY_METHODS