IWDFIoTargetStateManagement ::Stop, méthode (wudfddi.h)
[Avertissement : UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Bien démarrer avec UMDF.]
La méthode Arrêter cesse d’envoyer des requêtes en file d’attente à une cible d’E/S locale .
Syntaxe
HRESULT Stop(
[in] WDF_IO_TARGET_SENT_IO_ACTION Action
);
Paramètres
[in] Action
Valeur WDF_IO_TARGET_SENT_IO_ACTION-typée qui identifie comment gérer les E/S envoyées lorsque l’objet cible d’E/S est arrêté.
Valeur de retour
Arrêter retourne toujours S_OK.
Remarques
Si votre pilote peut détecter des erreurs d’appareil récupérables, vous souhaiterez peut-être que votre pilote appelle Arrêter pour arrêter temporairement l’envoi de requêtes à la cible d’E/S locale, puis appeler ultérieurement IWDFIoTargetStateManagement ::Start pour reprendre l’envoi de demandes.
En outre, si un pilote appelle IWDFUsbTargetPipe2 ::ConfigureContinuousReader pour configurer un lecteur continu pour un canal USB, la fonction de rappel IPnpCallback ::OnD0Exit fonction de rappel doit appeler Arrêter pour arrêter le lecteur.
Si un pilote a appelé Arrêter, il peut toujours envoyer une requête à la cible en définissant l’indicateur WDF_REQUEST_OPTION_IGNORE_TARGET_STATE lorsqu’il appelle IWDFIoRequest ::Send. Si un pilote définit cet indicateur, le pilote peut envoyer une requête, telle qu’une demande de réinitialisation d’un canal USB (voir IWDFUsbTargetPipe ::Reset), à un appareil une fois que le pilote a appelé Arrêter.
Votre pilote doit appeler IWDFIoTargetStateManagement ::Start et Arrêter de façon synchrone. Une fois que le pilote appelle l’une de ces fonctions, il ne doit pas appeler l’une ou l’autre des fonctions avant que le premier appel ne retourne.
Votre pilote peut appeler Arrêter plusieurs fois sans appeler IWDFIoTargetStateManagement ::Start. Par exemple, votre pilote peut effectuer les opérations suivantes :
- Appelez Arrêter et spécifiez une valeur Action de WdfIoTargetLeaveSentIoPending.
- Déterminez si la cible doit reprendre le traitement des demandes d’E/S.
- Si la cible doit reprendre, appelez IWDFIoTargetStateManagement ::Start. Sinon, appelez Arrêter à nouveau avec une valeur Action de WdfIoTargetCancelSentIo.
Pour plus d’informations sur les cibles d’E/S, consultez Utilisation des cibles d’E/S.
Exemples
L’exemple de code suivant montre comment une fonction de rappel IPnpCallback ::OnD0Exit peut appeler Arrêter, si le pilote utilise un lecteur continu pour un canal USB. (Pour voir comment obtenir l’interface IWDFIoTargetStateManagement, consultez l’exemple de code à IWDFIoTargetStateManagement ::Start.)
HRESULT
CMyDevice::OnD0Exit(
__in IWDFDevice* pWdfDevice,
__in WDF_POWER_DEVICE_STATE previousState
)
{
HRESULT hr;
hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
return hr;
}
Exigences
Exigence | Valeur |
---|---|
fin du support | Indisponible dans UMDF 2.0 et versions ultérieures. |
plateforme cible | Bureau |
version minimale de UMDF | 1.5 |
d’en-tête | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |