estrutura STORAGE_PROTOCOL_COMMAND (winioctl.h)

Essa estrutura é usada como um buffer de entrada ao usar o mecanismo de passagem para emitir um comando específico do fornecedor para um dispositivo de armazenamento (por meio do IOCTL_STORAGE_PROTOCOL_COMMAND).

Sintaxe

typedef struct _STORAGE_PROTOCOL_COMMAND {
  DWORD                 Version;
  DWORD                 Length;
  STORAGE_PROTOCOL_TYPE ProtocolType;
  DWORD                 Flags;
  DWORD                 ReturnStatus;
  DWORD                 ErrorCode;
  DWORD                 CommandLength;
  DWORD                 ErrorInfoLength;
  DWORD                 DataToDeviceTransferLength;
  DWORD                 DataFromDeviceTransferLength;
  DWORD                 TimeOutValue;
  DWORD                 ErrorInfoOffset;
  DWORD                 DataToDeviceBufferOffset;
  DWORD                 DataFromDeviceBufferOffset;
  DWORD                 CommandSpecific;
  DWORD                 Reserved0;
  DWORD                 FixedProtocolReturnData;
  DWORD                 FixedProtocolReturnData2;
  DWORD                 Reserved1[2];
  BYTE                  Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;

Membros

Version

A versão dessa estrutura. Isso deve ser definido como STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

O tamanho desta estrutura. Isso deve ser definido como sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

O tipo de protocolo, do tipo STORAGE_PROTOCOL_TYPE.

Flags

Sinalizadores definidos para essa solicitação. Veja a seguir sinalizadores válidos.

Sinalizador Descrição
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST Esse sinalizador indica a solicitação para direcionar um adaptador em vez do dispositivo.

ReturnStatus

O status da solicitação feita ao dispositivo de armazenamento. Em Windows 10, os valores possíveis incluem:

Valor de status Descrição
STORAGE_PROTOCOL_STATUS_PENDING A solicitação está pendente.
STORAGE_PROTOCOL_STATUS_SUCCESS A solicitação foi concluída com êxito.
STORAGE_PROTOCOL_STATUS_ERROR A solicitação encontrou um erro.
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST A solicitação não é válida.
STORAGE_PROTOCOL_STATUS_NO_DEVICE Um dispositivo não está disponível para fazer uma solicitação.
STORAGE_PROTOCOL_STATUS_BUSY O dispositivo está ocupado atuando na solicitação.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN O dispositivo encontrou um estouro de dados ao agir na solicitação.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES O dispositivo não pode concluir a solicitação devido a recursos insuficientes.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED A solicitação não terá suporte.

ErrorCode

O código de erro para essa solicitação. Opcionalmente, isso é definido.

CommandLength

O comprimento do comando. Um valor diferente de zero deve ser definido pelo chamador.

ErrorInfoLength

O comprimento do buffer de erro. Opcionalmente, isso é definido e pode ser definido como 0.

DataToDeviceTransferLength

O tamanho do buffer que deve ser transferido para o dispositivo. Isso só é usado com uma solicitação WRITE.

DataFromDeviceTransferLength

O tamanho do buffer que deve ser transferido do dispositivo. Isso só é usado com uma solicitação READ.

TimeOutValue

Quanto tempo aguardar o dispositivo até atingir o tempo limite. Isso é definido em unidades de segundos.

ErrorInfoOffset

O deslocamento do buffer de erro. Isso deve ser alinhado com o ponteiro.

DataToDeviceBufferOffset

O deslocamento do buffer que deve ser transferido para o dispositivo. Isso deve ser alinhado ao ponteiro e é usado apenas com uma solicitação WRITE.

DataFromDeviceBufferOffset

O deslocamento do buffer que deve ser transferido do dispositivo. Isso deve ser alinhado a ponteiros e é usado apenas com uma solicitação READ.

CommandSpecific

Dados específicos do comando passados junto com o comando . Isso depende do comando do driver e, opcionalmente, é definido.

Reserved0

Reservado para uso futuro.

FixedProtocolReturnData

Os dados de retorno. Opcionalmente, isso é definido. Alguns protocolos, como NVMe, podem retornar uma pequena quantidade de dados (DWORD0 da entrada da fila de conclusão) sem a necessidade de uma transferência de dados de dispositivo separada.

FixedProtocolReturnData2

Reserved1[2]

Reservado para uso futuro.

Command[ANYSIZE_ARRAY]

O comando específico do fornecedor que deve ser passado para o dispositivo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Cabeçalho winioctl.h (inclua Windows.h)

Confira também

IOCTL_STORAGE_PROTOCOL_COMMAND