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