Partager via


NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure (ndischimney.h)

[La fonctionnalité de déchargement de cheminée TCP est déconseillée et ne doit pas être utilisée.]

Structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.

Syntaxe

typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
  IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[3];
  IN OUT PNDIS_OFFLOAD_HANDLE          OffloadHandle;
  IN PVOID                             ProtocolReserved[2];
  IN PVOID                             MiniportReserved[2];
  IN PVOID                             ImReserved[2];
  IN PVOID                             Scratch[2];
  IN PVOID                             SourceHandle;
  IN NDIS_PORT_NUMBER                  PortNumber;
  IN OUT PNET_BUFFER_LIST              NetBufferListChain;
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;

Membres

Header

En-tête de la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. L’en-tête est mis en forme en tant que structure NDIS_OBJECT_HEADER . La structure NDIS_OBJECT_HEADER contient le numéro de révision de la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, le type d’état de déchargement qui suit immédiatement la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en mémoire et la taille de la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, y compris l’en-tête, en octets.

Le membre Type de la structure NDIS_OBJECT_HEADER indique le type d’état de déchargement et, par conséquent, la ou les structures d’état de déchargement spécifiques qui suivent immédiatement la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en mémoire.

Les valeurs OFFLOAD_STATE_TYPE suivantes sont prises en charge :

NeighborOffloadConstState

Spécifie l’état voisin constant. Cet état est au format NEIGHBOR_OFFLOAD_STATE_CONST structure.

NeighborOffloadCachedState

Spécifie l’état voisin mis en cache. Cet état est au format NEIGHBOR_OFFLOAD_STATE_CACHED structure.

NeighborOffloadDelegatedState

Spécifie l’état voisin délégué. Cet état est au format NEIGHBOR_OFFLOAD_STATE_DELEGATED structure.

NeighborOffloadState

Spécifie tout l’état voisin, y compris la constante, l’état voisin mis en cache et l’état voisin délégué. Cet état est mis en forme en tant que structure NEIGHBOR_OFFLOAD_STATE_CONST, suivie d’une structure NEIGHBOR_OFFLOAD_STATE_CACHED, puis d’une structure NEIGHBOR_OFFLOAD_STATE_DELEGATED.

Ip4OffloadConstState

Spécifie l’état du chemin d’accès constant (IPv4). Cet état est au format PATH_OFFLOAD_STATE_CONST structure.

Ip4OffloadCachedState

Spécifie l’état du chemin mis en cache (IPv4). Cet état est au format PATH_OFFLOAD_STATE_CACHED structure.

Ip4OffloadDelegatedState

Spécifie l’état du chemin délégué (IPv4). Cet état est au format PATH_OFFLOAD_STATE_DELEGATED structure. Actuellement, il n’existe aucun état de chemin délégué. La structure PATH_OFFLOAD_STATE_DELEGATED ne contient aucune variable.

Ip4OffloadState

Spécifie tout l’état du chemin d’accès (IPv4), y compris la constante, l’état mis en cache et l’état du chemin délégué. Cet état est mis en forme comme structure PATH_OFFLOAD_STATE_CONST, suivie d’une structure PATH_OFFLOAD_STATE_CACHED, puis d’une structure PATH_OFFLOAD_STATE_DELEGATED.

Ip6OffloadConstState

Spécifie l’état du chemin d’accès constant (IPv6). Cet état est mis en forme en tant que structure PATH_OFFLOAD_STATE_CONST.

Ip6OffloadCachedState

Spécifie l’état du chemin mis en cache (IPv6). Cet état est mis en forme en tant que structure PATH_OFFLOAD_STATE_CACHED.

Ip6OffloadDelegatedState

Spécifie l’état du chemin délégué (IPv6). Cet état est mis en forme en tant que structure PATH_OFFLOAD_STATE_DELEGATED. Actuellement, il n’existe aucun état de chemin délégué. La structure PATH_OFFLOAD_STATE_DELEGATED ne contient aucune variable.

Ip6OffloadState

Spécifie tout l’état du chemin d’accès (IPv6), y compris la constante, l’état mis en cache et l’état du chemin délégué. Cet état est mis en forme comme structure PATH_OFFLOAD_STATE_CONST, suivie d’une structure PATH_OFFLOAD_STATE_CACHED, puis d’une structure PATH_OFFLOAD_STATE_DELEGATED.

TcpOffloadConstState

Spécifie l’état TCP constant. Cet état est au format TCP_OFFLOAD_STATE_CONST structure.

TcpOffloadCachedState

Spécifie l’état TCP mis en cache. Cet état est au format TCP_OFFLOAD_STATE_CACHED structure.

