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.
Com exceção dos drivers de nível mais alto, todos os drivers lidam com solicitações IRP_MJ_READ e IRP_MJ_WRITE de forma assíncrona. As rotinas DispatchRead e DispatchWrite , mesmo em um driver de nível mais alto, não podem esperar que os drivers de nível inferior terminem de processar uma solicitação assíncrona de leitura ou gravação; Devem transmitir esse pedido aos condutores inferiores e regressar STATUS_PENDING.
Da mesma forma, a rotina DispatchReadWrite de um driver de dispositivo de nível mais baixo deve passar a solicitação de transferência para outras rotinas de driver que processam solicitações de E/S de dispositivo e, em seguida, retornar STATUS_PENDING.
Por vezes, um controlador de nível superior tem de configurar IRPs de transferências parciais e transmiti-los a controladores inferiores. O driver de nível superior só pode concluir o IRP de leitura/gravação original quando as suas solicitações de transferência parcial forem atendidas pelos drivers inferiores.
Por exemplo, a rotina DispatchReadWrite de um driver de classe SCSI é necessária para dividir grandes solicitações de transferência que excedem os recursos de transferência do HBA subjacente em um conjunto de solicitações de transferência parcial. O driver de classe deve configurar os parâmetros em seus IRPs de transferência parcial para que os drivers de porta/miniporta SCSI possam satisfazer cada solicitação de transferência parcial em uma única operação DMA.
Outros drivers de dispositivo que usam DMA ou PIO também podem precisar dividir grandes solicitações de transferência para si mesmos.
Para obter mais informações sobre como usar DMA e PIO, consulte Técnicas de entrada/saída.