NdisOidRequest, fonction (ndis.h)
La fonction NdisOidRequest transfère une requête aux pilotes sous-jacents pour interroger les fonctionnalités ou les status d’une carte ou définir l’état d’une carte.
Syntaxe
NDIS_STATUS NdisOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
Paramètres
[in] NdisBindingHandle
Handle retourné par la fonction NdisOpenAdapterEx qui identifie l’adaptateur cible sur la liaison.
[in] OidRequest
Pointeur vers une structure de NDIS_OID_REQUEST qui spécifie l’opération demandée avec un code OID_XXX donné pour interroger le status d’une carte ou pour définir l’état d’une carte.
Valeur retournée
Le pilote sous-jacent détermine le code NdisOidRequest NDIS_STATUS_XXX retourné, mais il s’agit généralement de l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
L’opération de demande s’est terminée avec succès. |
|
La demande est gérée de manière asynchrone, et NDIS appellera le service de l’appelant Fonction ProtocolOidRequestComplete lorsque la demande est terminée. |
|
Le code OID_XXX spécifié dans le membre Oid de la mémoire tampon structurée NDIS_OID_REQUEST sur OidRequest n’est pas valide ou n’est pas pris en charge par le pilote sous-jacent. |
|
La valeur spécifiée dans le membre InformationBufferLength de la mémoire tampon structurée NDIS_OID_REQUEST sur OidRequest ne correspond pas aux exigences du code OID_XXX donné. Si la mémoire tampon d’informations est trop petite, le membre BytesNeededed contient la valeur correcte pour InformationBufferLength au retour de NdisOidRequest. |
|
Les données fournies dans InformationBuffer dans la structure NDIS_OID_REQUEST donnée ne sont pas valides pour le code OID_XXX donné. |
|
Le pilote sous-jacent ne prend pas en charge l’opération demandée. |
|
La demande n’a pas pu être satisfaite en raison d’une pénurie de ressources. En règle générale, cette valeur de retour indique qu’une tentative d’allocation de mémoire a échoué, mais elle n’indique pas nécessairement que la même demande, envoyée ultérieurement, aura échoué pour la même raison. |
|
Le pilote sous-jacent a tenté l’opération demandée, généralement un ensemble sur une carte réseau, mais elle a échoué. Par exemple, une tentative de définition d’un trop grand nombre d’adresses de multidiffusion peut entraîner le retour de cette valeur. |
|
Le pilote sous-jacent a échoué à l’opération demandée, car une opération de fermeture est en cours. |
|
Le pilote miniport sous-jacent ne peut pas répondre à la demande pour le moment, car il réinitialise actuellement la carte réseau affectée. La fonction ProtocolStatusEx 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, aura échoué pour la même raison. |
|
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 requête du pilote sous-jacent. |
Remarques
Un pilote de protocole doit allouer suffisamment de mémoire pour contenir la mémoire tampon d’informations associée à l’OID spécifié. Le pilote doit également allouer et configurer la mémoire tampon sur OidRequest avant d’appeler NdisOidRequest. 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 demande.
NdisOidRequest transfère une requête aux pilotes sous-jacents ou gère la requête elle-même.. Si le pilote inférieur suivant est un pilote intermédiaire NDIS, il peut appeler NdisOidRequest avec une requête spécifique à l’OID avant de terminer la demande initialement envoyée par le pilote de niveau supérieur.
Certaines erreurs retournées peuvent être récupérées, notamment les suivantes :
Autrement dit, un pilote peut modifier le paquet sur OidRequest de manière appropriée pour corriger le code OID_XXX ou la taille ou le contenu de la mémoire tampon dans InformationBuffer et renvoyer le paquet de demande à NdisOidRequest. Le même paquet peut être satisfait lors de la nouvelle soumission à NdisOidRequest si l’appel d’origine indiquait une réinitialisation en cours ou qu’une pénurie de ressources, qui peut être temporaire, empêchait l’exécution de cette demande.
La bibliothèque NDIS gère les liaisons pour les pilotes miniports 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 Les OID NDIS.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | Irql_OID_Function(ndis) |