PROTOCOL_CM_OPEN_AF fonction de rappel (ndis.h)
La fonction ProtocolCmOpenAf est requise. Cette fonction alloue des ressources par ouverture pour qu’un gestionnaire d’appels interagisse avec un client NDIS orienté connexion qui ouvre la famille d’adresses.
Syntaxe
PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;
NDIS_STATUS ProtocolCmOpenAf(
[in] NDIS_HANDLE CallMgrBindingContext,
[in] PCO_ADDRESS_FAMILY AddressFamily,
[in] NDIS_HANDLE NdisAfHandle,
[out] PNDIS_HANDLE CallMgrAfContext
)
{...}
Paramètres
[in] CallMgrBindingContext
Pour un gestionnaire d’appels non intégré, CallMgrBindingContext spécifie le handle dans une zone de contexte allouée au gestionnaire d’appels dans laquelle les gestionnaires d’appels conservent ses informations d’état par liaison. Le gestionnaire d’appels a fourni ce handle lorsqu’il a appelé NdisOpenAdapterEx.
Pour un gestionnaire d’appels intégré (MCM), CallMgrBindingContext spécifie le handle dans une zone de contexte miniport allouée dans laquelle le miniport conserve ses informations d’état par adaptateur. Le miniport a fourni ce handle dans son appel NdisMSetAttributesEx (pour les pilotes 5.x) ou son NdisMSetMiniportAttributes appel (pour les pilotes 6.x).
[in] AddressFamily
Spécifie la famille d’adresses qu’un client ouvre. Cette famille d’adresses a été enregistrée par le gestionnaire d’appels lorsqu’elle a appelé NdisCmRegisterAddressFamilyEx.
[in] NdisAfHandle
Spécifie un handle, fourni par NDIS, qui identifie de façon unique cette instance de famille d’adresses. Ce handle est opaque pour le gestionnaire d’appels et réservé à l’utilisation du système.
[out] CallMgrAfContext
Spécifie le handle d’une zone de contexte fournie par le gestionnaire d’appels dans laquelle le gestionnaire d’appels conserve l’état concernant cette ouverture d’une famille d’adresses qu’il fournit.
Valeur de retour
ProtocolCmOpenAf retourne l’état de ses opérations comme l’un des éléments suivants :
Retourner le code | Description |
---|---|
|
Indique que le gestionnaire d’appels a correctement alloué et initialisé toutes les ressources nécessaires pour accepter les demandes du client à cette famille d’adresses. |
|
Indique que l’opération demandée est gérée de manière asynchrone. Le gestionnaire d’appels doit appeler NdisCmOpenAddressFamilyComplete lorsqu’elle a terminé toutes ses opérations open-AF pour indiquer à NDIS (et au client) que les opérations ont été effectuées. |
|
Indique que le gestionnaire d’appels n’a pas pu terminer ses opérations nécessaires en raison d’un manque de ressources système disponibles, telles que la mémoire. |
|
Indique que le gestionnaire d’appels n’a pas pu se définir lui-même dans un état où il peut accepter les demandes du client pour fonctionner sur cette famille d’adresses. Il peut s’agir d’un état d’erreur propagé à partir d’une autre fonction de bibliothèque NDIS ou d’un état d’erreur déterminé approprié par l’enregistreur de pilotes. |
Remarques
ProtocolCmOpenAf effectue toutes les allocations requises de ressources et de structures dynamiques que l’enregistreur du gestionnaire d’appels juge nécessaire pour effectuer des opérations pour le compte du client qui ouvre une instance de cette famille d’adresses. Ces ressources incluent, mais elles ne sont pas limitées aux mémoires tampons, aux structures de données, aux événements et à d’autres ressources similaires. Un gestionnaire d’appels doit également initialiser toutes les données pertinentes par ouverture avant de retourner le contrôle à NDIS.
Lorsqu’un gestionnaire d’appels a alloué sa zone d’état par ouverture, l’adresse de la zone d’état doit être définie dans le handle CallMgrAfContext avant de retourner le contrôle à NDIS. Pour ce faire, la déréférencement CallMgrAfContext et stockez un pointeur vers la zone de données comme valeur du handle. Par exemple:
*CallMgrAfContext = SomeBuffer;
Si ProtocolCmOpenAf ne peut pas allouer les ressources par ouverture dont elle a besoin pour effectuer des demandes ultérieures au nom du client ouvrant cette famille d’adresses, elle doit libérer toutes les ressources qu’il a allouées pour l’ouverture et le contrôle de retour au NDIS avec NDIS_STATUS_RESOURCES.
Si ProtocolCmOpenAf a terminé ses opérations requises et que la cm est prête à accepter les demandes du client, ProtocolCmOpenAf doit retourner le contrôle le plus rapidement possible avec l’état de NDIS_STATUS_SUCCESS.
exemples de
Pour définir une fonction ProtocolCmOpenAf, 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 ProtocolCmOpenAf nommée « MyCmOpenAf », utilisez le type PROTOCOL_CM_OPEN_AF comme indiqué dans cet exemple de code :
PROTOCOL_CM_OPEN_AF MyCmOpenAf;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
NDIS_STATUS
MyCmOpenAf(
NDIS_HANDLE CallMgrBindingContext,
PCO_ADDRESS_FAMILY AddressFamily,
NDIS_HANDLE NdisAfHandle,
PNDIS_HANDLE CallMgrAfContext
)
{...}
Le type de fonction PROTOCOL_CM_OPEN_AF 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_CM_OPEN_AF 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 | Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir ProtocolCmOpenAf (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir ProtocolCmOpenAf (NDIS 5.1)) dans Windows XP. |
plateforme cible | Windows |
d’en-tête | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |