NDK_SGE-Struktur (ndkpi.h)

Die NDK_SGE-Struktur gibt die lokalen Puffer für NDK-Arbeitsanforderungen an.

Syntax

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

Member

VirtualAddress

Eine virtuelle Adresse.

LogicalAddress

Eine logische Adresse.

Length

Die Länge des Puffers in Bytes.

MemoryRegionToken

Ein Speicherbereichstoken. Wenn MemoryRegionToken auf das von NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) zurückgegebene Token festgelegt ist, muss die NDK_SGE eine LogicalAddress enthalten. Wenn MemoryRegionToken nicht dem von NdkGetPrivilegedMemoryRegionToken zurückgegebenen Token entspricht, muss die NDK_SGE-Struktur eine VirtualAddress enthalten. Wenn eine NDK_SGE-Struktur in einer Arbeitsanforderung mit dem NDK_OP_FLAG_INLINE-Flag verwendet wird, ist MemoryRegionToken möglicherweise ungültig. Weitere Informationen zum MemoryRegionToken finden Sie im Abschnitt mit den Hinweisen.

Hinweise

Die NDK_SGE-Struktur gibt die lokalen Puffer für Sende-, Empfangs-, Lese- und Schreibanforderungen an.

Wenn das MemoryRegionToken-Element auf das von NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) zurückgegebene Token festgelegt ist, muss der NDK_SGE eine logische Adresse enthalten, die von der NdkBuildLam-Funktion (NDK_FN_BUILD_LAM) mit der NDK_LOGICAL_ADDRESS_MAPPING-Struktur zurückgegeben wird. Beachten Sie, dass aufeinanderfolgende Einträge im AdapterPageArray-Member einer NDK_LOGICAL_ADDRESS_MAPPING nicht unbedingt zusammenhängende Seiten im logischen Adressraum des Adapters sind. Daher kann ein NDK-Consumer mehrere SGEs verwenden, um alle Seiten in einem Adapterseitenarray abzudecken.

Wenn das Token im MemoryRegionToken-Element nicht gleich dem Token ist, das von NdkGetPrivilegedMemoryRegionToken zurückgegeben wird, muss die NDK_SGE struktur eine virtuelle Adresse enthalten, die innerhalb der virtuellen Adressspanne eines zuvor registrierten Speicherbereichs liegt.

Wenn eine NDK_SGE-Struktur in einer Arbeitsanforderung mit dem NDK_OP_FLAG_INLINE-Flag verwendet wird, ist das Token in MemoryRegionToken möglicherweise ungültig, sodass es vom NDK-Anbieter ignoriert werden muss. Wenn das flag NDK_OP_FLAG_INLINE angegeben wird, muss das VirtualAddress-Element einer NDK_SGE Struktur, die an die Arbeitsanforderungsfunktion übergeben wird, auf einen Puffer verweisen, auf den der NDK-Anbieter bei einem IRQL-Wert zugreifen kann, der kleiner als oder gleich DISPATCH_LEVEL ist. Das heißt, der Puffer muss garantiert im physischen Arbeitsspeicher sein, bis die Arbeitsanforderungsfunktion zurückgegeben wird. Die Gesamtgröße der Inlinedaten, die in einem einzelnen Aufruf an den Anbieter übergeben werden, darf den Wert im InlineDataSize-Parameter nicht überschreiten, der beim Erstellen des Warteschlangenpaars (QP) angegeben wurde.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Keine unterstützt, unterstützt in NDIS 6.30 und höher.
Unterstützte Mindestversion (Server) Windows Server 2012
Kopfzeile ndkpi.h (Ndkpi.h einschließen)

Weitere Informationen

Anforderungen an die Lebensdauer des NDKPI-Objekts

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