Partager via


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 un LogicalAddress. Quand MemoryRegionToken n’est pas égal au jeton retourné par NdkGetPrivilegedMemoryRegionToken, la structure NDK_SGE doit contenir un VirtualAddress. Lorsqu’une structure NDK_SGE est utilisée dans une requête de travail avec l’indicateur NDK_OP_FLAG_INLINE, MemoryRegionToken peut ne pas être valide. Pour plus d’informations sur la MemoryRegionToken, consultez la section notes.

Remarques

La structure NDK_SGE spécifie les mémoires tampons locales pour les demandes d’envoi, de réception, de lecture et d’écriture 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 AdapterPageArray membre d’un NDK_LOGICAL_ADDRESS_MAPPING ne sont pas nécessairement contiguës dans l’espace d’adressage logique de l’adaptateur. Par conséquent, un consommateur NDK peut utiliser plusieurs sgEs pour couvrir toutes les pages d’un tableau de pages d’adaptateur.

Lorsque le jeton de l'MemoryRegionToken membre 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 NDK_SGE est utilisée dans une demande de travail avec l’indicateur de 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 NDK_OP_FLAG_INLINE est spécifié, le VirtualAddress membre de n’importe quelle structure NDK_SGE passée à la fonction de demande de travail doit pointer vers une mémoire tampon accessible par le fournisseur NDK à un runtime d’intégration (IRQL) inférieur ou égal à DISPATCH_LEVEL, Autrement dit, la mémoire tampon doit être garantie d’être résidente dans la mémoire physique jusqu’à ce que la fonction de demande de travail retourne. La taille totale des données inline transmises au fournisseur dans un seul appel ne doit pas dépasser la valeur dans la Paramètre InlineDataSize spécifié lors de la création de la paire de files d’attente (QP).

Exigences

Exigence Valeur
client minimum pris en charge Aucune prise en charge, prise en charge dans NDIS 6.30 et versions ultérieures.
serveur minimum pris en charge Windows Server 2012
d’en-tête ndkpi.h (include Ndkpi.h)

Voir aussi

exigences de 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