IOCTL_MPIO_PASS_THROUGH_PATH_EX IOCTL (ntddscsi.h)
A solicitação de código de controle IOCTL_MPIO_PASS_THROUGH_PATH_EX é a versão estendida da solicitação de IOCTL_MPIO_PASS_THROUGH_PATH . Essa solicitação fornece suporte para transferências de dados bidirecionais e permite um bloco de dados de comando (CDB) > 16 bytes.
Esse código de controle de E/S permite que um driver de aplicativo ou kernel envie um comando SCSI para um LUN real designado. As seguintes restrições se aplicam ao uso deste código de controle de E/S:
- Se existir um driver de classe para o pseudo LUN, o aplicativo deverá enviar a solicitação para esse driver de classe. Portanto, um aplicativo poderá enviar essa solicitação diretamente para o MPIO somente se não houver nenhum driver de classe para o dispositivo.
- Todas as solicitações de passagem devem ser síncronas.
- Os aplicativos não exigem privilégios administrativos para enviar uma solicitação de passagem para um dispositivo, mas devem ter acesso de leitura/gravação ao dispositivo.
- A solicitação é composta por uma solicitação de passagem SCSI (em uma estrutura de SCSI_PASS_THROUGH_EX inserida), bem como determinadas diretivas.
- A estrutura de passagem scsi deve atender aos requisitos para isso, conforme descrito em SCSI_PASS_THROUGH_EX.
- Se a solicitação for enviada por meio do DSM que reivindicou o LUN real, isso deve ser indicado. Nesse caso, o próprio DSM deve indicar o mesmo LUN real. Caso contrário, a solicitação vai falhar.
- A solicitação deve especificar o LUN real que é composto pelo pseudo LUN em termos do endereço SCSI do primeiro ou de seu MPIO PathId, mas não ambos.
Código principal
Buffer de entrada
Parameters.DeviceIoControl.InputBufferLength indica o tamanho, em bytes, do buffer em Irp-AssociatedIrp.SystemBuffer>.
Comprimento do buffer de entrada
O buffer deve ser pelo menos sizeof(MPIO_PASS_THROUGH_PATH_EX) ou, se enviado por um aplicativo de 32 bits em um sistema operacional de 64 bits, sizeof(MPIO_PASS_THROUGH_PATH32_EX).
Buffer de saída
O driver de porta retorna todos os dados de solicitação e todos os dados transferidos do dispositivo para o buffer em Irp-AssociatedIrp.SystemBuffer>.
Comprimento do buffer de saída
Os membros SenseInfoLength e DataOutTransferLength na estrutura de SCSI_PASS_THROUGH_EX incorporada são atualizados para indicar a quantidade de dados transferidos.
Bloco de status
O campo Informações é definido como o número de bytes retornados no buffer de saída em Irp-AssociatedIrp.SystemBuffer>. O campo Status é definido como STATUS_SUCCESS ou possivelmente para STATUS_BUFFER_TOO_SMALL ou STATUS_INVALID_PARAMETER se o valor length de entrada no SCSI_PASS_THROUGH_EX inserido estiver definido incorretamente.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddscsi.h (inclua Ntddscsi.h) |