Freigeben über


NET_ADAPTER_RX_CAPABILITIES-Struktur (netadapter.h)

Die NET_ADAPTER_RX_CAPABILITIES-Struktur beschreibt die Empfangsfunktionen eines Netzadapters.

Syntax

typedef struct _NET_ADAPTER_RX_CAPABILITIES {
  ULONG                                  Size;
  NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE AllocationMode;
  NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE AttachmentMode;
  UINT32                                 FragmentRingNumberOfElementsHint;
  SIZE_T                                 MaximumFrameSize;
  SIZE_T                                 MaximumNumberOfQueues;
  union {
    struct {
      PFN_NET_ADAPTER_RETURN_RX_BUFFER EvtAdapterReturnRxBuffer;
    } DUMMYSTRUCTNAME;
    struct {
      NET_MEMORY_MAPPING_REQUIREMENT MappingRequirement;
      SIZE_T                         FragmentBufferAlignment;
      NET_ADAPTER_DMA_CAPABILITIES   *DmaCapabilities;
    } DUMMYSTRUCTNAME2;
  } DUMMYUNIONNAME;
} NET_ADAPTER_RX_CAPABILITIES;

Member

Size

Die Größe dieser Struktur in Bytes.

AllocationMode

Ein NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE Wert, der angibt, wie das Betriebssystem Empfangspuffer zuordnen soll.

UMDF-Treiber müssen diesen Wert auf NetRxFragmentBufferAllocationModeSystem festlegen.

AttachmentMode

Ein NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE Wert, der angibt, wie das Betriebssystem Empfangspuffer vorab anfügen soll.

UMDF-Treiber müssen diesen Wert auf NetRxFragmentBufferAttachmentModeSystem festlegen.

FragmentRingNumberOfElementsHint

Ein Hinweis, der angibt, wie viele Elemente der Adapter für den Ringpuffer jeder Empfangswarteschlange NET_FRAGMENTbenötigt. Dieses Element muss eine Stärke von 2 sein.

MaximumFrameSize

Die maximale Framegröße in Bytes, die der Adapter empfangen kann. Dieser Wert sollte die maximale MTU-Größe (Transmission Unit) enthalten, die Ihre Hardware für ein IP-Paket unterstützt, sowie zusätzlichen Speicherplatz, den Ihr Treiber möglicherweise für Paketmetadaten benötigt. Weitere Informationen finden Sie im Empfangsbeispiel im Abschnitt Hinweise von EVT_PACKET_QUEUE_ADVANCE.

MaximumNumberOfQueues

Die maximale Anzahl von Empfangswarteschlangen, die der Adapter unterstützt.

DUMMYUNIONNAME

Eine Union, die die folgenden Elemente enthält:

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Eine Struktur, die das folgende Element enthält:

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EvtAdapterReturnRxBuffer

Ein Zeiger auf die EVT_NET_ADAPTER_RETURN_RX_BUFFER Rückruffunktion des Treibers. Dieser Member ist erforderlich, wenn das AllocationMode-Element auf NetRxFragmentBufferAllocationModeDriver festgelegt ist, damit das Betriebssystem aufrufen kann, sobald das System mit dem Empfangspuffer abgeschlossen ist.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

Eine Struktur, die die folgenden Elemente enthält:

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.MappingRequirement

Ein NET_MEMORY_MAPPING_REQUIREMENT Wert, der angibt, wie das Betriebssystem Empfangsdatenpuffer zuordnen soll.

UMDF-Treiber müssen MappingRequirement auf NetMemoryMappingRequirementNone festlegen.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

Die minimale Ausrichtung für Paketfragmente. Dieses Element muss eine Stärke von 2 sein.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

Ein Zeiger auf eine vom Treiber zugewiesene und initialisierte NET_DMA_CAPABILITIES Struktur, die die DMA-Funktionen des Adapters im Empfangspfad beschreibt. Dieses Element wird von NetAdapterCx ignoriert, wenn MappingRequirement nicht auf NetMemoryMappingRequirementDmaMapped festgelegt ist.

UMDF NetAdapterCX unterstützt DmaCapabilities nicht. UMDF-Treiber müssen diesen Member auf NULL festlegen.

Hinweise

Rufen Sie eine der NET_ADAPTER_RX_CAPABILITIES_INIT_XXX-Funktionen auf, um diese Struktur zu initialisieren. Weitere Informationen zu den einzelnen Initialisierungsfunktionen finden Sie unter den Links im Abschnitt Siehe auch. Eine initialisierte NET_ADAPTER_RX_CAPABILITIES Struktur wird als Parameter an NetAdapterSetDatapathCapabilities übergeben.

In der Regel führt ein Clienttreiber entweder die Zuordnung und die Anlage selbst aus oder gibt an, dass das Betriebssystem beides ausführt. In den meisten Fällen wird empfohlen, dass das Betriebssystem Empfangspuffer zuordnet und anfügt.

Wenn der Client treiberseitig zugeordnete und angefügte Empfangspuffer angibt, muss er sowohl eine benutzerdefinierte Rückgabekontextstruktur im RxBufferReturnContext-Member jedes NET_FRAGMENT während der Pufferzuordnung als auch eine EVT_NET_ADAPTER_RETURN_RX_BUFFER Rückruffunktion in dieser NET_ADAPTER_RX_CAPABILITIES Struktur bereitstellen, damit das Betriebssystem aufrufen kann, sobald es mit dem Puffer fertig ist.

Anforderungen

Anforderung Wert
KMDF-Mindestversion 1,25
UMDF-Mindestversion 2.33
Kopfzeile netadapter.h (include netadaptercx.h)

Weitere Informationen

NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED_DMA

NetAdapterSetDatapathCapabilities