Compartir a través de


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL función de devolución de llamada (vmbuskernelmodeclientlibapi.h)

[Cierta información se relaciona con el producto publicado previamente que puede modificarse sustancialmente antes de su publicación comercial. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.]

La función VmbPacketSendWithExternalMdl envía los datos en un búfer de paquetes o en una lista de descriptores de memoria de datos externos (MDL). La función asocia esos datos al objeto de paquete VMBus, que representa el paquete durante toda la vigencia de la transacción.

Sintaxis

FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL FnVmbPacketSendWithExternalMdl;

NTSTATUS FnVmbPacketSendWithExternalMdl(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PMDL ExternalDataMdl,
  UINT32 MdlOffset,
  UINT32 MdlLength,
  UINT32 Flags
)
{...}

Parámetros

PacketObject

Identificador del objeto de paquete VMBus.

Buffer

Búfer que contiene el paquete de comandos que se envía a través del búfer del anillo VMBus.

BufferLength

Longitud, en bytes, del búfer en el parámetro buffer de.

ExternalDataMdl

MdL que describe un búfer de datos asociado al paquete.

MdlOffset

Desplazamiento del búfer descrito por mdL donde se inician los datos.

MdlLength

Longitud del subbúfer que se va a enviar. Use 0 para toda la MDL.

Flags

Banderas. A continuación se muestran marcas pertinentes:

Valor Significado
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Este paquete no se puede considerar completo y sus recursos no se pueden liberar hasta que un paquete de finalización vuelva del punto de conexión opuesto. Esta marca debe establecerse.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Use siempre mdlLength para la longitud de los datos externos MDL, incluso si esta longitud es mayor que el campo de ByteCount de MDL. Esto solo permite superar la longitud de la MDL redondeando hasta un límite de página. Si se establece esta marca, solo se usa la primera MDL de la cadena MDL.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
El búfer insertado se pagina y debe tratarse en consecuencia, lo que significa que debe copiarse antes de entrar en el nivel DPC. Sondear búferes en modo de usuario o controlar las infracciones de acceso es responsabilidad del autor de la llamada.

Valor devuelto

Devuelve STATUS_SUCCESS si la operación se realiza correctamente o un código de error NTSTATUS adecuado de lo contrario.

Observaciones

Esta función difiere de la función de VmbPacketSend en que permite pasar un desplazamiento MDL y una longitud MDL.

Importante

Esta función se llama a través de la interfaz de la biblioteca cliente del modo kernel (KMCL) de VMBus, proporcionada por el controlador de bus de Vmbkmcl.sys. Se trata de una función cliente a la que se accede desde la estructura KMCL_CLIENT_INTERFACE_V1.

Para obtener más información, vea la sección Comentarios de la KMCL_CLIENT_INTERFACE_V1.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10, versión 1803
encabezado de vmbuskernelmodeclientlibapi.h

Consulte también

VmbPacketSend