Funzione WdfUsbTargetPipeResetSynchronously (wdfusb.h)
[Si applica a KMDF e UMDF]
Il metodo WdfUsbTargetPipeResetSynchronously compila una richiesta di reimpostazione e lo invia in modo sincrono a una pipe USB specificata.
Sintassi
NTSTATUS WdfUsbTargetPipeResetSynchronously(
[in] WDFUSBPIPE Pipe,
[in, optional] WDFREQUEST Request,
[in, optional] PWDF_REQUEST_SEND_OPTIONS RequestOptions
);
Parametri
[in] Pipe
Handle a un oggetto pipe del framework ottenuto chiamando WdfUsbInterfaceGetConfiguredPipe.
[in, optional] Request
Handle per un oggetto richiesta framework. Questo parametro è facoltativo e può essere NULL. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
[in, optional] RequestOptions
Puntatore a una struttura WDF_REQUEST_SEND_OPTIONS allocata dal chiamante che specifica le opzioni per la richiesta. Questo puntatore è facoltativo e può essere NULL. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
Valore restituito
WdfUsbTargetPipeResetSynchronously restituisce il valore dello stato di completamento dell'I/O USB se l'operazione ha esito positivo. In caso contrario, questo metodo può restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
La dimensione della struttura WDF_REQUEST_SEND_OPTIONS specificata dal parametro RequestOptions non è corretta. |
|
È stato rilevato un parametro non valido. |
|
Memoria insufficiente disponibile. |
|
Il chiamante IRQL non è PASSIVE_LEVEL o la richiesta di I/O che il parametro Request specificato è già stato accodato a una destinazione di I/O. |
|
Il driver ha fornito un valore di timeout e la richiesta non è stata completata entro il tempo assegnato. |
|
Il pacchetto di richiesta I/O (IRP) che il parametro Request rappresenta non fornisce strutture IO_STACK_LOCATION sufficienti per consentire al driver di inoltrare la richiesta. |
Questo metodo potrebbe restituire anche altri valori NTSTATUS.
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
Commenti
Usare il metodo WdfUsbTargetPipeResetSynchronously per inviare una richiesta di reimpostazione USB in modo sincrono. Per inviare tali richieste in modo asincrono, usare WdfUsbTargetPipeFormatRequestForReset, seguito da WdfRequestSend.
Prima che il framework reimposta la pipe USB della destinazione di I/O, annulla tutte le richieste di I/O che rimangono nella coda di destinazione di I/O. Il driver non deve inviare richieste di I/O aggiuntive alla destinazione di I/O fino a quando WdfUsbTargetPipeResetSynchronously restituisce .
Il driver deve chiamare WdfIoTargetStop prima di chiamare WdfUsbTargetPipeResetSynchronously. Dopo che WdfUsbTargetPipeResetSynchronously restituisce, il driver può chiamare WdfIoTargetStart.
Quando un driver chiama WdfUsbTargetPipeResetSynchronously, il framework invia una richiesta di URB_FUNCTION_RESET_PIPE alla destinazione di I/O. Per altre informazioni sulla reimpostazione di una pipe USB, vedere la specifica USB.
Il metodo WdfUsbTargetPipeResetSynchronously non restituisce fino al completamento della richiesta, a meno che il driver non fornisca un valore di timeout nella struttura di WDF_REQUEST_SEND_OPTIONS a cui punta il parametro RequestOptions o a meno che non venga rilevato un errore.
È possibile inoltrare una richiesta di I/O ricevuta dal driver in una coda di I/O oppure è possibile creare e inviare una nuova richiesta.
Per inoltrare una richiesta di I/O ricevuta dal driver in una coda di I/O, specificare l'handle della richiesta ricevuta per il parametro Request del metodo WdfUsbTargetPipeResetSynchronously.
Per creare e inviare una nuova richiesta, specificare un handle di richiesta NULL per il parametro Request oppure creare un nuovo oggetto request e specificare il relativo handle:
- Se si specifica un handle di richiesta NULL , il framework usa un oggetto request interno. Questa tecnica è semplice da usare, ma il driver non può annullare la richiesta.
- Se si chiama WdfRequestCreate per creare uno o più oggetti richiesta, è possibile riutilizzare questi oggetti richiesta chiamando WdfRequestReuse. Questa tecnica consente all'evtDriverDevice del driverAggiungi la funzione di callback per preallocare gli oggetti di richiesta per un dispositivo. Inoltre, un altro thread driver può chiamare WdfRequestCancelSentRequest per annullare la richiesta, se necessario.
Per informazioni sull'acquisizione di informazioni sullo stato dopo il completamento di una richiesta di I/O, vedere Recupero delle informazioni di completamento.
Per altre informazioni sul metodo WdfUsbTargetPipeResetSynchronously e sulle destinazioni di I/O USB, vedere Destinazioni di I/O USB.
Esempio
Nell'esempio di codice seguente viene inviata una richiesta di reimpostazione alla pipe di un dispositivo USB.
NTSTATUS status;
status = WdfUsbTargetPipeResetSynchronously(
Pipe,
WDF_NO_HANDLE,
NULL
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfusb.h (include Wdfusb.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestForUrbXrb(kmdf), UsbKmdfIrql(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrql2(kmdf), UsbKmdfIrqlExplicit(kmdf) |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per