Génération de requêtes OID à partir d’un pilote de filtre NDIS

Un pilote de filtre peut créer une requête OID ou définir des requêtes sur des pilotes sous-jacents en appelant la fonction NdisFOidRequest .

La figure suivante illustre une requête OID qui est générée par un pilote de filtre.

Diagramme illustrant une requête OID provenant d’un pilote de filtre NDIS.

Une fois qu’un pilote de filtre appelle la fonction NdisFOidRequest , NDIS appelle la fonction de requête du pilote sous-jacent suivant. Pour plus d’informations sur la façon dont un pilote miniport gère les requêtes OID, consultez Demandes OID pour un adaptateur.

Pour effectuer une opération synchrone, NdisFOidRequest retourne NDIS_STATUS_SUCCESS ou une status d’erreur. Pour effectuer une opération asynchrone, NdisFOidRequest retourne NDIS_STATUS_PENDING.

Pour déterminer quelles informations ont été correctement gérées par un pilote sous-jacent, les pilotes de filtre qui émettent des demandes OID doivent case activée la valeur dans le membre SupportedRevision dans la structure NDIS_OID_REQUEST après le retour de la requête OID. Pour plus d’informations sur les informations de version NDIS, consultez Spécification des informations de version NDIS.

Si NdisFOidRequest retourne NDIS_STATUS_PENDING, NDIS appelle la fonction FilterOidRequestComplete une fois que les pilotes sous-jacents ont terminé la requête OID. Dans ce cas, NDIS transmet les résultats de la requête au paramètre OidRequest de FilterOidRequestComplete. NDIS transmet la status finale de la requête au paramètre Status de FilterOidRequestComplete.

Si NdisFOidRequest retourne NDIS_STATUS_SUCCESS, il retourne les résultats d’une requête dans la structure NDIS_OID_REQUEST au niveau du paramètre OidRequest . Dans ce cas, NDIS n’appelle pas la fonction FilterOidRequestComplete .

Un pilote peut appeler NdisFOidRequest lorsqu’il se trouve à l’état Redémarrage, Exécution, Suspension ou Pause .

Note Un pilote de filtre doit effectuer le suivi des demandes OID qu’il génère et s’assurer qu’il n’appelle pas la fonction NdisFOidRequestComplete une fois ces requêtes terminées.