Condividi tramite


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL funzione di callback (vmbuskernelmodeclientlibapi.h)

[Alcune informazioni si riferiscono al prodotto pre-rilasciato che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non offre garanzie, esplicite o implicite, rispetto alle informazioni fornite qui.

La funzione VmbPacketSendWithExternalMdl invia i dati in un buffer di pacchetti o in un elenco MDL (External Data Memory Descriptor List). La funzione associa tali dati all'oggetto pacchetto VMBus, che rappresenta il pacchetto durante tutta la durata della transazione.

Sintassi

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
)
{...}

Parametri

PacketObject

Handle per l'oggetto pacchetto VMBus.

Buffer

Buffer che contiene il pacchetto di comando inviato tramite il buffer dell'anello vmBus.

BufferLength

Lunghezza, in byte, del buffer nel parametro Buffer .

ExternalDataMdl

MDL che descrive un buffer di dati associato al pacchetto.

MdlOffset

Offset dal buffer descritto dall'oggetto MDL in cui iniziano i dati.

MdlLength

Lunghezza del buffer secondario da inviare. Usare 0 per l'intero MDL.

Flags

Bandiere. Di seguito sono riportati flag pertinenti:

Valore Significato
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Questo pacchetto non può essere considerato completo e le relative risorse non possono essere rilasciate finché non viene restituito un pacchetto di completamento dall'endpoint opposto. Questo flag deve essere impostato.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Usare sempre MdlLength per la lunghezza del MDL dati esterni, anche se questa lunghezza è più lunga del campo ByteCount dell'MDL. Ciò consente solo di superare la lunghezza del MDL arrotondando fino a un limite di pagina. Se questo flag è impostato, viene usato solo il primo MDL nella catena MDL.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
Il buffer inline viene paginato e deve essere trattato di conseguenza, il che significa che deve essere copiato prima di immettere il livello DPC. La verifica dei buffer in modalità utente o la gestione delle violazioni di accesso è la responsabilità del chiamante.

Valore restituito

Restituisce STATUS_SUCCESS se l'operazione ha esito positivo o un codice di errore NTSTATUS appropriato in caso contrario.

Commenti

Questa funzione differisce dalla funzione VmbPacketSend in cui consente di passare un offset MDL e una lunghezza MDL.

Importante

Questa funzione viene chiamata tramite l'interfaccia VMBus Kernel Mode Client Library (KMCL), fornita dal driver del bus di Vmbkmcl.sys. Si tratta di una funzione client accessibile dalla struttura KMCL_CLIENT_INTERFACE_V1 .

Per altre informazioni, vedere la sezione Osservazioni della KMCL_CLIENT_INTERFACE_V1.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1803
Intestazione vmbuskernelmodeclientlibapi.h

Vedi anche

VmbPacketSend