Partilhar via


Rotinas de despacho do controlador de classe de armazenamento

As rotinas Class Driver DRIVER_DISPATCH e DispatchClose geralmente não têm requisitos específicos do dispositivo. A maioria dos drivers de classe de armazenamento são drivers intermediários; suas rotinas de despacho apenas retornam STATUS_SUCCESS para indicar que um determinado objeto de dispositivo existe para que drivers de nível superior e, indiretamente, aplicativos de modo de usuário possam abrir o dispositivo para E/S e fechá-lo depois.

As rotinas de driver de classe DispatchDeviceControl e DispatchInternalDeviceControl devem ser residentes; ou seja, eles não podem ser pagináveis nem fazer parte da seção de imagens pagináveis de um driver. Dependendo da IOCTL de uma determinada solicitação, essa rotina de despacho pode chamar uma rotina paginada ou aguardar uma chamada de um objeto de sincronização ou notificação (bloqueando assim o thread de execução), mas a rotina de despacho deve ser capaz de passar uma IOCTL desconhecida pelo DISPATCH_LEVEL.

Um driver de classe de armazenamento deve ter uma rotina DispatchPnP para solicitações para iniciar, parar e remover o dispositivo e responder a outras solicitações PnP, como notificação de que o dispositivo está no caminho de paginação. Para obter detalhes sobre como lidar com uma solicitação de início PnP, consulte Manipulando a inicialização PnP em um driver de classe de armazenamento. Para obter detalhes sobre como lidar com outras solicitações PnP, consulte Manipulando solicitações PnP para periféricos de armazenamento.

Um driver de classe de armazenamento também deve ter uma rotina DispatchPower para solicitações para definir o estado de energia de seu dispositivo. Para obter detalhes, consulte Manipulando solicitações de energia para periféricos de armazenamento.

Um driver de classe de armazenamento deve ter uma rotina DispatchShutdown e, possivelmente, uma rotina DispatchFlushBuffers se seu dispositivo armazenar dados em cache internamente, se seu dispositivo puder estar conectado a um barramento controlado por um HBA que armazena dados em cache internamente ou se um sistema de arquivos estiver em camadas acima do driver de classe. Para manter a integridade dos dados, esse cache deve ser liberado para o dispositivo antes que o sistema seja desligado.

Consulte também Escrevendo rotinas de despacho para obter mais informações sobre os requisitos gerais para rotinas de despacho.