Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[Si applica a KMDF e UMDF]
Il metodo WdfIoTargetStop interrompe l'invio di richieste in coda a una destinazione di I/O locale o remota.
Sintassi
VOID WdfIoTargetStop(
[in] WDFIOTARGET IoTarget,
[in] WDF_IO_TARGET_SENT_IO_ACTION Action
);
Parametri
[in] IoTarget
Handle per un oggetto di destinazione I/O locale o remoto ottenuto da una chiamata precedente a WdfDeviceGetIoTarget o WdfIoTargetCreateo da un metodo fornito da una destinazione di I/O specializzata.
[in] Action
Valore WDF_IO_TARGET_SENT_IO_ACTION-typed che specifica come il framework deve gestire le richieste di I/O inviate dal driver alla destinazione di I/O, se la destinazione non ha completato le richieste.
Valore restituito
Nessuno
Osservazioni:
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Se il driver può rilevare errori di dispositivo ripristinabili, è possibile che il driver chiami WdfIoTargetStop per interrompere temporaneamente l'invio delle richieste, quindi chiamare successivamente WdfIoTargetStart per riprendere l'invio delle richieste.
Durante l'arresto, una destinazione di I/O continua ad accettare nuove richieste, ma non recapita le richieste in coda al driver appropriato.
Per altre informazioni sui possibili stati per le destinazioni di I/O, vedere Controllo dello stato di una destinazione I/O generale.
Se un driver chiama WdfUsbTargetPipeConfigContinuousReader per configurare un lettore continuo per una pipe USB, il driver EvtDeviceD0Exit funzione di callback deve chiamare WdfIoTargetStop per arrestare il lettore.
Se un driver ha chiamato WdfIoTargetStop, può comunque inviare una richiesta alla destinazione impostando il flag WDF_REQUEST_OPTION_IGNORE_TARGET_STATE nella struttura WDF_REQUEST_SEND_OPTIONS della richiesta. Se un driver imposta questo flag, il driver può inviare una richiesta, ad esempio una richiesta di reimpostare una pipe USB (vedere WdfUsbTargetPipeResetSynchronously), a un dispositivo dopo che il driver ha chiamato WdfIoTargetStop.
Quando un driver chiama WdfIoTargetStop, il framework non tenta di annullare o attendere le richieste di I/O inviate in precedenza alla destinazione usando il flag WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE o il flag WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET nella struttura di WDF_REQUEST_SEND_OPTIONS della richiesta.
Il driver deve chiamare WdfIoTargetStart e WdfIoTargetStop in modo sincrono. Dopo che il driver chiama una di queste funzioni, non deve chiamare una delle due funzioni prima che venga restituita la prima chiamata.
Il driver può chiamare WdfIoTargetStop più volte da un singolo thread senza chiamare WdfIoTargetStart. Ad esempio, il driver potrebbe eseguire le operazioni seguenti:
- Chiamare WdfIoTargetStop e specificare un valore Action di WdfIoTargetLeaveSentIoPending.
- Determinare se la destinazione deve riprendere l'elaborazione delle richieste di I/O.
- Se la destinazione deve riprendere, chiamare WdfIoTargetStart. In caso contrario, chiamare di nuovo WdfIoTargetS top con un valore action di WdfIoTargetCancelSentIo.
Se il driver ha chiamato WdfUsbTargetPipeConfigContinuousReader per la pipe, WdfIoTargetStop deve essere chiamato in IRQL = PASSIVE_LEVEL.
Se il driver non ha chiamato WdfUsbTargetPipeConfigContinuousReader e se il parametro Action di WdfIoTargetStop is WdfIoTargetLeaveSentIoPending, WdfIoTargetStop può essere chiamato in IRQL <= DISPATCH_LEVEL. In caso contrario, WdfIoTargetStop viene chiamato in IRQL = PASSIVE_LEVEL.
Esempi
L'esempio di codice seguente illustra come una funzione di callback EvtDeviceD0Exit WdfIoTargetStop, se il driver usa un lettore continuo per una pipe USB.
NTSTATUS
MyEvtDeviceD0Exit(
IN WDFDEVICE Device,
IN WDF_POWER_DEVICE_STATE TargetState
)
{
PDEVICE_CONTEXT pDeviceContext;
pDeviceContext = GetMyDeviceContext(Device);
WdfIoTargetStop(
WdfUsbTargetPipeGetIoTarget(pDeviceContext->InterruptPipe),
WdfIoTargetCancelSentIo
);
return STATUS_SUCCESS;
}
Requisiti
| Requisito | Valore |
|---|---|
| Piattaforma di destinazione | Universale |
| versione minima di KMDF | 1.0 |
| versione minima di UMDF | 2.0 |
| intestazione | wdfiotarget.h (include Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | Vedere la sezione Osservazioni. |
| regole di conformità DDI | DriverCreate(kmdf), FailD0EntryIoTargetState(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |