NET_ADAPTER_RX_CAPABILITIES structure (netadapter.h)

La structure NET_ADAPTER_RX_CAPABILITIES décrit les fonctionnalités de réception d’un adaptateur réseau.

Syntaxe

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;

Membres

Size

Taille de cette structure, en octets.

AllocationMode

Valeur NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE qui spécifie comment le système d’exploitation doit allouer les mémoires tampons de réception.

AttachmentMode

Valeur NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE qui spécifie comment le système d’exploitation doit pré-attacher les mémoires tampons de réception.

FragmentRingNumberOfElementsHint

Indicateur indiquant le nombre d’éléments souhaités par l’adaptateur pour chaque mémoire tampon d’anneau de NET_FRAGMENTde la file d’attente de réception. Ce membre doit être un pouvoir de 2.

MaximumFrameSize

Taille d’image maximale, en octets, que l’adaptateur peut recevoir. Cette valeur doit inclure la taille maximale d’unité de transmission (MTU) prise en charge par votre matériel pour un paquet IP, ainsi que l’espace supplémentaire dont votre pilote peut avoir besoin pour les métadonnées de paquets. Pour plus d’informations, consultez l’exemple de réception dans la section Remarques de EVT_PACKET_QUEUE_ADVANCE.

MaximumNumberOfQueues

Nombre maximal de files d’attente de réception que l’adaptateur prend en charge.

DUMMYUNIONNAME

Union qui contient les membres suivants :

DUMMYUNIONNAME.DUMMYSTRUCTNAME

struct qui contient le membre suivant :

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EvtAdapterReturnRxBuffer

Pointeur vers la fonction de rappel EVT_NET_ADAPTER_RETURN_RX_BUFFER du pilote. Ce membre est requis si le membre AllocationMode est défini sur NetRxFragmentBufferAllocationModeDriver pour que le système d’exploitation appelle une fois que le système a terminé avec la mémoire tampon de réception.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

Struct qui contient les membres suivants :

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.MappingRequirement

Valeur NET_MEMORY_MAPPING_REQUIREMENT qui spécifie comment le système d’exploitation doit mapper les mémoires tampons de données de réception.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

Alignement minimal pour les fragments de paquets. Ce membre doit être un pouvoir de 2.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

Pointeur vers une structure de NET_DMA_CAPABILITIES allouée par le pilote et initialisée qui décrit les fonctionnalités DMA de l’adaptateur sur le chemin de réception. Ce membre est ignoré par NetAdapterCx si MappingRequirement n’est pas défini sur NetMemoryMappingRequirementDmaMapped.

Remarques

Appelez l’une des fonctions NET_ADAPTER_RX_CAPABILITIES_INIT_XXX pour initialiser cette structure. Pour plus d’informations sur chaque fonction d’initialisation, consultez les liens de la section Voir aussi. Une structure NET_ADAPTER_RX_CAPABILITIES initialisée est passée en tant que paramètre à NetAdapterSetDatapathCapabilities.

En règle générale, un pilote client effectue l’allocation et l’attachement lui-même ou spécifie que le système d’exploitation effectue les deux. Dans la plupart des cas, nous recommandons que le système d’exploitation alloue et attache des mémoires tampons de réception.

Si le client spécifie des mémoires tampons de réception allouées par le pilote et attachées, il doit fournir à la fois une structure de contexte de retour personnalisée dans le membre RxBufferReturnContext de chaque NET_FRAGMENT pendant l’allocation de la mémoire tampon, ainsi qu’une fonction de rappel EVT_NET_ADAPTER_RETURN_RX_BUFFER dans cette structure NET_ADAPTER_RX_CAPABILITIES pour que le système d’exploitation appelle une fois qu’il a terminé avec la mémoire tampon.

Configuration requise

Condition requise Valeur
Version KMDF minimale 1,25
En-tête netadapter.h (inclure netadaptercx.h)

Voir aussi

NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED_DMA

NetAdapterSetDatapathCapabilities