Compartilhar via


estrutura STORAGE_PROTOCOL_COMMAND (ntddstor.h)

Essa estrutura é usada com o mecanismo de passagem IOCTL_STORAGE_PROTOCOL_COMMAND que emite um comando de protocolo específico do fornecedor para um dispositivo de armazenamento.

Sintaxe

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

Membros

Version

A versão dessa estrutura. Defina isso como STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

O tamanho desta estrutura. Defina isso como sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

O tipo de protocolo.

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 que podem ser retornados 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 de protocolo específico do barramento a ser retornado para essa solicitação. Opcionalmente, isso é definido.

CommandLength

O comprimento do comando, em bytes. O chamador deve definir isso como um valor diferente de zero.

ErrorInfoLength

O comprimento do buffer ErrorCode , em bytes. Opcionalmente, isso é definido e pode ser definido como 0.

DataToDeviceTransferLength

O tamanho do buffer que deve ser transferido para o dispositivo.

DataFromDeviceTransferLength

O tamanho do buffer que deve ser transferido do dispositivo.

TimeOutValue

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

ErrorInfoOffset

O deslocamento do buffer ErrorCode . 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 adicionais específicos do comando passados 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

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

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 ntddstor.h (inclua Ntddstor.h)

Confira também