Gestion des requêtes OID dans un adaptateur miniport
NDIS appelle la fonction MiniportOidRequest d’un pilote miniport pour envoyer une requête OID pour interroger ou définir des informations dans le pilote. NDIS appelle la fonction MiniportOidRequest pour son propre compte ou pour le compte d’un pilote qui a appelé la fonction NdisOidRequest ou NdisFOidRequest .
NDIS transmet à MiniportOidRequest un pointeur vers une structure NDIS_OID_REQUEST qui contient les informations de requête. La structure de requête contient un identificateur de OID_Xxx qui indique le type de requête et d’autres membres pour définir les données de requête.
Le membre Délai d’expiration spécifie un délai d’attente, en secondes, pour la demande. NDIS peut réinitialiser le pilote ou annuler la demande si le délai d’expiration expire avant que le pilote termine la demande.
Le membre RequestId spécifie un identificateur facultatif pour la demande. Les pilotes miniport peuvent définir le membre RequestId d’une indication status sur la valeur obtenue à partir du membre RequestId d’une requête OID associée. En règle générale, les pilotes miniport peuvent ignorer ce membre. Si un pilote doit définir ce membre, la page de référence pour l’OID particulier fournit les valeurs requises. Pour plus d’informations sur les indications de status, consultez Indications d’état de l’adaptateur.
Un pilote miniport qui gère correctement une demande de jeu OID doit définir le membre SupportedRevision dans la structure NDIS_OID_REQUEST lors du retour de la demande de jeu OID. Le membre SupportedRevision avertit l’initiateur de la demande de révision prise en charge par le pilote. Par exemple, un pilote miniport peut créer une structure Xxx_REVISION_2, fournir des valeurs appropriées pour une structure de Xxx_REVISION_1 et remplir le reste de la structure avec des zéros. Le pilote miniport signale Xxx_REVISION_1 dans le membre SupportedRevision . Dans ce cas, un pilote de protocole qui peut prendre en charge un Xxx_REVISION_2 utilise Xxx_REVISION_1 informations prises en charge par le pilote miniport. Pour plus d’informations sur les informations de version dans les structures NDIS, consultez Spécification des informations de version NDIS.
Un pilote miniport peut effectuer une requête OID de manière synchrone en retournant une status de réussite ou d’échec.
Un pilote miniport peut effectuer une requête OID de manière asynchrone en retournant NDIS_STATUS_PENDING. Dans ce cas, le pilote miniport doit appeler la fonction NdisMOidRequestComplete pour terminer l’opération.
Si MiniportOidRequest retourne NDIS_STATUS_PENDING, NDIS n’appellera pas MiniportOidRequest avec une autre demande pour l’adaptateur tant que la demande en attente n’est pas terminée.
NDIS peut appeler la fonction MiniportCancelOidRequest d’un pilote miniport pour annuler une requête OID.