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) |