// vmbuskernelmodeclientlibapi.h
FN_VMB_CHANNEL_SEND_SYNCHRONOUS_REQUEST FnVmbChannelSendSynchronousRequest;
NTSTATUS FnVmbChannelSendSynchronousRequest(
VMBCHANNEL Channel,
PVOID Buffer,
UINT32 BufferSize,
PMDL ExternalDataMdl,
UINT32 Flags,
PVOID CompletionBuffer,
PUINT32 CompletionBufferSize,
PLARGE_INTEGER Timeout
)
{...}
View the official Windows Driver Kit DDI referenceNo description available.
[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 VmbChannelSendSynchronousRequest function sends a packet to the opposite endpoint and waits for a response.
ChannelA handle for the channel.
BufferData to send.
BufferSizeThe size, in bytes, of the data to send.
ExternalDataMdlA Memory Descriptor List (MDL) that describes an additional buffer to send.
FlagsStandard flags.
CompletionBufferBuffer in which to store completion packet results.
CompletionBufferSizeThe size, in bytes, of the CompletionBuffer value. This value must be rounded up to nearest 8 bytes, or else the function fails. On success, returns the number of bytes written into CompletionBuffer.
TimeoutA timeout in the style of the KeWaitForSingleObject routing. After this time elapses, the packet is cancelled. For a timeout of zero (0), if a packet does not fir in the ring buffer, it is not queued.
| Return code | Description |
|---|---|
| STATUS_SUCCESS | The functions finished successfully. |
| STATUS_BUFFER_OVERFLOW | The packet did not fit in the buffer and was not queued. |
| STATUS_CANCELLED | The packet was canceled. |
| STATUS_DEVICE_REMOVED | The channel is being shut down. |
//Declaration
FN_VMB_CHANNEL_SEND_SYNCHRONOUS_REQUEST FnVmbChannelSendSynchronousRequest;
// Definition
NTSTATUS FnVmbChannelSendSynchronousRequest
(
VMBCHANNEL Channel
PVOID Buffer
UINT32 BufferSize
PMDL ExternalDataMdl
UINT32 Flags
PVOID CompletionBuffer
PUINT32 CompletionBufferSize
PLARGE_INTEGER Timeout
)
{...}
Clients can run this function with any combination of parameters.
The root may only call
this if *Timeout == 0 and the VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION flag is not set.
[!IMPORTANT] This function is called through the VMBus Kernel Mode Client Library (KMCL) interface, provided by the Vmbkmcl.sys bus driver. This is a client function accessed from the KMCL_CLIENT_INTERFACE_V1 structure.
For more information, see the Remarks section of the KMCL_CLIENT_INTERFACE_V1.