MINIPORT_SYNCHRONOUS_OID_REQUEST, fonction (ndis.h)

NDIS appelle la fonction de rappel MiniportSynchronousOidRequest d’un pilote miniport pour émettre une requête OID synchrone.

Syntaxe

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

Paramètres

[in] MiniportAdapterContext

Handle à une zone de contexte que le pilote miniport a allouée dans sa fonction MiniportInitializeEx . Le pilote miniport utilise cette zone de contexte pour conserver les informations d’état d’un adaptateur miniport.

[in] OidRequest

Pointeur vers une structure NDIS_OID_REQUEST qui contient à la fois la mémoire tampon et le paquet de requête que le pilote miniport doit gérer. En fonction de la demande, le pilote retourne les informations demandées dans la structure fournie.

Valeur retournée

MiniportSynchronousOidRequest peut retourner l’une des valeurs de status suivantes :

Code de retour Description
NDIS_STATUS_SUCCESS
Le pilote miniport a défini ou obtenu les données comme demandé.
NDIS_STATUS_INVALID_OID
La demande spécifiée par OidRequest n’était pas valide ou n’était pas reconnue.
NDIS_STATUS_NOT_SUPPORTED
La demande spécifiée par OidRequest a été reconnue, mais le pilote miniport ne la prend pas en charge.
NDIS_STATUS_BUFFER_TOO_SHORT
La mémoire tampon que fournit OidRequest était trop petite pour contenir les données demandées.
NDIS_STATUS_INVALID_LENGTH
La valeur spécifiée dans le membre InformationBufferLength de la structure NDIS_OID_REQUEST sur OidRequest est incorrecte pour le code OID_Xxx spécifié.
NDIS_STATUS_INVALID_DATA
Un ou plusieurs des paramètres spécifiés pour la requête dans OidRequest n’étaient pas valides.
NDIS_STATUS_INDICATION_REQUIRED
Le pilote miniport fournit une status d’achèvement OID avec une indication de status suivante. Un pilote miniport ne peut pas retourner NDIS_STATUS_INDICATION_REQUIRED sauf si l’OID particulier le permet. Pour déterminer si cette status est autorisée, consultez la page de référence OID. Pour plus d’informations sur NDIS_STATUS_INDICATION_REQUIRED, consultez NDIS_OID_REQUEST et NDIS_STATUS_INDICATION.
NDIS_STATUS_NOT_ACCEPTED
Après avoir appelé le Fonction MiniportDevicePnPEventNotify pour indiquer une suppression surprise, NDIS a appelé la fonction MiniportHaltEx du pilote. Si le pilote a reçu des requêtes OID avant que NDIS appelle MiniportHaltEx, il doit immédiatement effectuer ces requêtes avec une valeur status de NDIS_STATUS_NOT_ACCEPTED.

Les pilotes miniport ne sont pas toujours tenus de retourner NDIS_STATUS_NOT_ACCEPTED pour tous les OID après une suppression surprise, mais cela permet d’expliquer pourquoi l’appel a échoué.

Remarques

MiniportSynchronousOidRequest est une fonction facultative. Un pilote miniport enregistre cette fonction s’il gère les requêtes OID synchrones. Le pilote spécifie le point d’entrée MiniportSynchronousOidRequest lorsqu’il appelle la fonction NdisMRegisterMiniportDriver , à l’aide du membre SynchronousOidRequestHandler de la structure NDIS_MINIPORT_DRIVER_CHARACTERISTICS .

Les pilotes miniport ne doivent pas retourner NDIS_STATUS_PENDING ou NDIS_STATUS_REQUEST_ABORTED de MiniportSynchronousOidRequest. Les requêtes OID synchrones ne peuvent pas être suspendus ou annulés.

Les pilotes Miniport peuvent retourner NDIS_STATUS_NOT_ACCEPTED après que NDIS a appelé MiniportDevicePnPEventNotify pour informer le pilote de la suppression surprise de l’appareil. Toutefois, les pilotes miniport peuvent toujours compléter la requête OID avec un code status différent, si cela est possible. Pour plus d’informations, consultez la documentation spécifique de chaque OID.

Les pilotes Miniport sont censés effectuer rapidement les requêtes OID synchrones sans blocage, attente ou veille. Les requêtes OID synchrones sont utilisées uniquement pour les opérations à faible latence, et les pilotes miniport doivent s’efforcer de les terminer en quelques millisecondes. La plupart des demandes OID sont remises à MiniportOidRequest, qui est autorisé à pendre ou à attendre des durées plus longues.

NDIS ne sérialise pas les requêtes OID synchrones les unes contre les autres, contre d’autres requêtes OID, contre MiniportPause, contre MiniportResetEx ou contre les transitions d’alimentation. Il incombe au pilote miniport d’implémenter sa propre synchronisation et d’échouer les demandes qui sont remises à un moment où la demande ne peut pas être gérée correctement.

NDIS sérialise les requêtes OID synchrones sur MiniportHaltEx ; NDIS garantit qu’aucune requête OID synchrone ne sera active une fois MiniportHaltEx appelée.

Les pilotes Miniport qui implémentent la suspension sélective NDIS sont incompatibles avec les OID synchrones et ne doivent pas inscrire de gestionnaire MiniportSynchronousOidRequest .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1709
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

Interface de requête OID synchrone dans NDIS 6.80