Condividi tramite


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL funzione di callback (vmbuskernelmodeclientlibapi.h)

[Alcune informazioni riguardano il prodotto non rilasciato che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce garanzie, esplicite o implicite, relativamente alle informazioni fornite qui.

La funzione VmbPacketSendWithExternalMdl invia i dati in un buffer di pacchetti o in un elenco MDL (Data Memory Descriptor List). La funzione associa tali dati all'oggetto pacchetto VMBus, che rappresenta il pacchetto per 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 circolare 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 dal file MDL in cui iniziano i dati.

MdlLength

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

Flags

Bandiere. Di seguito sono riportati i 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 fino a quando un pacchetto di completamento non viene restituito dall'endpoint opposto. Questo flag deve essere impostato.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Usare sempre MdlLength per la lunghezza del file MDL di dati esterni, anche se questa lunghezza è più lunga del campo ByteCount del linguaggio MDL. Ciò consente solo di superare la lunghezza del file 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 paging e deve essere trattato di conseguenza, il che significa che deve essere copiato prima di entrare a livello DPC. Il probe dei buffer in modalità utente o la gestione delle violazioni di accesso è responsabilità del chiamante.

Valore restituito

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

Osservazioni

Questa funzione è diversa dalla funzione VmbPacketSend in quanto 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 a cui si accede dalla struttura KMCL_CLIENT_INTERFACE_V1.

Per altre informazioni, vedere la sezione Osservazioni del KMCL_CLIENT_INTERFACE_V1.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1803
intestazione vmbuskernelmodeclientlibapi.h

Vedere anche

VmbPacketSend