FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL fonction de rappel (vmbuskernelmodeclientlibapi.h)

[Certaines informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.]

La fonction VmbPacketSendWithExternalMdl envoie les données dans une mémoire tampon de paquets ou une liste de descripteurs de mémoire de données externes (MDL). La fonction associe ces données à l’objet de paquet VMBus, qui représente le paquet tout au long de la durée de vie de la transaction.

Syntaxe

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

Paramètres

PacketObject

Handle de l’objet de paquet VMBus.

Buffer

Mémoire tampon qui contient le paquet de commande envoyé via la mémoire tampon en anneau VMBus.

BufferLength

Longueur, en octets, de la mémoire tampon dans le paramètre Buffer .

ExternalDataMdl

MdL qui décrit une mémoire tampon de données associée au paquet.

MdlOffset

Décalage de la mémoire tampon décrite par le MDL où les données démarrent.

MdlLength

Longueur de la sous-mémoire tampon à envoyer. Utilisez 0 pour l’ensemble du MDL.

Flags

Drapeaux. Voici les indicateurs pertinents :

Valeur Signification
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Ce paquet ne peut pas être considéré comme terminé et ses ressources ne peuvent pas être libérées tant qu’un paquet d’achèvement ne revient pas du point de terminaison opposé. Cet indicateur doit être défini.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Utilisez toujours MdlLength pour la longueur des données externes MDL, même si cette longueur est plus longue que le champ ByteCount du MDL. Cela permet uniquement de dépasser la longueur de la MDL en arrondissant à une limite de page. Si cet indicateur est défini, seule la première mdl de la chaîne MDL est utilisée.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
La mémoire tampon inline est paginée et doit être traitée en conséquence, ce qui signifie qu’elle doit être copiée avant d’entrer au niveau DPC. L’interrogation des mémoires tampons en mode utilisateur ou la gestion des violations d’accès sont de la responsabilité de l’appelant.

Valeur retournée

Retourne STATUS_SUCCESS si l’opération réussit, ou un code d’erreur NTSTATUS approprié dans le cas contraire.

Remarques

Cette fonction diffère de la fonction VmbPacketSend en ce qu’elle permet de passer un décalage MDL et une longueur MDL.

Important

Cette fonction est appelée via l’interface KMCL (Kernel Mode Client Library) VMBus, fournie par le pilote de bus Vmbkmcl.sys. Il s’agit d’une fonction cliente accessible à partir de la structure KMCL_CLIENT_INTERFACE_V1 .

Pour plus d’informations, consultez la section Remarques du KMCL_CLIENT_INTERFACE_V1.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1803
En-tête vmbuskernelmodeclientlibapi.h

Voir aussi

VmbPacketSend