Metodo IWDFDevice::CreateIoQueue (wudfddi.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]
Il metodo CreateIoQueue configura la coda di I/O predefinita associata a un dispositivo o crea una coda di I/O secondaria per il dispositivo.
Sintassi
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
Parametri
[in, optional] pCallbackInterface
Puntatore all'interfaccia IUnknown usata dal framework per determinare le funzioni di callback degli eventi sottoscritte dal driver nella coda. Si tratta delle funzioni chiamate dal framework quando si verificano gli eventi pertinenti.
Per UMDF versioni 1.9 e successive, questo parametro è necessario per le code di I/O che usano il metodo di invio sequenziale o parallelo ed è facoltativo (può essere NULL) per le code di I/O che usano il metodo di invio manuale. Per le versioni di UMDF precedenti alla 1.9, questo parametro è necessario per tutti i metodi di invio.
[in] bDefaultQueue
Valore BOOL che specifica se configurare la coda di I/O predefinita o creare una coda di I/O secondaria per il dispositivo. TRUE indica di configurare la coda di I/O predefinita; FALSE indica di creare una coda di I/O secondaria.
[in] DispatchType
Valore tipizzato WDF_IO_QUEUE_DISPATCH_TYPE che identifica il modo in cui il driver deve ricevere richieste dalla coda di I/O.
[in] bPowerManaged
Valore BOOL che specifica se la coda di I/O è gestita dall'alimentazione. TRUE indica che il framework coordina automaticamente l'invio per la coda di I/O con Plug and Play (PnP) e lo stato di alimentazione del dispositivo; FALSE indica che l'invio coordinato non viene eseguito automaticamente.
[in] bAllowZeroLengthRequests
Valore BOOL che specifica se il framework inserisce le richieste di I/O di lunghezza zero direttamente nella coda di I/O per il driver da gestire. TRUE indica che il driver deve ricevere richieste di lettura e scrittura con buffer di lunghezza zero, ovvero il framework inserisce automaticamente questi tipi di richiesta direttamente nella coda di I/O per il driver. FALSE indica che il framework completa le richieste di I/O di lunghezza zero anziché inserirle nella coda di I/O.
[out] ppIoQueue
Puntatore a una variabile che riceve un puntatore all'interfaccia IWDFIoQueue per l'oggetto coda I/O appena creato o l'oggetto coda di I/O predefinito.
Valore restituito
CreateIoQueue restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
La coda di I/O è stata creata correttamente. |
|
La coda di I/O è configurata in uno dei modi seguenti:
|
CreateIoQueue potrebbe restituire anche altri valori HRESULT.
Commenti
L'interfaccia IUnknown fornita dal driver per il parametro pCallbackInterface può supportare diverse funzioni di callback della coda. Il framework chiama il metodo QueryInterface nell'interfaccia IUnknown fornita più volte per recuperare i metodi di interfaccia supportati dal driver. Quando le applicazioni eseguono azioni correlate ai metodi delle interfacce supportate (ad esempio, una richiesta di lettura di I/O), il framework chiama i metodi (ad esempio, il metodo IQueueCallbackRead::OnRead ) per notificare al driver. Il framework chiama QueryInterface per le interfacce seguenti:
IQueueCallbackDefaultIoHandler
Quando il driver passa WdfIoQueueDispatchSequential o WdfIoQueueDispatchParallel per il parametro DispatchType di CreateIoQueue per creare una coda non gestita, CreateIoQueue può restituire S_OK solo se l'oggetto di callback della coda del driver implementa almeno una delle interfacce precedenti e indica il supporto di tali interfacce tramite l'interfaccia IUnknown a cui punta pCallbackInterface .
Quando il driver passa WdfIoQueueDispatchManual per DispatchType per creare una coda manuale, CreateIoQueue può restituire S_OK solo se l'oggetto callback della coda del driver non implementa o indica il supporto di una qualsiasi delle interfacce di callback precedenti. Per altre informazioni sugli oggetti di callback del driver, vedere Creazione di oggetti di callback.
Il framework chiama anche QueryInterface nell'interfaccia IUnknown fornita per determinare se il driver supporta una delle interfacce seguenti:
Il framework chiama anche QueryInterface nell'interfaccia IUnknown fornita per determinare se il driver supporta l'interfaccia IQueueCallbackStateChange . L'oggetto callback della coda del driver può implementare e indicare facoltativamente il supporto di IQueueCallbackStateChange solo per una coda manuale. L'oggetto callback della coda del driver non deve implementare e indicare il supporto di IQueueCallbackStateChange per una coda sequenziale o parallela.
Esempio
Per un esempio di codice su come usare il metodo CreateIoQueue , vedere IWDFDriver::CreateDevice.
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1.5 |
Intestazione | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |