Partager via


Méthode IWDFIoTargetStateManagement ::Stop (wudfddi.h)

[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]

La méthode Stop 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 de type WDF_IO_TARGET_SENT_IO_ACTION qui identifie comment gérer les E/S envoyées lorsque l’objet cible d’E/S est arrêté.

Valeur retournée

Arrêter retourne toujours S_OK.

Remarques

Si votre pilote peut détecter des erreurs d’appareil récupérables, vous pouvez appeler Stop pour arrêter temporairement l’envoi de demandes à la cible d’E/S locale, puis appeler ultérieurement IWDFIoTargetStateManagement ::Start pour reprendre l’envoi des demandes.

En outre, si un pilote appelle IWDFUsbTargetPipe2 ::ConfigureContinuousReader pour configurer un lecteur continu pour un canal USB, la fonction de rappel IPnpCallback ::OnD0Exit du pilote doit appeler Stop pour arrêter le lecteur.

Si un pilote a appelé Stop, 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, il peut envoyer une demande, telle qu’une demande de réinitialisation d’un canal USB (voir IWDFUsbTargetPipe ::Reset), à un périphérique après que le pilote a appelé Stop.

Votre pilote doit appeler IWDFIoTargetStateManagement ::Start et Stop de manière synchrone. Une fois que le pilote a appelé l’une de ces fonctions, il ne doit pas appeler l’une ou l’autre des fonctions avant le retour du premier appel.

Votre pilote peut appeler Stop plusieurs fois sans appeler IWDFIoTargetStateManagement ::Start. Par exemple, votre pilote peut effectuer les opérations suivantes :

  1. Appelez Stop et spécifiez la valeur Actionde WdfIoTargetLeaveSentIoPending.
  2. Déterminez si la cible doit reprendre le traitement des demandes d’E/S.
  3. Si la cible doit reprendre, appelez IWDFIoTargetStateManagement ::Start. Sinon, appelez à nouveau Stop avec la valeur ActionWdfIoTargetCancelSentIo.
Pour plus d’informations sur l’arrêt, 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 de cibles d’E/S.

Exemples

L’exemple de code suivant montre comment une fonction de rappel IPnpCallback ::OnD0Exit peut appeler Stop, si le pilote utilise un lecteur continu pour un canal USB. (Pour voir comment obtenir l’interface IWDFIoTargetStateManagement , consultez l’exemple de code sur IWDFIoTargetStateManagement ::Start.)

HRESULT
CMyDevice::OnD0Exit(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
    HRESULT hr;
    hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
    return hr;
}

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1.5
En-tête wudfddi.h (inclure Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFIoTargetStateManagement

IWDFRemoteTarget ::Stop