TcpOffloadDelegatedState

Spécifie l’état TCP délégué. Cet état est au format TCP_OFFLOAD_STATE_DELEGATED structure.

TcpOffloadResourceState

Réservé. Cette valeur de OFFLOAD_STATE_TYPE, ainsi que la structure TCP_OFFLOAD_RESOURCE_STATE, ne sont pas utilisées actuellement.

TcpOffloadState

Spécifie tout l’état TCP, y compris la constante, l’état mis en cache et l’état TCP délégué. Cet état est mis en forme en tant que structure TCP_OFFLOAD_STATE_CONST, suivie d’une structure TCP_OFFLOAD_STATE_CACHED, puis d’une structure TCP_OFFLOAD_STATE_DELEGATED.

FilterReservedOffloadState

Réservé aux pilotes de filtre.

NextBlock

Pointeur vers la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST suivante au niveau de la couche d’état de déchargement (voisin, chemin ou TCP) indiquée par le membre Type du membre Header . NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structures liées via des pointeurs NextBlock sont toujours au même niveau de l’état de déchargement. Une valeur NextBlocknull indique qu’il n’existe aucune structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST suivante supplémentaire à ce niveau.

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

Pointeur vers une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST qui se trouve à une couche dépendante de l’état de déchargement (couche supérieure dans l’arborescence d’état de déchargement).

Pour le déchargement de cheminée TCP :

Le membre DependentBlockList d’une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST au niveau de la couche voisine peut pointer uniquement vers une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST au niveau de la couche de chemin d’accès. Le membre DependentBlockList d’une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST au niveau de la couche de chemin d’accès peut pointer uniquement vers une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST au niveau de la couche TCP. Le membre DependentBlockList d’une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST au niveau de la couche TCP est toujours NULL.

Une valeur DependentBlockListnull indique qu’il n’existe aucune structure de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST dépendante.

Status

L’achèvement status d’une opération de lancement de déchargement, de déchargement de requête, de mise à jour du déchargement, d’invalidation du déchargement ou d’arrêt de déchargement effectuée par la cible de déchargement sur l’état associé à la structure de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST ou référencé par celui-ci. Selon l’opération, NDIS écrit l’une des valeurs de NDIS_STATUS suivantes dans le membre Status :

NDIS_STATUS_SUCCESS

Lancement du déchargement : la cible de déchargement sous-jacente a correctement déchargé l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST et l’état associé à toutes les structures de PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST immédiatement dépendantes.

Interroger, mettre à jour, invalider ou arrêter le déchargement : la cible de déchargement a correctement effectué l’opération sur l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST ou référencé par.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

Lancement du déchargement : la cible de déchargement sous-jacente a correctement déchargé l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, mais n’a pas pu décharger l’état associé à une ou plusieurs des structures NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST immédiatement dépendantes.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_FAILURE

Lancer le déchargement : la cible de déchargement sous-jacente n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. La cause de l’échec ne peut pas être classée.

Interroger, mettre à jour, invalider ou arrêter le déchargement : la cible de déchargement n’a pas pu effectuer l’opération sur l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST ou référencé par.

NDIS_STATUS_RESOURCES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer suffisamment de mémoire hôte.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer un objet d’état de connexion TCP.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer un objet d’état de chemin d’accès.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer un objet d’état voisin.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la pile hôte a spécifié un membre DlSourceAddress non NULL dans le NEIGHBOR_OFFLOAD_STATE_CONST structure, et la cible de déchargement ne prend pas en charge les adresses MAC sources configurables ou ne peut pas accepter d’adresses MAC sources supplémentaires.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer une structure de données pour l’adresse IP source référencée par le pointeur SourceAddress dans le PATH_OFFLOAD_STATE_CONST structure.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer suffisamment de mémoires tampons de transmission TCP.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car la cible de déchargement n’a pas pu allouer suffisamment de mémoires tampons de réception TCP.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

Lancer le déchargement : la cible de déchargement n’a pas pu décharger l’état associé à la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, car le membre InitialRcvWnd spécifié dans le TCP_OFFLOAD_STATE_CACHED structure est plus grande que la cible de déchargement peut prendre en charge.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

Lancer le déchargement : la cible de déchargement est à court de ressources pour le suivi d’ID VLAN supplémentaires.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

Lancer le déchargement : le VlanId voisin est différent de zéro et ne correspond pas à l’un des ID de VLAN d’interface.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NDIS_STATUS_OFFLOAD_PATH_MTU

Lancer le déchargement : le chemin D’accès MTU pour la connexion TCP est plus grand que la cible de déchargement prend en charge.

