Partager via


NdisCoOidRequest, fonction (ndis.h)

La fonction NdisCoOidRequest transfère une requête aux pilotes CoNDIS ciblés pour interroger ou définir des informations spécifiées par l’OID du pilote cible.

Syntaxe

NDIS_STATUS NdisCoOidRequest(
  [in]           NDIS_HANDLE       NdisBindingHandle,
  [in, optional] NDIS_HANDLE       NdisAfHandle,
  [in, optional] NDIS_HANDLE       NdisVcHandle,
  [in, optional] NDIS_HANDLE       NdisPartyHandle,
  [in, out]      PNDIS_OID_REQUEST OidRequest
);

Paramètres

[in] NdisBindingHandle

Handle retourné par la fonction NdisOpenAdapterEx qui identifie l’adaptateur cible pour la liaison.

[in, optional] NdisAfHandle

Handle qui identifie la famille d’adresses (AF) partagée entre le client, le gestionnaire d’appels et NDIS. Ce handle a été obtenu comme suit :

  • Si l’appelant est un client qui effectue une demande au gestionnaire d’appels, le client a obtenu à l’origine ce handle à partir d’un appel réussi au fonction NdisClOpenAddressFamilyEx.
  • Si l’appelant est un gestionnaire d’appels autonome ou un gestionnaire d’appels miniport (MCM) qui effectue une demande à un client, le gestionnaire d’appels ou MCM a obtenu ce handle à l’origine en tant que paramètre d’entrée pour sa fonction ProtocolCmOpenAf.
Pour effectuer une requête d’un client ou d’un gestionnaire d’appels autonome vers le pilote miniport sous-jacent, ce paramètre doit être null.

[in, optional] NdisVcHandle

Handle qui identifie la connexion virtuelle (VC) pour laquelle l’appelant demande ou définit des informations, si la demande est spécifique à VC. Sinon, si ce paramètre est NULL, la requête n’est pas spécifique à VC. Pour toute requête spécifique à la vc, l’appelant a obtenu à l’origine ce handle lors de la création de la vc avec la fonction NdisCoCreateVc, ou en tant que paramètre d’entrée à sa fonction ProtocolCoCreateVc. Pour une requête spécifique à vc qui est dirigée vers le pilote miniport sous-jacent, ce handle identifie la vc, tandis que NdisAfHandle et NdisPartyHandle sont NULL.

[in, optional] NdisPartyHandle

Handle qui identifie la partie sur un vc multipoint pour lequel l’appelant demande ou définit des informations, si la demande est spécifique à une partie. Sinon, si ce paramètre est NULL, la requête n’est pas spécifique à la partie. Pour toute requête spécifique à une partie, un client a obtenu à l’origine ce handle à partir d’un appel réussi à la fonction NdisClAddParty ou à la fonction NdisClMakeCall ou au gestionnaire d’appels a obtenu ce handle en tant que paramètre d’entrée à sa fonction ProtocolCmAddParty. Si NdisAfHandle est NULL, NdisPartyHandle est également NULL.

[in, out] OidRequest

Pointeur vers une structure NDIS_OID_REQUEST qui spécifie l’opération demandée avec un code OID_XXX donné pour interroger ou définir des informations.

Valeur de retour

Le pilote cible détermine quel code NDIS_STATUS_XXXNdisCoOidRe quest retourne, généralement l’une des valeurs suivantes :

Retourner le code Description
NDIS_STATUS_SUCCESS
L’opération de demande s’est terminée avec succès.
NDIS_STATUS_PENDING
La requête est gérée de façon asynchrone et NDIS appellera l’appelant. ProtocolCoOidRequestComplete fonction lorsque la requête est terminée.
NDIS_STATUS_INVALID_OID
Le code OID_XXX spécifié dans le membre Oid de la structure NDIS_OID_REQUEST au paramètre OidRequest n’est pas valide ou non 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 InformationBufferLength membre de la mémoire tampon structurée NDIS_OID_REQUEST à OidRequest ne correspond pas aux exigences du codeXXX OID_ donné. Si la mémoire tampon d’informations est trop petite, le membre BytesNeededed de NDIS_OID_REQUEST contient la valeur correcte pour InformationBufferLength, lorsque NdisCoOidRequest retourne.
NDIS_STATUS_INVALID_DATA
Les données fournies au InformationBuffer dans la structure de NDIS_OID_REQUEST donnée ne sont pas valides pour le codeXXX OID_ 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, 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, si elle est envoyée ultérieurement, échoue pour la même raison.
NDIS_STATUS_NOT_ACCEPTED
Le pilote sous-jacent a tenté l’opération demandée, généralement une demande définie, mais l’opération a échoué. Par exemple, une tentative de définition d’un trop grand nombre d’adresses de multidiffusion peut entraîner NdisCoOidRequest retourner cette valeur.
NDIS_STATUS_CLOSING ou NDIS_STATUS_CLOSING_INDICATING
Le pilote sous-jacent a échoué l’opération demandée, car une opération de fermeture est en cours.
NDIS_STATUS_RESET_IN_PROGRESS
Le pilote miniport sous-jacent ne peut pas satisfaire la requête pour l’instant, 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, si elle est envoyée ultérieurement, échoue 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 requête par le pilote sous-jacent.
NDIS_STATUS_REQUEST_ABORTED
Le pilote miniport a arrêté le traitement de la requête. Par exemple, NDIS a appelé un miniport driver sous-jacent ou Fonction MiniportCancelOidRequest.

Remarques

Les clients CoNDIS et les gestionnaires d’appels autonomes peuvent appeler la fonction NdisCoOidRequest pour envoyer une requête OID pour interroger ou définir des informations spécifiées par OID dans un pilote cible. Le pilote cible peut être un autre pilote de protocole CoNDIS ou un pilote sous-jacent.

L’appelant de NdisCoOidRequest doit allouer suffisamment de mémoire pour contenir la mémoire tampon d’informations associée à l’OID spécifié. L’appelant doit également allouer et configurer la mémoire tampon à OidRequest avant d’appeler NdisCoOidRequest. Les deux mémoires tampons doivent être allouées à partir d’un pool non paginé, car le pilote cible peut s’exécuter à l’irQL déclenché pendant qu’il traite la requête.

Certaines erreurs qui NdisCoOidRequest retournent 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 à OidRequest de manière appropriée pour corriger le code OID_XXX ou la taille ou le contenu de la mémoire tampon à InformationBuffer et renvoyer le paquet de requête à NdisCoOidRequest. Le même paquet peut être satisfait lorsque le pilote le soumette à NdisCoOidRequest si l’appel d’origine a indiqué une réinitialisation en cours ou qu’une pénurie de ressources, qui peut être temporaire, a empêché cette demande d’être effectuée.

Selon la valeur du paramètre NdisAfHandle, les clients et les gestionnaires d’appels autonomes appellent NdisCoOidRequest communiquer entre eux ou avec le pilote miniport orienté connexion sous-jacent.

Si un pilote passe NULL pour NdisVcHandle, la requête est globale, que la requête soit dirigée vers le client, le gestionnaire d’appels ou le pilote miniport. Par exemple, si l’appelant fournit une valeur deNULL non- pour NdisVcHandle, une demande OID OID_GEN_CO_RCV_CRC_ERROR à un pilote miniport orienté connexion sous-jacent retourne le nombre d’erreurs de vérification de redondance cyclique (CRC) qui ont été rencontrées pour une vc particulière. Pour la même requête avec NULL pour NdisVcHandle, le pilote miniport sous-jacent retourne le nombre total d’erreurs CRC rencontrées pour toutes les machines virtuelles.

Les clients et les gestionnaires d’appels autonomes doivent appeler la fonction NdisOidRequest pour tous les OID qui ne sont pas orientés vers la connexion, tels que ceux retournés dans une requête OID_GEN_SUPPORTED_LIST, qui est généralement émise lors de l’initialisation une fois que le pilote de protocole s’est lié au pilote de carte réseau sous-jacent.

Si NdisCoOidRequest retourne NDIS_STATUS_PENDING, la requête est gérée de manière asynchrone et NDIS appellera le pilote de manière asynchrone. ProtocolCoOidRequestComplete fonction lorsque la requête est terminée. Si NdisCoOidRequest retourne un autre état, la requête est terminée lorsque NdisCoOidRequest retourne, et NDIS n’appelle pas ProtocolCoOidRequestComplete.

Pour plus d’informations sur les ensembles d’OID définis à utiliser avec NdisCoOidRequest et NdisOidRequest, consultez NDIS OIDs.

Seuls les clients et les gestionnaires d’appels autonomes, qui sont des pilotes de protocole, peuvent appeler NdisCoOidRequest. Les mcms appellent la fonction NdisMCmOidRequest pour communiquer avec leurs clients.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Bureau
d’en-tête ndis.h (include Ndis.h)
bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
règles de conformité DDI Irql_Connection_Function(ndis)

Voir aussi

MiniportCancelOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NdisClAddParty

NdisClMakeCall

NdisClOpenAddressFamilyEx

NdisCoCreateVc

NdisMCmOidRequest

NdisOidRequest

NdisOpenAdapterEx

OID_GEN_CO_RCV_CRC_ERROR

OID_GEN_SUPPORTED_LIST

ProtocolCmAddParty

ProtocolCmOpenAf

ProtocolCoCreateVc

ProtocolCoOidRequestComplete

ProtocolStatusEx