Compartilhar via


Função WdfDeviceConfigureRequestDispatching (wdfdevice.h)

[Aplica-se a KMDF e UMDF]

O método WdfDeviceConfigureRequestDispatching faz com que a estrutura enfileira um tipo especificado de solicitações de E/S para uma fila de E/S especificada.

Sintaxe

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

Parâmetros

[in] Device

Fornece um identificador para um objeto de dispositivo de estrutura.

[in] Queue

Fornece um identificador para um objeto de fila de estrutura.

[in] RequestType

Fornece um enumerador do tipo WDF_REQUEST_TYPE que identifica o tipo de solicitação a ser enfileirada. Os únicos enumeradores válidos são:

WdfRequestTypeCreate

WdfRequestTypeRead

WdfRequestTypeWrite

WdfRequestTypeDeviceControl

WdfRequestTypeDeviceControlInternal

Retornar valor

Se a operação for bem-sucedida, o método retornará STATUS_SUCCESS. Os valores retornados adicionais incluem:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
Um parâmetro de entrada é inválido.
STATUS_INSUFFICIENT_RESOURCES
A quantidade de memória disponível é muito baixa.
STATUS_WDF_BUSY
O driver já atribuiu uma fila ao tipo de solicitação especificado.
 

O método pode retornar outros valores NTSTATUS.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Cada chamada para WdfDeviceConfigureRequestDispatching especifica um tipo de solicitação. Se você quiser que uma única fila de E/S receba vários tipos de solicitações (por exemplo, solicitações de leitura e gravação), seu driver poderá chamar WdfDeviceConfigureRequestDispatching várias vezes para uma única fila de E/S.

Para obter mais informações sobre WdfDeviceConfigureRequestDispatching, consulte Criando filas de E/S e Gerenciando filas de E/S.

Exemplos

O exemplo de código a seguir inicializa uma estrutura WDF_IO_QUEUE_CONFIG , cria uma fila de E/S e configura a fila para que ela receba solicitações de gravação.

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;
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfdevice.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate