structure NDK_SGE (ndkpi.h)

La structure NDK_SGE spécifie les mémoires tampons locales pour les demandes de travail NDK.

Syntaxe

typedef struct _NDK_SGE {
  union {
    PVOID               VirtualAddress;
    NDK_LOGICAL_ADDRESS LogicalAddress;
  };
  ULONG  Length;
  UINT32 MemoryRegionToken;
} NDK_SGE;

Membres

VirtualAddress

Adresse virtuelle.

LogicalAddress

Adresse logique.

Length

Longueur, en octets, de la mémoire tampon.

MemoryRegionToken

Jeton de région de mémoire. Lorsque MemoryRegionToken est défini sur le jeton retourné par NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), le NDK_SGE doit contenir une adresse logique. Lorsque MemoryRegionToken n’est pas égal au jeton retourné par NdkGetPrivilegedMemoryRegionToken, la structure NDK_SGE doit contenir une VirtualAddress. Lorsqu’une structure NDK_SGE est utilisée dans une demande de travail avec l’indicateur NDK_OP_FLAG_INLINE , MemoryRegionToken peut ne pas être valide. Pour plus d’informations sur MemoryRegionToken, consultez la section remarques.

Remarques

La structure NDK_SGE spécifie les mémoires tampons locales pour l’envoi, la réception, la lecture et l’écriture des demandes de travail.

Lorsque le membre MemoryRegionToken est défini sur le jeton retourné par NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), le NDK_SGE doit contenir une adresse logique retournée par la fonction NdkBuildLam (NDK_FN_BUILD_LAM) avec la structure NDK_LOGICAL_ADDRESS_MAPPING . Notez que les entrées consécutives dans le membre AdapterPageArray d’un NDK_LOGICAL_ADDRESS_MAPPING ne sont pas nécessairement des pages contiguës dans l’espace d’adressage logique de l’adaptateur. Par conséquent, un consommateur NDK peut utiliser plusieurs SGE pour couvrir toutes les pages d’un tableau de pages d’adaptateur.

Lorsque le jeton du membre MemoryRegionToken n’est pas égal au jeton retourné par NdkGetPrivilegedMemoryRegionToken, la structure NDK_SGE doit contenir une adresse virtuelle qui se trouve dans l’étendue d’adresse virtuelle d’une région de mémoire précédemment inscrite.

Lorsqu’une structure de NDK_SGE est utilisée dans une demande de travail avec l’indicateur NDK_OP_FLAG_INLINE , le jeton dans MemoryRegionToken peut ne pas être valide, il doit donc être ignoré par le fournisseur NDK. Lorsque l’indicateur de NDK_OP_FLAG_INLINE est spécifié, le membre VirtualAddress de toute structure de NDK_SGE passée à la fonction de demande de travail doit pointer vers une mémoire tampon accessible par le fournisseur NDK à un IRQL inférieur ou égal à DISPATCH_LEVEL. Autrement dit, la mémoire tampon doit être garantie de résider dans la mémoire physique jusqu’à ce que la fonction de demande de travail soit retournée. La taille totale des données inline passées au fournisseur dans un seul appel ne doit pas dépasser la valeur dans le paramètre InlineDataSize qui a été spécifié lors de la création de la paire de files d’attente (QP).

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge, pris en charge dans NDIS 6.30 et versions ultérieures.
Serveur minimal pris en charge Windows Server 2012
En-tête ndkpi.h (inclure Ndkpi.h)

Voir aussi

Exigences relatives à la durée de vie des objets NDKPI

NDK_FN_BUILD_LAM

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_FN_READ

NDK_FN_RECEIVE

NDK_FN_SEND

NDK_FN_SRQ_RECEIVE

NDK_FN_WRITE

NDK_LOGICAL_ADDRESS_MAPPING