WdfIoTargetClose, fonction (wdfiotarget.h)
[S’applique à KMDF et UMDF]
La méthode WdfIoTargetClose ferme une cible d’E/S distante spécifiée.
Syntaxe
void WdfIoTargetClose(
[in] WDFIOTARGET IoTarget
);
Paramètres
[in] IoTarget
Handle vers un objet cible d’E/S obtenu à partir d’un appel précédent à WdfIoTargetCreate.
Valeur de retour
Aucun
Remarques
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Une fois qu’un pilote a appelé WdfIoTargetClose, il peut appeler WdfIoTargetOpen pour rouvrir la cible d’E/S distante.
Les pilotes qui fournissent une fonction de rappel EvtIoTargetRemoveComplete doivent appeler WdfIoTargetClose à partir de cette fonction de rappel.
Avant que la méthode WdfIoTargetClose retourne, l’infrastructure annule toutes les demandes d’E/S de la file d’attente cible.
Si un pilote a terminé d’utiliser une cible d’E/S distante et n’utilise pas à nouveau la cible et que la cible n’a pas encore d’objets de requête enfants qui sont toujours en attente, le pilote peut appeler WdfObjectDelete sans appeler d’abord WdfIoTargetClose. L’appel à WdfObjectDelete ferme la cible d’E/S distante, annule toutes les demandes d’E/S de la file d’attente cible et supprime l’objet cible d’E/S. (Notez que si l’objet parent de la cible d’E/S distante est un objet d’appareil, l’infrastructure ferme la cible et supprime l’objet cible lorsqu’il supprime l’objet parent.) Si la cible a des objets de requête enfants qui sont toujours en attente, le pilote doit appeler WdfIoTargetClose avant de pouvoir appeler en toute sécurité WdfObjectDelete.
Pour plus d’informations sur WdfIoTargetClose, consultez Contrôle de l’état d’une cible d’E/S générale.
Pour plus d’informations sur les cibles d’E/S, consultez Utilisation des cibles d’E/S.
Exemples
L’exemple de code suivant est une EvtIoTargetRemoveComplete fonction de rappel qui supprime une cible d’E/S spécifiée de la collection d’E/S cible d’un pilote, puis ferme la cible d’E/S.
VOID
MyEvtIoTargetRemoveComplete(
WDFIOTARGET IoTarget
)
{
//
// Get device information from the I/O target object's
// context space.
//
targetDeviceInfo = GetTargetDeviceInfo(IoTarget);
deviceExtension = targetDeviceInfo->DeviceExtension;
//
// Remove the target device from the collection.
//
WdfWaitLockAcquire(
deviceExtension->TargetDeviceCollectionLock,
NULL
);
WdfCollectionRemove(
deviceExtension->TargetDeviceCollection,
IoTarget
);
WdfWaitLockRelease(deviceExtension->TargetDeviceCollectionLock);
//
// Close the target.
//
WdfIoTargetClose(IoTarget);
}
Spécifications
Besoin | Valeur |
---|---|
plateforme cible | Universel |
version minimale de KMDF | 1.0 |
version minimale de UMDF | 2.0 |
En-tête | wdfiotarget.h (include Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |