Partager via


NdisDirectOidRequest, fonction (ndis.h)

La fonction NdisDirectOidRequest transfère une requête OID directe aux pilotes sous-jacents pour interroger les fonctionnalités ou l’état 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 que la fonction NdisOpenAdapterEx retourne 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 l’état d’un adaptateur ou définir l’état d’une carte.

Valeur de retour

Le pilote sous-jacent détermine quel code NDIS_STATUS_XXXNdisDirectOidRequest retourne, mais il s’agit généralement de 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. ProtocolDirectOidRequestComplete fonction une fois la requête terminée.
NDIS_STATUS_INVALID_OID
Le codexxx OID_ qui a été spécifié dans le membre Oid de la mémoire tampon NDIS_OID_REQUEST-structured à OidRequest n’était 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 était trop petite, le membre BytesNeededed contient la valeur correcte pour InformationBufferLength à retour de NdisDirectOidRequest.
NDIS_STATUS_INVALID_DATA
Les données fournies à InformationBuffer dans la structure de NDIS_OID_REQUEST donnée n’étaient 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. Pour NdisDirectOidRequest, NDIS peut également renvoyer cet état si le pilote appelant n’a pas inscrit un ProtocolDirectOidRequestComplete fonction.
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 qu’elle n’indique pas nécessairement que la même demande, 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 un ensemble sur une carte réseau, mais il 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.
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, 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 valeurs NDIS_STATUS_xxx plus spécifiques a provoqué l’échec du pilote sous-jacent à la requête.

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_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA

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 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 au niveau du runtime IRQL déclenché 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 une requête spécifique à l’OID propre avant d’effectuer la demande que le pilote de niveau supérieur a envoyée à l’origine.

Un pilote qui appelle NdisDirectOidRequest doit inscrire le ProtocolDirectOidRequestComplete fonction.

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.

Remarque Bien que les requêtes OID directes ne soient généralement pas sérialisées, NDIS lui-même peut toujours pender une requête avec NDIS_STATUS_PENDING et mettre en file d’attente la demande pour la fin ultérieure. Par exemple, NDIS peut suspendre et mettre en file d’attente une requête Direct OID envoyée à une miniport de suspension sélective qui est actuellement dans un état d’alimentation faible. Les protocoles et les filtres doivent être prêts à gérer un code NDIS_STATUS_PENDING, même si le miniport sous-jacent termine la requête de manière synchrone.
 

Exigences

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

Voir aussi

NDIS_OID_REQUEST

NdisOidRequest

NdisOpenAdapterEx

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA ProtocolDirectOidRequestComplete

ProtocolStatusEx