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 |
---|---|
|
Um parâmetro de entrada é inválido. |
|
A quantidade de memória disponível é muito baixa. |
|
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) |