Método IWDFDevice::CreateIoQueue (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
O método CreateIoQueue configura a fila de E/S padrão associada a um dispositivo ou cria uma fila de E/S secundária para o dispositivo.
Sintaxe
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
);
Parâmetros
[in, optional] pCallbackInterface
Um ponteiro para a interface IUnknown que a estrutura usa para determinar as funções de retorno de chamada de evento que o driver assina na fila. Essas são as funções que a estrutura chama quando ocorrem os eventos relevantes.
Para as versões 1.9 e posteriores do UMDF, esse parâmetro é necessário para filas de E/S que usam o método de expedição sequencial ou paralela e é opcional (pode ser NULL) para filas de E/S que usam o método de expedição manual. Para versões umdf anteriores à 1.9, esse parâmetro é necessário para todos os métodos de expedição.
[in] bDefaultQueue
Um valor BOOL que especifica se a fila de E/S padrão deve ser configurada ou criar uma fila de E/S secundária para o dispositivo. TRUE indica para configurar a fila de E/S padrão; FALSE indica a criação de uma fila de E/S secundária.
[in] DispatchType
Um valor do tipo WDF_IO_QUEUE_DISPATCH_TYPE que identifica como o driver deve receber solicitações da fila de E/S.
[in] bPowerManaged
Um valor BOOL que especifica se a fila de E/S é gerenciada por energia. TRUE indica que a estrutura coordena automaticamente a expedição para a fila de E/S com Plug and Play (PnP) e o estado de energia do dispositivo; FALSE indica que não há expedição coordenada automaticamente.
[in] bAllowZeroLengthRequests
Um valor BOOL que especifica se a estrutura coloca solicitações de E/S de comprimento zero diretamente na fila de E/S para o driver manipular. TRUE indica que o driver deve receber solicitações de leitura e gravação que tenham buffers de comprimento zero, ou seja, a estrutura coloca automaticamente esses tipos de solicitação diretamente na fila de E/S do driver. FALSE indica que a estrutura conclui solicitações de E/S de comprimento zero em vez de colocá-las na fila de E/S.
[out] ppIoQueue
Um ponteiro para uma variável que recebe um ponteiro para a interface IWDFIoQueue para o objeto de fila de E/S recém-criado ou o objeto de fila de E/S padrão.
Retornar valor
CreateIoQueue retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
A fila de E/S foi criada com êxito. |
|
A fila de E/S é configurada de uma das seguintes maneiras:
|
CreateIoQueue também pode retornar outros valores HRESULT.
Comentários
A interface IUnknown que o driver fornece para o parâmetro pCallbackInterface pode dar suporte a várias funções de retorno de chamada de fila. A estrutura chama o método QueryInterface na interface IUnknown fornecida várias vezes para recuperar os métodos de interface compatíveis com o driver. Quando os aplicativos executam ações relacionadas aos métodos das interfaces com suporte (como uma solicitação de leitura de E/S), a estrutura chama os métodos (como, o método IQueueCallbackRead::OnRead ) para notificar o driver. A estrutura chama QueryInterface para as seguintes interfaces:
IQueueCallbackDefaultIoHandler
Quando o driver passa WdfIoQueueDispatchSequential ou WdfIoQueueDispatchParallel para o parâmetro DispatchType de CreateIoQueue para criar uma fila nãomanual, CreateIoQueue só poderá retornar S_OK se o objeto de retorno de chamada de fila do driver implementar pelo menos uma das interfaces anteriores e indicar suporte a essas interfaces por meio da interface IUnknown para a qual pCallbackInterface aponta.
Quando o driver passa WdfIoQueueDispatchManual para DispatchType para criar uma fila manual, CreateIoQueue só poderá retornar S_OK se o objeto de retorno de chamada da fila do driver não implementar ou indicar suporte a nenhuma das interfaces de retorno de chamada anteriores. Para obter mais informações sobre os objetos de retorno de chamada do driver, consulte Criando objetos de retorno de chamada.
A estrutura também chama QueryInterface na interface IUnknown fornecida para determinar se o driver dá suporte a qualquer uma das seguintes interfaces:
A estrutura também chama QueryInterface na interface IUnknown fornecida para determinar se o driver dá suporte à interface IQueueCallbackStateChange . Opcionalmente, o objeto de retorno de chamada da fila do driver pode implementar e indicar o suporte de IQueueCallbackStateChange somente para uma fila manual. O objeto de retorno de chamada de fila do driver não deve implementar e indicar o suporte de IQueueCallbackStateChange para uma fila sequencial ou paralela.
Exemplos
Para obter um exemplo de código de como usar o método CreateIoQueue , consulte IWDFDriver::CreateDevice.
Requisitos
Requisito | Valor |
---|---|
Fim do suporte | Indisponível no UMDF 2.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Versão mínima do UMDF | 1.5 |
Cabeçalho | wudfddi.h (inclua Wudfddi.h) |
DLL | WUDFx.dll |