Interroger, mettre à jour, invalider ou arrêter le déchargement : valeur de status autorisée.

NdisReserved[3]

Réservé à l’utilisation par NDIS.

OffloadHandle

Pointeur vers une structure NDIS_OFFLOAD_HANDLE . La structure NDIS_OFFLOAD_HANDLE représente le contexte d’un protocole ou d’un pilote intermédiaire pour un objet d’état déchargé.

ProtocolReserved[2]

Réservé à l’utilisation par les pilotes de protocole, qui peuvent utiliser cette zone à leurs propres fins.

MiniportReserved[2]

Réservé à l’utilisation par des cibles de déchargement ou la partie miniport d’un pilote intermédiaire.

ImReserved[2]

Réservé à l’utilisation par les pilotes intermédiaires, qui peuvent utiliser cette zone à leurs propres fins.

Scratch[2]

Le pilote de protocole ou le pilote intermédiaire peut utiliser cette zone pour le suivi interne. Les informations contenues dans cette zone sont valides uniquement lorsque le pilote est propriétaire du NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.

SourceHandle

Ce membre n’est pas significatif pour un protocole ou un pilote intermédiaire. Un protocole ou un pilote intermédiaire ne doit pas modifier ce membre.

Lors de la propagation de l’achèvement d’une opération de manipulation d’état, un pilote intermédiaire copie le
SourceHandle qu’il a stocké dans son entrée d’appel de messagerie instantanée au membre SourceHandle du NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure qu’il transmet à la fonction NdisMXxxComplete.

PortNumber

Numéro de port qui identifie un port d’adaptateur miniport. Pour attribuer un numéro de port d’adaptateur miniport, appelez la fonction NdisMAllocatePort . Une valeur zéro identifie le port par défaut d’un adaptateur miniport. Utilisez le port par défaut si le pilote miniport n’a pas alloué de ports pour l’adaptateur spécifié.

NetBufferListChain

Lorsque le protocole ou le pilote intermédiaire spécifie une valeur NULL , NetBufferListChain n’est pas significatif et peut être ignoré par le pilote sous-jacent ou la cible de déchargement.

Lorsqu’un protocole ou un pilote intermédiaire spécifie une valeur non NULL , NetBufferListChain pointe vers une structure NET_BUFFER_LIST qui peut être une structure autonome ou la première structure d’une liste liée de telles structures. Chaque structure NET_BUFFER_LIST dans la liste liée décrit une structure NET_BUFFER . La structure NET_BUFFER est mappée à une chaîne de listes de descripteurs de mémoire (MDL). Les NET_BUFFER_LIST et les structures associées sont verrouillées afin qu’elles restent résidentes dans la mémoire physique. Toutefois, ils ne sont pas mappés à la mémoire système.

Les dll MDL associées aux structures de NET_BUFFER contiennent des données qui sont transmises dans le cadre d’une opération de manipulation d’état ou de l’achèvement d’une telle opération. À l’heure actuelle, la liste liée ne peut contenir qu’un seul type de données : les données d’envoi en attente. Pour plus d’informations sur l’envoi de données, consultez Gestion des données d’envoi en suspens pendant et après une opération de déchargement.

Une cible de déchargement ou un pilote intermédiaire peut transmettre des données d’envoi en attente à la pile du pilote ou de l’hôte qui se trouve trop lors de la fin du déchargement d’une connexion TCP. Dans ce cas, la cible de déchargement spécifie une valeur non NULL pour le membre NetBufferListChain lors de l’appel du Fonction NdisMTerminateOffloadComplete . Si la cible de déchargement ne transmet pas de données d’envoi pour une connexion TCP en cours d’arrêt, elle spécifie une valeur NULL pour le membre NetBufferListChain .

Remarques

Un pilote intermédiaire crée une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST à partir d’un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure lors de la propagation d’une opération de manipulation d’état. Lorsque le répertoire en propageant l’achèvement d’une telle opération, un pilote intermédiaire utilise une structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST pour construire une structure NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.

Une structure de NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST peut être immédiatement suivie en mémoire d’une structure d’état de déchargement qui contient l’état à décharger(ou qui a été) déchargé, interrogé, mis à jour, invalidé ou terminé. Le membre Type de l’en-tête de la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST spécifie le type d’état de déchargement et, par conséquent, la structure d’état de déchargement spécifique (ou les structures) qui suivent la structure NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST en mémoire.

Configuration requise

Condition requise Valeur
En-tête ndischimney.h (inclure Ndischimney.h)

Voir aussi

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

Protocole ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED