NdisDirectOidRequest, fonction (ndis.h)
La fonction NdisDirectOidRequest transfère une requête OID directe aux pilotes sous-jacents pour interroger les fonctionnalités ou les status d’un adaptateur ou définir l’état d’une carte.
Syntaxe
NDIS_STATUS NdisDirectOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
Paramètres
[in] NdisBindingHandle
Handle retourné par la fonction NdisOpenAdapterEx qui identifie l’adaptateur miniport cible sur la liaison.
[in] OidRequest
Pointeur vers une structure NDIS_OID_REQUEST qui spécifie l’opération demandée avec un code OID_Xxx donné pour interroger le status d’un adaptateur ou définir l’état d’un adaptateur.
Valeur retournée
Le pilote sous-jacent détermine le code NDIS_STATUS_XXXNdisDirectOidRequest 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 l’appelant Fonction ProtocolDirectOidRequestComplete lorsque la demande est terminée. |
|
Le code OID_Xxx spécifié dans le membre Oid de la mémoire tampon NDIS_OID_REQUEST structurée sur OidRequest n’était pas valide ou n’était pas pris en charge par le pilote sous-jacent. |
|
La valeur spécifiée dans le membre InformationBufferLength de la mémoire tampon NDIS_OID_REQUEST-structurée sur OidRequest ne correspondait pas aux exigences du code OID_Xxx donné. Si la mémoire tampon d’informations était trop petite, le membre BytesNeeded contient la valeur correcte pour InformationBufferLength au retour de NdisDirectOidRequest. |
|
Les données fournies dans InformationBuffer dans la structure NDIS_OID_REQUEST donnée n’étaient pas valides pour le code OID_Xxx donné. |
|
Le pilote sous-jacent ne prend pas en charge l’opération demandée. Pour NdisDirectOidRequest, NDIS peut également retourner ce status si le pilote appelant n’a pas inscrit un Fonction ProtocolDirectOidRequestComplete . |
|
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, échouera pour la même raison. |
|
Le pilote sous-jacent a tenté l’opération demandée, généralement définie 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 satisfaire 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, échouera pour la même raison. |
|
Cette valeur est généralement une valeur par défaut non spécifique, retournée quand aucune des valeurs NDIS_STATUS_Xxx plus spécifiques n’a provoqué l’échec de la demande du pilote sous-jacent. |
Remarques
La fonction NdisDirectOidRequest ne peut pas être utilisée pour les requêtes OID générales. Pour les requêtes OID générales, utilisez la fonction NdisOidRequest à la place. NdisDirectOidRequest ne peut être utilisé que pour les OID pris en charge par NDIS pour une utilisation avec l’interface OID directe. Par exemple, les OID suivants peuvent être utilisés :
OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SAUn 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 au niveau du paramètre OidRequest avant d’appeler NdisDirectOidRequest. 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.
NdisDirectOidRequest 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, le pilote intermédiaire peut appeler NdisDirectOidRequest avec sa propre requête spécifique à OID avant de terminer la demande que le pilote de niveau supérieur a initialement envoyée.
Un pilote qui appelle NdisDirectOidRequest doit inscrire le Fonction ProtocolDirectOidRequestComplete .
L’interface de requête OID directe est similaire à l’interface de requête OID générale. Pour plus d’informations sur l’émission de demandes générales, consultez NdisOidRequest.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.1 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 |