NdisRequest, fonction (ndis.h)
Note NDIS 5. x a été déprécié et est remplacé par NDIS 6. x. Pour le développement de nouveaux pilotes NDIS, consultez Pilotes réseau à partir de Windows Vista. Pour plus d’informations sur le portage de NDIS 5. x pilotes vers NDIS 6. x, consultez Portage des pilotes NDIS 5.x vers NDIS 6.0.
NdisRequest transfère une requête au pilote sous-jacent qui interroge les fonctionnalités ou les status de sa carte réseau ou qu’il définit l’état de sa carte réseau.
Syntaxe
void NdisRequest(
[out] PNDIS_STATUS Status,
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_REQUEST NdisRequest
);
Paramètres
[out] Status
Pointeur vers une variable fournie par l’appelant qui est définie au retour de cette fonction. Le pilote sous-jacent détermine quel NDIS_STATUS_XXX est retourné, mais il s’agit généralement de l’une des valeurs suivantes :
NDIS_STATUS_SUCCESS
L’opération demandée a réussi.NDIS_STATUS_PENDING
La demande est gérée de manière asynchrone, et la fonction ProtocolRequestComplete de l’appelant est appelée une fois terminée.NDIS_STATUS_INVALID_OID
Le code OID_XXX spécifié dans le membre Oid de la mémoire tampon NDIS_REQUEST-structurée sur NdisRequest n’est pas valide ou n’est pas pris en charge par le pilote sous-jacent.NDIS_STATUS_INVALID_LENGTH ou NDIS_STATUS_BUFFER_TOO_SHORT
La valeur spécifiée dans le membre InformationBufferLength de la mémoire tampon NDIS_REQUEST structurée sur NdisRequest ne correspond pas aux exigences du code OID_XXX donné. Si la mémoire tampon d’informations est trop petite, le membre BytesNeeded contient la valeur correcte pour InformationBufferLength au retour de NdisRequest.NDIS_STATUS_INVALID_DATA
Les données fournies dans InformationBuffer dans la structure NDIS_REQUEST donnée ne sont pas valides pour le code OID_XXX donné.NDIS_STATUS_NOT_SUPPORTED ou NDIS_STATUS_NOT_RECOGNIZED
Le pilote sous-jacent ne prend pas en charge l’opération demandée.NDIS_STATUS_RESOURCES
La demande n’a pas pu être satisfaite en raison d’une pénurie de ressources. En règle générale, ce retour indique qu’une tentative d’allocation de mémoire a échoué, mais il n’indique pas nécessairement que la même demande, envoyée ultérieurement, échouera pour la même raison.NDIS_STATUS_NOT_ACCEPTED
Le pilote sous-jacent a tenté l’opération demandée, généralement un ensemble, sur sa carte réseau, mais elle a échoué par la carte réseau. Par exemple, une tentative de définition d’un trop grand nombre d’adresses de multidiffusion peut entraîner le retour de cette valeur.NDIS_STATUS_CLOSING ou NDIS_STATUS_CLOSING_INDICATING
Le pilote sous-jacent a échoué l’opération demandée, car une fermeture est en cours.NDIS_STATUS_RESET_IN_PROGRESS
Le pilote de carte réseau sous-jacente ne peut pas satisfaire la demande pour le moment, car il réinitialise actuellement la carte réseau. La fonction ProtocolStatus de l’appelant a été ou sera appelée avec NDIS_STATUS_RESET_START pour indiquer qu’une réinitialisation est en cours. Cette valeur de retour n’indique pas nécessairement que la même demande, envoyée ultérieurement, échouera pour la même raison.NDIS_STATUS_FAILURE
Cette valeur est généralement une valeur par défaut non spécifique, retournée lorsqu’aucune des NDIS_STATUS_XXX plus spécifiques n’a provoqué l’échec de la demande par le pilote sous-jacent.
[in] NdisBindingHandle
Spécifie le handle retourné par NdisOpenAdapter qui identifie la carte réseau cible ou la carte virtuelle du pilote inférieur suivant auquel l’appelant est lié.
[in] NdisRequest
Pointeur vers une structure mise en mémoire tampon spécifiant l’opération demandée avec un code XXX OID_ donné pour une requête ou un jeu.
Valeur de retour
None
Remarques
Un pilote de protocole doit allouer suffisamment de mémoire pour la mémoire tampon d’informations associée à l’OID_XXX de l’opération qu’il demande. Le pilote doit également allouer et configurer la mémoire tampon sur NdisRequest avant d’appeler NdisRequest. Les deux mémoires tampons doivent être allouées à partir d’un pool non paginé, car le pilote sous-jacent s’exécute à l’IRQL élevé lors du traitement de la requête.
Pour les appelants superposés au-dessus d’un pilote NDIS intermédiaire, NdisRequest transfère une demande au pilote inférieur suivant pour qu’il retourne des informations sur ses propres fonctionnalités ou indique à ce pilote de gérer des fonctionnalités spécifiques d’une manière déterminée par l’appelant. Si le pilote inférieur suivant est un pilote intermédiaire NDIS, il peut appeler NdisRequest avec sa propre requête spécifique à OID avant de terminer la requête initialement envoyée par le protocole de niveau supérieur.
Certaines erreurs retournées à l’état sont récupérables, notamment les suivantes :
NDIS_STATUS_INVALID_OID
NDIS_STATUS_INVALID_LENGTH
NDIS_STATUS_BUFFER_TOO_SHORT
NDIS_STATUS_INVALID_DATA
NDIS_STATUS_RESOURCES
NDIS_STATUS_RESET_IN_PROGRESS
Autrement dit, un pilote peut modifier le paquet sur NdisRequest de manière appropriée pour corriger le code OID_XXX et/ou la taille ou le contenu de la mémoire tampon sur InformationBuffer et renvoyer le paquet de la demande à NdisRequest. Le même paquet peut être satisfait lors d’une nouvelle soumission à NdisRequest si l’appel d’origine indique une réinitialisation en cours ou qu’une pénurie de ressources, qui peut être temporaire, a empêché l’exécution de cette demande.
La bibliothèque NDIS gère les liaisons pour les pilotes miniport sous-jacents. NDIS peut retourner des informations pour les requêtes spécifiques à la liaison si un OID donné est associé à un type de support défini par le système pour lequel le système fournit une bibliothèque de filtres.
Pour plus d’informations sur les OID généraux et spécifiques aux médias et leurs mémoires tampons d’informations associées respectives, consultez Identificateurs d’objet NDIS.
- Plateforme cible : Universelle
- Version : non pris en charge pour les pilotes NDIS 6.0 dans Windows Vista. Utilisez NdisOidRequestà la place. Pris en charge pour les pilotes NDIS 5.1 dans Windows Vista et Windows XP.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |