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