Freigeben über


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL Rückruffunktion (vmbuskernelmodeclientlibapi.h)

[Einige Informationen beziehen sich auf vorab veröffentlichte Produkte, die vor der kommerziellen Veröffentlichung erheblich geändert werden können. Microsoft übernimmt keine Gewährleistungen, ausdrücklich oder konkludent in Bezug auf die hier bereitgestellten Informationen.]

Die VmbPacketSendWithExternalMdl Funktion sendet die Daten in einem Paketpuffer oder einer Speicherbeschreibungsliste für externe 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 Byte.

ExternalDataMdl

Eine MDL, die einen dem Paket zugeordneten Datenpuffer beschreibt.

MdlOffset

Der Offset aus dem puffer, der von der MDL beschrieben wird, wo 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 vollständig betrachtet werden, und seine Ressourcen können erst freigegeben werden, wenn ein Vervollständigungspaket vom entgegengesetzten Endpunkt zurückkommt. Dieses Kennzeichen muss festgelegt werden.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Verwenden Sie immer MdlLength für die Länge der MDL für externe Daten, auch wenn diese Länge länger als das ByteCount Feld der MDL ist. Dadurch wird nur die Länge der MDL überschritten, indem sie auf eine Seitengrenze aufgerundet wird. Wenn dieses Flag festgelegt ist, wird nur die erste MDL in der MDL-Kette verwendet.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
Der Inlinepuffer wird ausgelagert und muss entsprechend behandelt werden. Dies bedeutet, dass er kopiert werden muss, bevor er die DPC-Ebene eingibt. Das Probingen von Benutzermoduspuffern oder die Behandlung von Zugriffsverletzungen liegt in der Verantwortung des Aufrufers.

Rückgabewert

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

Bemerkungen

Diese Funktion unterscheidet sich von der VmbPacketSend- Funktion, in der 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
mindestens unterstützte Client- Windows 10, Version 1803
Header- vmbuskernelmodeclientlibapi.h

Siehe auch

VmbPacketSend-