Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les pilotes de protocole NDIS émettent des requêtes d’identificateur d’objet (OID) définissent les requêtes de OID_RECEIVE_FILTER_FREE_QUEUE pour libérer une file d’attente de réception.
Le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_QUEUE_FREE_PARAMETERS avec un identificateur de file d’attente de type NDIS_RECEIVE_QUEUE_ID.
Remarques
La demande de jeu OID de OID_RECEIVE_FILTER_FREE_QUEUE est facultative pour les pilotes miniport NDIS 6.20 et ultérieurs. Il est obligatoire pour les pilotes miniport qui prennent en charge l’interface de file d’attente des machines virtuelles.
Une fois qu’un pilote surlysant émet l’OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE pour allouer une file d’attente de réception, il émet le OID_RECEIVE_FILTER_FREE_QUEUE OID pour libérer la file d’attente de réception.
Lorsque NDIS demande à un pilote miniport de libérer une file d’attente de réception VMQ, procédez comme suit :
La carte réseau arrête le transfert DMA de données pour recevoir des mémoires tampons associées à la file d’attente de réception, après quoi la file d’attente doit entrer l’état DMA Arrêté. La carte réseau a probablement arrêté l’activité DMA lorsqu’elle a reçu la requête OID OID_RECEIVE_FILTER_CLEAR_FILTER pour effacer le dernier filtre défini sur la file d’attente de réception.
Le pilote miniport génère une indication d’état NDIS_STATUS_RECEIVE_QUEUE_STATE avec le membre QueueState de la structure NDIS_RECEIVE_QUEUE_STATE définie sur NdisReceiveQueueOperationalStateDmaStopped pour informer NDIS que le transfert DMA a été arrêté.
Le pilote miniport attend que tous les paquets de réception indiqués pour que cette file d’attente soit retournée au pilote miniport.
Le pilote miniport libère toute la mémoire partagée allouée pour les mémoires tampons de réception de la carte réseau associées à la file d’attente en appelant NdisFreeSharedMemory.
Le pilote miniport termine la requête OID OID_RECEIVE_FILTER_FREE_QUEUE pour libérer la file d’attente de réception.
Les pilotes miniport appellent la fonction NdisFreeSharedMemory pour libérer de la mémoire partagée pour une file d’attente. Si le pilote miniport a alloué la mémoire partagée pour une file d’attente non définie, le pilote libère la mémoire partagée dans le contexte de l’OID OID_RECEIVE_FILTER_FREE_QUEUE pendant qu’il libère la file d’attente. Les pilotes Miniport libèrent la mémoire partagée allouée pour la file d’attente par défaut dans le contexte de la fonction MiniportHaltEx.
Un pilote overlying doit libérer tous les filtres qu’il définit sur une file d’attente avant de libérer la file d’attente. En outre, un pilote surlysant doit libérer toutes les files d’attente de réception qu’il a allouées sur une carte réseau avant d’appeler la fonction NdisCloseAdapterEx pour fermer une liaison à la carte réseau. NDIS libère toutes les files d’attente allouées sur une carte réseau avant d’appeler la fonction MiniportHaltEx du pilote miniport.
Codes d’état de retour
La fonctionminiportdu pilote miniportOidRequest retourne l’une des valeurs suivantes pour cette requête :
| Terme | Description |
|---|---|
NDIS_STATUS_SUCCESS |
Le pilote miniport a terminé la requête avec succès. |
NDIS_STATUS_PENDING |
Le pilote miniport termine la requête de manière asynchrone. Une fois que le pilote miniport a terminé tout le traitement, il doit réussir la requête en appelant la fonction NdisMOidRequestComplete, en passant NDIS_STATUS_SUCCESS pour le paramètre Status. |
NDIS_STATUS_NOT_ACCEPTED |
Le pilote miniport est réinitialisé. |
NDIS_STATUS_REQUEST_ABORTED |
Le pilote miniport a arrêté le traitement de la requête. Par exemple, NDIS a appelé la fonction MiniportResetEx. |
NDIS retourne l’un des codes d’état suivants pour cette demande :
| Code d’état | Description |
|---|---|
NDIS_STATUS_SUCCESS |
La file d’attente demandée a été libérée avec succès. |
NDIS_STATUS_PENDING |
La requête est en attente d’achèvement. NDIS transmet le code d’état final et les résultats au gestionnaire d’achèvement de la requête OID pour l’appelant une fois la demande terminée. |
NDIS_STATUS_INVALID_PARAMETER |
L’identificateur de file d’attente n’est pas valide. |
NDIS_STATUS_INVALID_LENGTH |
La mémoire tampon d’informations est trop courte. NDIS définit le DATA.METHOD_INFORMATION.membre BytesNeededed dans la structure NDIS_OID_REQUEST à la taille minimale de mémoire tampon requise. |
Exigences
Version |
Pris en charge dans NDIS 6.20 et versions ultérieures. |
En-tête |
Ntddndis.h (include Ndis.h) |
Voir aussi
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS