Fonction NdisMSendNetBufferListsComplete (ndis.h)
Les pilotes miniport appellent la fonction NdisMSendNetBufferListsComplete pour renvoyer une liste liée de structures NET_BUFFER_LIST à un pilote qui se superpose et pour retourner la status finale d’une demande d’envoi.
Syntaxe
void NdisMSendNetBufferListsComplete(
[in] NDIS_HANDLE MiniportAdapterHandle,
PNET_BUFFER_LIST NetBufferList,
[in] ULONG SendCompleteFlags
);
Paramètres
[in] MiniportAdapterHandle
Poignée de miniport que NDIS a passée à la fonction MiniportInitializeEx .
NetBufferList
Pointeur vers une liste liée de structures NET_BUFFER_LIST. Le pilote miniport a reçu les structures NET_BUFFER_LIST lors des appels précédents à sa fonction MiniportSendNetBufferLists .
[in] SendCompleteFlags
Indicateurs NDIS pouvant être combinés à une opération OR. Pour effacer tous les indicateurs, définissez ce membre sur zéro. Cette fonction prend en charge l’indicateur NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL qui ; si défini, indique que l’IRQL actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.
Valeur de retour
None
Remarques
Un pilote miniport appelle NdisMSendNetBufferListsComplete pour effectuer les requêtes effectuées par NDIS à la fonction MiniportSendNetBufferLists du pilote. Le pilote miniport spécifie une liste liée de structures NET_BUFFER_LIST associées aux demandes d’envoi terminées. Tant que la status des demandes d’envoi est en attente, le pilote miniport conserve la propriété des structures NET_BUFFER_LIST et de toutes les ressources allouées au protocole associées aux structures NET_BUFFER_LIST.
Une fois qu’un pilote miniport appelle NdisMSendNetBufferListsComplete, NDIS appelle la fonction ProtocolSendNetBufferListsComplete du pilote qui a appelé la fonction NdisSendNetBufferLists pour lancer la demande d’envoi.
Le pilote miniport peut effectuer les requêtes d’envoi dans n’importe quel ordre. Par exemple, le pilote miniport peut concaténer les listes de structure NET_BUFFER_LIST de plusieurs appels MiniportSendNetBufferLists ou fractionner une liste à partir d’un appel MiniportSendNetBufferLists . Toutefois, le pilote miniport ne doit pas modifier la liste des structures NET_BUFFER associées à une structure NET_BUFFER_LIST.
Le pilote miniport doit définir l’un des codes status suivants dans le membre Status de chaque structure NET_BUFFER_LIST que le paramètre NetBufferLists spécifie :
Structure | Description |
---|---|
NDIS_STATUS_SUCCESS | Toutes les données réseau décrites par la structure NET_BUFFER_LIST et les structures NET_BUFFER associées ont été traitées pour la transmission. Par exemple, le pilote miniport a copié les données dans une file d’attente ou les données ont déjà été transmises. |
NDIS_STATUS_INVALID_LENGTH | La taille des données dans certaines structures NET_BUFFER associées à cette structure NET_BUFFER_LIST était trop grande pour la carte réseau sous-jacente. |
NDIS_STATUS_RESOURCES | La demande d’envoi de cette structure NET_BUFFER_LIST a échoué en raison de ressources insuffisantes. |
NDIS_STATUS_PAUSED | L’adaptateur miniport est à l’état Suspendu, comme décrit dans la page de référence de la fonction MiniportPause. |
NDIS_STATUS_SEND_ABORTED | NDIS a appelé la fonction MiniportCancelSend pour annuler l’opération d’envoi de cette structure NET_BUFFER_LIST. |
NDIS_STATUS_RESET_IN_PROGRESS | Le pilote miniport a abandonné la demande d’envoi en raison d’une réinitialisation. |
NDIS_STATUS_FAILURE | Le pilote miniport a échoué à l’envoi de la demande pour une raison autre que celles décrites précédemment. Par exemple, le pilote miniport peut échouer la demande d’envoi en raison d’une défaillance matérielle. |
L’appel d’un pilote miniport à NdisMSendNetBufferListsComplete ne signifie pas nécessairement que les données d’une demande d’envoi ont été transmises sur le réseau. Les données peuvent être mises en file d’attente dans le matériel de la carte réseau.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | Irql_SendRcv_Function(ndis), NdisTimedDataHang, NdisTimedDataSend |