Escrevendo rotinas de expedição

O processamento de qualquer IRP (pacote de solicitação de E/S) começa em uma rotina de expedição que o driver registra para lidar com um código de função principal do IRP (IRP_MJ_*XXX). A rotina DriverEntry do driver exporta pontos de entrada para rotinas de expedição em uma tabela de expedição dentro da estrutura de DRIVER_OBJECT* do driver.

Um driver pode fornecer uma rotina de expedição separada para cada código de função de E/S principal que ele manipula. Como alternativa, as rotinas de expedição podem ser gravadas para lidar com vários códigos de função de E/S.

Esta seção contém os seguintes tópicos:

Funcionalidade de rotina de expedição

Rotinas de expedição necessárias

Rotinas de expedição opcionais

Rotinas de expedição e IRQLs

Quando verificar o local da pilha de E/S do driver

Rotinas DispatchCreate, DispatchClose e DispatchCreateClose

Rotinas dispatchCleanup

Rotinas DispatchRead, DispatchWrite e DispatchReadWrite

Rotinas DispatchDeviceControl e DispatchInternalDeviceControl

Rotinas dispatchPnP

Rotinas DispatchPower

Rotinas DispatchQueryInformation

Rotinas DispatchSetInformation

Rotinas de DispatchFlushBuffers

Rotinas DispatchShutdown

Rotinas DispatchSystemControl