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;

Members

_KMCL_CLIENT_INTERFACE_V1

_KMCL_CLIENT_INTERFACE_V1.VmbChannelAllocate

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCleanup

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCreateGpadlFromBuffer

_KMCL_CLIENT_INTERFACE_V1.VmbChannelCreateGpadlFromMdl

_KMCL_CLIENT_INTERFACE_V1.VmbChannelDeleteGpadl

_KMCL_CLIENT_INTERFACE_V1.VmbChannelDisable

_KMCL_CLIENT_INTERFACE_V1.VmbChannelEnable

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetInterfaceInstance

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetMmioSpace

_KMCL_CLIENT_INTERFACE_V1.VmbChannelGetPointer

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetClientContextSize

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetFlags

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetFriendlyName

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetMaximumExternalData

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetMaximumPacketSize

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetProcessPacketCallbacks

_KMCL_CLIENT_INTERFACE_V1.VmbChannelInitSetStateChangeCallbacks

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketComplete

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketDeferToPassive

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketFail

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPacketGetExternalData

_KMCL_CLIENT_INTERFACE_V1.VmbChannelPause

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSendSynchronousRequest

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetIncomingProcessingAtPassive

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetInterruptLatency

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetPointer

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSetTransactionQuota

_KMCL_CLIENT_INTERFACE_V1.VmbChannelSizeofPacket

_KMCL_CLIENT_INTERFACE_V1.VmbChannelStart

_KMCL_CLIENT_INTERFACE_V1.VmbClientChannelInitSetRingBufferPageCount

_KMCL_CLIENT_INTERFACE_V1.VmbClientChannelInitSetTargetPnp

_KMCL_CLIENT_INTERFACE_V1.VmbPacketAllocate

_KMCL_CLIENT_INTERFACE_V1.VmbPacketFree

_KMCL_CLIENT_INTERFACE_V1.VmbPacketGetChannel

_KMCL_CLIENT_INTERFACE_V1.VmbPacketGetPointer

_KMCL_CLIENT_INTERFACE_V1.VmbPacketInitialize

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSend

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSendWithExternalMdl

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSendWithExternalPfns

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSetCompletionRoutine

_KMCL_CLIENT_INTERFACE_V1.VmbPacketSetPointer

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 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