Partager via


MINIPORT_DIRECT_OID_REQUEST fonction de rappel (ndis.h)

NDIS appelle la fonction MiniportDirectOidRequest d’un pilote miniport pour gérer une requête OID directe afin d’interroger ou de définir des informations dans le pilote.

Note Vous devez déclarer la fonction à l’aide du type MINIPORT_DIRECT_OID_REQUEST . Pour plus d’informations, consultez la section Exemples suivante.
 

Syntaxe

MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;

NDIS_STATUS MiniportDirectOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_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 de 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

MiniportDirectOidRequest peut retourner l’une des valeurs status suivantes :

Code de retour Description
NDIS_STATUS_SUCCESS
Le jeu de pilotes miniport ou obtenu les données comme demandé.
NDIS_STATUS_PENDING
Le pilote miniport effectue la requête de manière asynchrone. Une fois que le pilote miniport a terminé tout le traitement, il doit appeler le Fonction NdisMDirectOidRequestComplete pour informer NDIS que la demande est terminée.
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 qu’OidRequest fournit é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 sur OidRequest n’étaient pas valides.
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 demandes avec une valeur status de NDIS_STATUS_NOT_ACCEPTED.
NDIS_STATUS_REQUEST_ABORTED
Le pilote miniport a cessé de traiter la demande. Par exemple, NDIS a appelé la fonction MiniportResetEx .
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 l’autorise. 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.

Remarques

MiniportDirectOidRequest est une fonction facultative. Un pilote miniport enregistre cette fonction s’il gère les requêtes OID directes. Un pilote spécifie le point d’entrée MiniportDirectOidRequest lorsqu’il appelle le Fonction NdisMRegisterMiniportDriver . Un pilote miniport qui enregistre le La fonction MiniportCancelDirectOidRequest doit également inscrire MiniportDirectOidRequest.

NDIS appelle la fonction MiniportDirectOidRequest pour son propre compte ou pour le compte d’un pilote de protocole lié qui a appelé la fonction NdisDirectOidRequest . Les pilotes miniport doivent examiner la demande fournie au paramètre OidRequest et effectuer l’action demandée.

Notez que NDIS ne valide pas le contenu spécifique à l’OID sur OidRequest. Par conséquent, le pilote lui-même doit valider ces contenus. Si le pilote détermine que la valeur à définir est hors limites, la demande doit échouer et retourner NDIS_STATUS_INVALID_DATA.

NDIS ne sérialise pas les requêtes qu’il envoie à MiniportDirectOidRequest avec d’autres requêtes OID. Le pilote miniport doit être en mesure de gérer plusieurs appels à MiniportDirectOidRequest lorsque d’autres demandes envoyées à MiniportOidRequest ou MiniportDirectOidRequest sont en cours.

Note La logique NDIS case activée-for-hang ne réinitialise pas un pilote miniport qui ne répond pas si le pilote miniport est en attente dans le contexte de l’appel MiniportOidRequest. Par conséquent, les pilotes miniport ne doivent pas attendre que les opérations matérielles se terminent dans le contexte de l’appel MiniportOidRequest . Au lieu de cela, le pilote peut retourner NDIS_STATUS_PENDING et mettre en file d’attente un élément de travail.
 
NDIS appelle MiniportDirectOidRequest à IRQL <= DISPATCH_LEVEL.

Exemples

Pour définir une fonction MiniportDirectOidRequest , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction MiniportDirectOidRequest nommée « MyDirectOidRequest », utilisez le type MINIPORT_DIRECT_OID_REQUEST comme indiqué dans cet exemple de code :

MINIPORT_DIRECT_OID_REQUEST MyDirectOidRequest;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
NDIS_STATUS
 MyDirectOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

Le type de fonction MINIPORT_DIRECT_OID_REQUEST est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_DIRECT_OID_REQUEST dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.1 et versions ultérieures.
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

MiniportCancelDirectOidRequest MiniportDevicePnPEventNotify

MiniportDirectOidRequest

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisDirectOidRequest

NdisMDirectOidRequestComplete

NdisMRegisterMiniportDriver