Partager via


PROTOCOL_CO_OID_REQUEST_COMPLETE fonction de rappel (ndis.h)

La fonction ProtocolCoOidRequestComplete termine le traitement d’une requête OID CoNDIS asynchrone.

Remarque Vous devez déclarer la fonction à l’aide du type PROTOCOL_CO_OID_REQUEST_COMPLETE. Pour plus d’informations, consultez la section Exemples suivants.
 

Syntaxe

PROTOCOL_CO_OID_REQUEST_COMPLETE ProtocolCoOidRequestComplete;

void ProtocolCoOidRequestComplete(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest,
  [in]      NDIS_STATUS Status
)
{...}

Paramètres

[in] ProtocolAfContext

Handle qui identifie une zone de contexte de famille d’adresses (AF). Si le pilote est un client, il a fourni ce handle quand il a appelé le fonction NdisClOpenAddressFamilyEx pour se connecter au gestionnaire d’appels. Si le pilote est un gestionnaire d’appels ou un gestionnaire d’appels miniport (MCM), il a fourni ce handle à partir de sa fonction ProtocolCmOpenAf.

[in] ProtocolVcContext

Handle qui identifie la connexion virtuelle active (VC) pour laquelle le pilote a demandé ou défini des informations, si la demande était spécifique à la vc. Sinon, ce paramètre est NULL .

[in] ProtocolPartyContext

Handle qui identifie la partie sur un vc multipoint pour lequel le pilote a demandé ou défini des informations, si la demande est spécifique à la partie. Sinon, ce paramètre est NULL .

[in, out] OidRequest

Pointeur vers la structure de NDIS_OID_REQUEST fournie par le pilote qui a été passée au NdisCoOidRequest ou NdisMCmOidRequest fonction.

[in] Status

État final de la demande. Le pilote cible ou NDIS détermine cet état final. Ce paramètre détermine ce que ProtocolCoOidRequestComplete effectue avec les informations à OidRequest .

Valeur de retour

Aucun

Remarques

NDIS appelle la fonction ProtocolCoOidRequestComplete pour terminer le traitement du client CoNDIS, du gestionnaire d’appels ou de la requête OID MCM pour laquelle la fonction NdisCoOidRequest ou NdisMCmOidRequest fonction a retourné NDIS_STATUS_PENDING.

Pour inscrire ProtocolCoOidRequestComplete en tant que client, un pilote initialise un NDIS_CO_CLIENT_OPTIONAL_HANDLERS structure et la transmet au paramètre OptionalHandlers de la fonction NdisSetOptionalHandlers. Pour inscrire ProtocolCoOidRequestComplete en tant que gestionnaire d’appels, un pilote initialise un NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS structure et la transmet au paramètre OptionalHandlers de NdisSetOptionalHandlers.

Le pilote cible est le pilote qui a servi la demande d’informations OID. Appel d’un pilote cible au NdisMCoOidRequestComplete, NdisCoOidRequestComplete, ou fonction NdisMCmOidRequestComplete a provoqué l’appel de la fonction ProtocolCoOidRequestComplete. NDIS transfère la valeur du paramètre Status qui a été transmis à ces fonctions en tant que paramètre d’entrée Status pour ProtocolCoOidRequestComplete.

ProtocolCoOidRequestComplete utilise la valeur d’entrée de Status comme suit :

  • Si d’état est NDIS_STATUS_SUCCESS, l'BytesRead ou membre octets de la structure NDIS_OID_REQUEST que le paramètre OidRequest pointe pour spécifier la quantité d’informations transférées à partir de la mémoire tampon dans la InformationBuffer membre de NDIS_OID_REQUEST au pilote cible ou la quantité d’informations retournées à InformationBuffer, respectivement.

    Si le pilote a effectué une demande de requête, ProtocolCoOidRequestComplete pouvez utiliser les données retournées dans InformationBuffer en fonction de la valeur spécifiée dans le membre Oid de NDIS_OID_REQUEST.

  • Si Status est NDIS_STATUS_INVALID_LENGTH ou NDIS_STATUS_BUFFER_TOO_SHORT, le membre BytesNeededed de la structure NDIS_OID_REQUEST qui OidRequest pointe pour spécifier la valeur spécifique à l’OID de l'InformationBufferLength membre de NDIS_OID_REQUEST requis pour effectuer l’opération demandée.

    Dans ces circonstances, ProtocolCoOidRequestComplete peut allouer suffisamment d’espace tampon pour la requête, configurer une autre structure NDIS_OID_REQUEST avec la valeur requise pour InformationBufferLength, puis réessayer la requête OID.

  • Si Status est une valeur NDIS_STATUS_ XXX qui est une erreur irrécupérable, ProtocolCoOidRequestComplete doit libérer la mémoire de la structure NDIS_OID_REQUEST. ProtocolCoOidRequestComplete doit également déterminer si le pilote doit fermer la liaison ou ajuster ses informations d’état spécifiques à la liaison pour gérer les opérations d’E/S réseau continues sur la liaison.
Pour plus d’informations sur les OID définis par le système, consultez NDIS OIDs.

ProtocolCoOidRequestComplete peut être appelée avant que le pilote ait eu le temps d’inspecter le code d’état qui NdisCoOidRequest ou NdisMCmOidRequest retourne.

NDIS appelle ProtocolCoOidRequestComplete au <IRQL = DISPATCH_LEVEL.

exemples de

Pour définir une fonction ProtocolCoOidRequestComplete, 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 fonctions permet d'Analyse du code pour les pilotes, de vérificateur de pilotes statiques (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction ProtocolCoOidRequestComplete nommée « MyCoOidRequestComplete », utilisez le type PROTOCOL_CO_OID_REQUEST_COMPLETE comme indiqué dans cet exemple de code :

PROTOCOL_CO_OID_REQUEST_COMPLETE MyCoOidRequestComplete;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyCoOidRequestComplete(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest,
    NDIS_STATUS  Status
    )
  {...}

Le type de fonction PROTOCOL_CO_OID_REQUEST_COMPLETE est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les 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 PROTOCOL_CO_OID_REQUEST_COMPLETE 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 annoter le comportement de la fonction.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Windows
d’en-tête ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL (voir la section Remarques)

Voir aussi

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisMCoOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf