KMCL_SERVER_ONLY_METHODS structure (vmbuskernelmodeclientlibapi.h)

The KMCL_SERVER_ONLY_METHODS structure contains function pointers for server-only 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_SERVER_ONLY_METHODS {
  PFN_VMB_CHANNEL_MAP_GPADL                                     VmbChannelMapGpadl;
  PFN_VMB_CHANNEL_RESTORE_FROM_BUFFER                           VmbChannelRestoreFromBuffer;
  PFN_VMB_CHANNEL_SAVE_BEGIN                                    VmbChannelSaveBegin;
  PFN_VMB_CHANNEL_SAVE_CONTINUE                                 VmbChannelSaveContinue;
  PFN_VMB_CHANNEL_SAVE_END                                      VmbChannelSaveEnd;
  PFN_VMB_CHANNEL_UNMAP_GPADL                                   VmbChannelUnmapGpadl;
  PFN_VMB_CONVERT_VMBUS_HANDLE_TO_KERNEL_HANDLE                 VmbConvertVmbusHandleToKernelHandle;
  PFN_VMB_PACKET_RESTORE                                        VmbPacketRestore;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_FLAGS                         VmbServerChannelInitSetFlags;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_MMIO_MEGABYTES                VmbServerChannelInitSetMmioMegabytes;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_SAVE_RESTORE_PACKET_CALLBACKS VmbServerChannelInitSetSaveRestorePacketCallbacks;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_TARGET_INTERFACE_ID           VmbServerChannelInitSetTargetInterfaceId;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_TARGET_VTL                    VmbServerChannelInitSetTargetVtl;
  PFN_VMB_SERVER_CHANNEL_INIT_SET_VMBUS_HANDLE                  VmbServerChannelInitSetVmbusHandle;
} KMCL_SERVER_ONLY_METHODS;

Members

VmbChannelMapGpadl

A pointer to the VmbChannelMapGpadl function.

VmbChannelRestoreFromBuffer

A pointer to the VmbChannelRestoreFromBuffer function.

VmbChannelSaveBegin

A pointer to the VmbChannelSaveBegin function.

VmbChannelSaveContinue

A pointer to the VmbChannelSaveContinue function.

VmbChannelSaveEnd

A pointer to the VmbChannelSaveEnd function.

VmbChannelUnmapGpadl

A pointer to the VmbChannelUnmapGpadl function.

VmbConvertVmbusHandleToKernelHandle

A pointer to the VmbConvertVmbusHandleToKernelHandle function.

VmbPacketRestore

A pointer to the VmbPacketRestore function.

VmbServerChannelInitSetFlags

A pointer to the VmbServerChannelInitSetFlags function.

VmbServerChannelInitSetMmioMegabytes

A pointer to the VmbServerChannelInitSetMmioMegabytes function.

VmbServerChannelInitSetSaveRestorePacketCallbacks

A pointer to the VmbServerChannelInitSetSaveRestorePacketCallbacks function.

VmbServerChannelInitSetTargetInterfaceId

A pointer to the VmbServerChannelInitSetTargetInterfaceId function.

VmbServerChannelInitSetTargetVtl

A pointer to the VmbServerChannelInitSetTargetVtl function.

VmbServerChannelInitSetVmbusHandle

A pointer to the VmbServerChannelInitSetVmbusHandle function.

Remarks

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

To access both client and server-only functions of the KMCL interface, allocate a KMCL_SERVER_INTERFACE_V1 structure to receive the interface, then call either WdfFdoQueryForInterface or WdfIoTargetQueryForInterface with these parameters:

  • InterfaceType parameter: KMCL_SERVER_INTERFACE_TYPE
  • Size parameter: sizeof(KMCL_SERVER_INTERFACE_V1)
  • Version parameter: KMCL_SERVER_INTERFACE_VERSION_V1

The KMCL_SERVER_INTERFACE_V1 structure is defined as follows for C language code:

typedef struct _KMCL_SERVER_INTERFACE_V1 {
    KMCL_CLIENT_INTERFACE_V1;
    KMCL_SERVER_ONLY_METHODS;
} KMCL_SERVER_INTERFACE_V1, *PKMCL_SERVER_INTERFACE_V1;

If the interface query function succeeds, the KMCL_SERVER_INTERFACE_V1 structure contains both a KMCL_CLIENT_INTERFACE_V1 structure and a KMCL_SERVER_ONLY_METHODS structure. The KMCL_SERVER_ONLY_METHODS structure contains function pointers that you can use to call VMBus KMCL server-only functions.

For KMCL client methods, see the KMCL_CLIENT_INTERFACE_V1 structure.

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

Requirements

Requirement Value
Minimum supported client Windows 10, version 1809
Header vmbuskernelmodeclientlibapi.h

See also

Using Driver-Defined Interfaces

WdfFdoQueryForInterface

WdfIoTargetQueryForInterface

KMCL_CLIENT_INTERFACE_V1