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.
O gerenciador de E/S, o gerenciador Plug and Play e o gerenciador de energia usam pacotes de solicitação de E/S (IRPs) para se comunicar com drivers de modo kernel e permitir que os drivers se comuniquem entre si.
O gerenciador de E/S executa as seguintes etapas:
Aceita solicitações de E/S, que geralmente se originam de aplicativos de modo de usuário.
Cria IRPs para representar as solicitações de E/S.
Redireciona os IRPs para os controladores apropriados.
Monitoriza os IRPs até serem concluídos.
Retorna o status para o solicitante original de cada operação de E/S.
Um IRP pode ser encaminhado para mais de um controlador. Por exemplo, uma solicitação para abrir um ficheiro num disco pode primeiro ser encaminhada para um driver de sistema de ficheiros, passar por um driver de espelho intermédio e, finalmente, chegar a um driver de disco e, possivelmente, a um driver de barramento de hardware PNP. Este conjunto de drivers é conhecido como uma pilha de drivers.
Portanto, cada IRP tem uma parte fixa, além de um local de pilha de E/S específico do driver para cada driver que controla o dispositivo:
Na parte fixa (ou cabeçalho), o gerenciador de E/S mantém informações sobre a solicitação original, como o ID e os parâmetros do thread do chamador, o endereço do objeto de dispositivo no qual um arquivo está aberto e assim por diante. A parte fixa também contém um bloco de status de E/S, no qual os drivers definem informações sobre o status da operação de E/S solicitada.
No local da pilha de E/S do driver de nível mais alto, o gerenciador de E/S, o gerenciador Plug and Play ou o gerenciador de energia define parâmetros específicos do driver, como o código de função da operação solicitada e o contexto que o driver correspondente usa para determinar o que deve fazer. Por sua vez, cada driver configura a situação da pilha de E/S do driver imediatamente abaixo na pilha de drivers.
À medida que cada driver processa um IRP, ele pode acessar a sua posição da pilha de E/S no IRP, reutilizando assim o IRP em cada fase das operações do driver. Além disso, os drivers de nível superior podem criar (ou reutilizar) IRPs para enviar solicitações até mesmo para drivers de nível inferior.
Para obter uma discussão detalhada sobre IRPs, consulte Manipulando IRPs.