Partager via


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 :

  1. Appelez Arrêter et spécifiez une valeur Action de 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 Arrêter à nouveau avec une valeur Action de WdfIoTargetCancelSentIo.
Pour plus d’informations sur Arrêter, 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 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

Voir aussi

IWDFIoTargetStateManagement

IWDFRemoteTarget ::Stop