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) |