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 |
---|---|
|
Le pilote miniport a défini ou obtenu les données comme demandé. |
|
La demande spécifiée par OidRequest n’était pas valide ou n’était pas reconnue. |
|
La demande spécifiée par OidRequest a été reconnue, mais le pilote miniport ne la prend pas en charge. |
|
La mémoire tampon que fournit OidRequest était trop petite pour contenir les données demandées. |
|
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é. |
|
Un ou plusieurs des paramètres spécifiés pour la requête dans OidRequest n’étaient pas valides. |
|
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. |
|
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 |