Condividi tramite


Funzione WdfDeviceConfigureRequestDispatching (wdfdevice.h)

[Si applica a KMDF e UMDF]

Il metodo WdfDeviceConfigureRequestDispatching fa sì che il framework accoda un tipo specificato di richieste di I/O a una coda di I/O specificata.

Sintassi

NTSTATUS WdfDeviceConfigureRequestDispatching(
  [in] WDFDEVICE        Device,
  [in] WDFQUEUE         Queue,
  [in] WDF_REQUEST_TYPE RequestType
);

Parametri

[in] Device

Fornisce un handle a un oggetto dispositivo framework.

[in] Queue

Fornisce un handle a un oggetto coda del framework.

[in] RequestType

Fornisce un enumeratore tipizzato WDF_REQUEST_TYPE che identifica il tipo di richiesta da accodare. Gli unici enumeratori validi sono:

WdfRequestTypeCreate

WdfRequestTypeRead

WdfRequestTypeWrite

WdfRequestTypeDeviceControl

WdfRequestTypeDeviceControlInternal

Valore restituito

Se l'operazione ha esito positivo, il metodo restituisce STATUS_SUCCESS. I valori restituiti aggiuntivi includono:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
Un parametro di input non è valido.
STATUS_INSUFFICIENT_RESOURCES
La quantità di memoria disponibile è troppo bassa.
STATUS_WDF_BUSY
Il driver ha già assegnato una coda al tipo di richiesta specificato.
 

Il metodo potrebbe restituire altri valori NTSTATUS.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Commenti

Ogni chiamata a WdfDeviceConfigureRequestDispatching specifica un tipo di richiesta. Se si vuole che una singola coda di I/O riceva più tipi di richieste (ad esempio, richieste di lettura e scrittura), il driver può chiamare WdfDeviceConfigureRequestDispatching più volte per una singola coda di I/O.

Per altre informazioni su WdfDeviceConfigureRequestDispatching, vedere Creazione di code di I/O e gestione delle code di I/O.

Esempio

Nell'esempio di codice seguente viene inizializzata una struttura WDF_IO_QUEUE_CONFIG , viene creata una coda di I/O e quindi viene configurata la coda in modo che riceva le richieste di scrittura.

WDF_IO_QUEUE_CONFIG queueConfig;
WDFQUEUE WriteQueue;

WDF_IO_QUEUE_CONFIG_INIT(
                         &queueConfig,
                         WdfIoQueueDispatchSequential
                         );
queueConfig.EvtIoWrite = MyEvtIoWrite;
status = WdfIoQueueCreate(
                          Device,
                          &queueConfig,
                          WDF_NO_OBJECT_ATTRIBUTES,
                          &WriteQueue
                          );
if(!NT_SUCCESS(status)) {
    return status;
}
status = WdfDeviceConfigureRequestDispatching(
                                              Device,
                                              WriteQueue,
                                              WdfRequestTypeWrite
                                              );
if(!NT_SUCCESS(status)) {
    return status;
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1,0
Versione UMDF minima 2,0
Intestazione wdfdevice.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate