Manipulando solicitações para periféricos de armazenamento
Para todas as solicitações que exigem que o driver da porta de armazenamento execute uma solicitação em um barramento subjacente, o driver de classe deve configurar um IRP com um SRB (bloco de solicitação SCSI) contendo um CDB (bloco de descritor de comando) SCSI. Consequentemente, a maioria dos drivers de classe de armazenamento tem uma ou mais rotinas internas do BuildRequest para criar SRBs. Para obter mais informações sobre essas rotinas, consulte Rotina BuildRequest do Driver de Classe de Armazenamento.
Os drivers de classe de armazenamento também passam IRP_MJ_SCSI solicitações para o driver de porta de armazenamento subjacente. Essa solicitação pode se originar de um Drivers de Filtro de Armazenamento.
Para IOCTL_SCSI_PASS_THROUGH solicitações, descritas em Manipulando solicitações de Pass-Through scsi, o driver de classe é responsável por definir o código MinorFunction para IRP_MJ_DEVICE_CONTROL no local da pilha de E/S do driver de porta do IRP antes de passar a solicitação de IRP_MJ_DEVICE_CONTROL para o driver de porta com IoCallDriver.
Cada driver de classe de armazenamento é responsável por dividir solicitações de transferência (IRP_MJ_READ e/ou IRP_MJ_WRITE) que excedem os recursos do HBA subjacente. Consequentemente, a maioria dos drivers de classe também chama uma rotina SplitTransferRequest interna, descrita na Rotina SplitTransferRequest do Driver de Classe de Armazenamento ou implementa a mesma funcionalidade em suas rotinas de expedição para solicitações de leitura e gravação.
Para obter informações adicionais sobre como lidar com solicitações para periféricos de armazenamento, consulte os seguintes tópicos:
Tratamento de solicitações de Pass-Through SCSI
Manipulando solicitações PnP para periféricos de armazenamento
Manipulando solicitações de energia para periféricos de armazenamento