Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Quando um driver recebe uma solicitação de E/S que não pode processar, ele geralmente faz o seguinte:
Ele encaminha a solicitação recebida para outro motorista.
Ele cria solicitações adicionais e as envia para outro driver.
Os drivers baseados em estrutura encaminham solicitações usando destinos de E/S, que representam outros drivers no sistema. Os drivers podem usar qualquer uma das seguintes técnicas para encaminhar uma solicitação para um destino de E/S:
Um driver pode encaminhar solicitações de E/S para o próximo driver inferior chamando WdfDeviceGetIoTarget, seguido por WdfRequestFormatRequestUsingCurrentType e, finalmente, WdfRequestSend.
Esta técnica só é útil se o controlador receber um pedido que não precisa modificar antes de reencaminhar.
Um driver pode chamar WdfFdoInitSetFilter para se registar como um driver de filtro.
Se um driver de filtro não fornecer uma fila de E/S para um tipo específico de solicitação de E/S, a estrutura encaminhará automaticamente solicitações desse tipo para o driver inferior seguinte.
Normalmente, um driver de função examina o conteúdo de cada solicitação de E/S. Se um driver de função não puder processar uma solicitação, ele poderá modificá-la e encaminhá-la para um destino de E/S. Ou, ele pode criar uma ou mais novas solicitações e enviá-las para um destino de E/S.
O objeto de destino de E/S da estrutura define vários métodos para enviar solicitações de E/S para outros drivers. Por exemplo, um driver pode chamar WdfIoTargetFormatRequestForRead, seguido por WdfRequestSend, para enviar uma solicitação de leitura para um destino de E/S. Para obter mais informações sobre destinos de I/O, consulte Using I/O Targets.
Raramente, um escritor de drivers pode querer especificar o conteúdo do local da pilha I/O WDM subjacente de uma solicitação antes de enviar uma solicitação a um alvo de E/S. Para esses casos, o driver pode chamar WdfRequestWdmFormatUsingStackLocation antes de chamar WdfRequestSend.
Às vezes, um driver deve enviar a mesma solicitação para vários destinos de E/S, normalmente porque o driver deve enviar um único comando para todos os seus dispositivos. Antes de enviar uma solicitação para um destino de E/S, o driver pode chamar WdfRequestChangeTarget para verificar se o destino de E/S está acessível.
O driver deve, por fim, concluir todas as solicitações que encaminha para um alvo de I/O, a menos que configure o sinalizador WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET ao chamar WdfRequestSend.
Observe que, quando um driver encaminha uma solicitação, o sistema não transfere literalmente o objeto de solicitação do framework do driver de envio para o driver de receção. Em vez disso, a estrutura cria um novo objeto de solicitação no driver que recebe a solicitação. Somente o pacote de solicitação de E/S (IRP) subjacente da solicitação é transferido de um driver para outro.