IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL (ntddscsi.h)

A solicitação de código de controle IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX é a versão estendida da solicitação de IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT . Essa solicitação fornece suporte para transferências de dados bidirecionais e permite um bloco de dados de comando (CDB) > de 16 bytes.

Esse código de controle de E/S permite que um aplicativo ou driver de kernel envie um comando SCSI para um LUN real designado. As seguintes restrições se aplicam ao uso desse 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 um 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_DIRECT inserida), bem como determinadas diretivas.
  • A estrutura de passagem SCSI deve atender aos requisitos para isso, conforme descrito em SCSI_PASS_THROUGH_DIRECT.
  • Se a solicitação deve ser 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

IRP_MJ_DEVICE_CONTROL

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_DIRECT_EX) ou, se enviado por um aplicativo de 32 bits em um sistema operacional de 64 bits, sizeof(MPIO_PASS_THROUGH_PATH_DIRECT32_EX).

Buffer de saída

O driver de porta retorna todos os dados de sensor de solicitação e todos os dados transferidos do dispositivo para o buffer em Irp-AssociatedIrp.SystemBuffer>.

Comprimento do buffer de saída

O SenseInfoLength e o DataOutTransferLength na estrutura de SCSI_PASS_THROUGH_DIRECT_EX inserida 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 como STATUS_BUFFER_TOO_SMALL ou STATUS_INVALID_PARAMETER se o valor length de entrada no SCSI_PASS_THROUGH_DIRECT_EX inserido estiver definido incorretamente.

Requisitos

Requisito Valor
Cabeçalho ntddscsi.h (inclua Ntddscsi.h)

Confira também

MPIO_PASS_THROUGH_PATH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT_EX