Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se o driver tiver especificado o método de despacho sequencial ou paralelo para uma fila de E/S, a estrutura chamará uma função de retorno de chamada fornecida pelo driver sempre que a estrutura estiver pronta para entregar uma das solicitações da fila ao driver.
Para cada fila de E/S, o driver pode fornecer uma ou mais das seguintes funções de retorno de chamada, que são chamadas de manipuladores de solicitação:
EvtIoRead
A estrutura chama a função de retorno de chamada EvtIoRead de uma fila de E/S quando uma solicitação de leitura está disponível na fila.
EvtIoWrite
A estrutura chama a função de retorno de chamada EvtIoWrite da fila de E/S quando uma solicitação de gravação está disponível na fila.
EvtIoDeviceControl
A estrutura chama a função de retorno de chamada EvtIoDeviceControl de uma fila de E/S quando uma solicitação de controle de E/S do dispositivo está disponível na fila.
EvtIoInternalDeviceControl
A estrutura chama a função de retorno de chamada EvtIoInternalDeviceControl de uma fila de E/S quando uma solicitação de controle de E/S interna do dispositivo está disponível na fila.
EvtIoDefault
A estrutura chamará a função de retorno de chamada EvtIoDefault de uma fila de E/S quando qualquer solicitação estiver disponível, caso o driver não tenha fornecido a função de retorno de chamada associada a um tipo específico de solicitação.
O driver registra funções de retorno de chamada quando chama WdfIoQueueCreate para criar uma fila de E/S para um dispositivo.
Cada uma dessas funções de retorno de chamada recebe dois argumentos de entrada: um identificador para a solicitação de E/S que o framework está entregando ao driver e um identificador para a fila de E/S que armazenou a solicitação. Uma função de retorno de chamada pode determinar o dispositivo de destino chamando WdfIoQueueGetDevice.
O framework chama os request handlers do seu driver em um contexto de thread arbitrário. Um driver não deve esperar por um longo período de tempo durante a execução em um contexto de thread arbitrário. Em alguns casos, o driver pode usar objetos de dispatcher de kernel como mecanismos de sincronização. Para obter informações sobre quando o seu driver pode esperar por objetos do dispatcher e quais ações tomar quando não for possível, consulte Introdução aos Objetos do Dispatcher do Kernel.