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.
Um driver de classe de armazenamento usa a interface de classe/porta SCSI bem estabelecida para controlar um dispositivo de armazenamento em massa desse tipo em qualquer barramento para o qual o sistema disponibiliza um driver de porta de armazenamento (atualmente SCSI, IDE, USB e IEEE 1394). O barramento específico ao qual um dispositivo de armazenamento está conectado é transparente para o controlador da classe de armazenamento.
Qualquer driver de classe de armazenamento lida com solicitações de E/S de aplicativos de usuário ou drivers de nível superior criando blocos de solicitação SCSI (SRBs) contendo blocos de descritor de comando (CDBs) e enviando-os, por meio de qualquer driver de filtro interveniente, para o driver de porta de armazenamento subjacente.
Um driver de classe de armazenamento não fornece informações de endereçamento no SRB. Em vez disso, o controlador de porta (ou um controlador ainda mais baixo) é responsável por qualquer endereçamento necessário. O driver da porta de armazenamento converte os SRBs no formato exigido pelo HBA (adaptador de barramento de host) subjacente, que pode ser um adaptador de barramento de host SCSI ou 1394, controlador IDE ou outro hardware semelhante, e emite comandos para o dispositivo. No Kit de Driver do Windows (WDK), o termo "HBA" refere-se a qualquer adaptador ou controlador subjacente.
Para o gestor de E/S e quaisquer drivers de nível superior estruturados acima de um driver de classe de armazenamento, a maioria dos drivers de classe de armazenamento são drivers intermediários em modo núcleo padrão. Assim, cada driver de classe deve ter uma rotina DriverEntry , uma rotina AddDevice , uma rotina Unload , uma ou mais rotinas IoComplete, além de rotinas DispatchPnP e DispatchPower para lidar com Plug and Play e alimentar IRPs.
Um driver de classe de armazenamento também deve ter uma rotina DispatchSystemControl para lidar com IRPs de controle do sistema e pode ter qualquer outra rotina de driver padrão de nível superior, como uma rotina StartIo , conforme determinado pelo designer do driver. Para obter mais informações sobre o controle do sistema e rotinas de driver de modo kernel padrão, consulte Rotinas de driver padrão.
Para o gestor PnP, um driver de classe de armazenamento é um Driver de Função, ou seja, um que controla um dispositivo individual. Um driver de classe de armazenamento também pode atuar como um Bus Drivers, enumerando dispositivos filho de seus dispositivos. Por exemplo, o driver de classe para um dispositivo de mídia particionado, como um disco, retorna uma lista de PDOs que representam suas partições. Cada DOP pode ser endereçado como um dispositivo alvo e ser atendido pelo seu próprio controlador de classe.
Observação
Um driver para um dispositivo SCSI, como uma impressora ou um scanner, deve ser implementado conforme descrito nesta seção. Um driver para tal dispositivo SCSI utiliza a mesma interface de classe/porta SCSI para controlar seu dispositivo e tem as mesmas responsabilidades para lidar com IRPs, construir SRBs e enviá-los para o driver de porta subjacente como faz um driver para um dispositivo de armazenamento.