FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL Rückruffunktion (vmbuskernelmodeclientlibapi.h)

[Einige Informationen beziehen sich auf die Vorabversion, die vor der kommerziellen Freigabe möglicherweise wesentlichen Änderungen unterliegt. Microsoft übernimmt für die hier bereitgestellten Informationen keine Gewährleistung, weder ausdrücklicher noch impliziter Art.]

Die VmbPacketSendWithExternalMdl-Funktion sendet die Daten in einem Paketpuffer oder externen Daten memory descriptor List (MDL). Die Funktion ordnet diese Daten dem VMBus-Paketobjekt zu, das das Paket während der gesamten Lebensdauer der Transaktion darstellt.

Syntax

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

Parameter

PacketObject

Ein Handle für das VMBus-Paketobjekt.

Buffer

Ein Puffer, der das Befehlspaket enthält, das über den VMBus-Ringpuffer gesendet wird.

BufferLength

Die Länge des Puffers im Buffer-Parameter in Bytes.

ExternalDataMdl

Eine MDL, die einen dem Paket zugeordneten Datenpuffer beschreibt.

MdlOffset

Der Offset aus dem Puffer, der von der MDL beschrieben wird, in der die Daten beginnen.

MdlLength

Die Länge des zu sendenden Unterpuffers. Verwenden Sie 0 für die gesamte MDL.

Flags

Flaggen. Im Folgenden sind relevante Flags aufgeführt:

Wert Bedeutung
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Dieses Paket kann nicht als abgeschlossen betrachtet werden, und seine Ressourcen können erst freigegeben werden, wenn ein Vervollständigungspaket vom entgegengesetzten Endpunkt zurückkommt. Dieses Flag muss festgelegt werden.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Verwenden Sie immer MdlLength für die Länge der externen Daten-MDL, auch wenn diese Länge länger als das ByteCount-Feld der MDL ist. Dies ermöglicht nur das Überschreiten der Länge der MDL durch Aufrunden auf eine Seitengrenze. Wenn dieses Flag festgelegt ist, wird nur die erste MDL in der MDL-Kette verwendet.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
Der Inlinepuffer ist ausgelagert und muss entsprechend behandelt werden, was bedeutet, dass er vor der Eingabe der DPC-Ebene kopiert werden muss. Das Ermitteln von Puffern im Benutzermodus oder die Behandlung von Zugriffsverletzungen liegt in der Verantwortung des Aufrufers.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist, oder andernfalls einen entsprechenden NTSTATUS-Fehlercode.

Hinweise

Diese Funktion unterscheidet sich von der VmbPacketSend-Funktion dadurch, dass sie das Übergeben eines MDL-Offsets und einer MDL-Länge ermöglicht.

Wichtig

Diese Funktion wird über die KMCL-Schnittstelle (VmBus Kernel Mode Client Library) aufgerufen, die vom Vmbkmcl.sys Bustreiber bereitgestellt wird. Dies ist eine Clientfunktion, auf die über die KMCL_CLIENT_INTERFACE_V1-Struktur zugegriffen wird.

Weitere Informationen finden Sie im Abschnitt Hinweise des KMCL_CLIENT_INTERFACE_V1.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1803
Kopfzeile vmbuskernelmodeclientlibapi.h

Weitere Informationen

VmbPacketSend