Compartir a través de


estructura STORAGE_PROTOCOL_COMMAND (winioctl.h)

Esta estructura se usa como búfer de entrada cuando se usa el mecanismo de paso a través para emitir un comando específico del proveedor a un dispositivo de almacenamiento (a través de IOCTL_STORAGE_PROTOCOL_COMMAND).

Sintaxis

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;

Miembros

Version

Versión de esta estructura. Debe establecerse en STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Tamaño de esta estructura. Debe establecerse en sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Tipo de protocolo, de tipo STORAGE_PROTOCOL_TYPE.

Flags

Marcas establecidas para esta solicitud. A continuación se muestran marcas válidas.

Marca Descripción
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST Esta marca indica la solicitud de destino de un adaptador en lugar del dispositivo.

ReturnStatus

Estado de la solicitud realizada al dispositivo de almacenamiento. En Windows 10, los valores posibles son:

Valor de estado Descripción
STORAGE_PROTOCOL_STATUS_PENDING La solicitud está pendiente.
STORAGE_PROTOCOL_STATUS_SUCCESS La solicitud se ha completado correctamente.
STORAGE_PROTOCOL_STATUS_ERROR La solicitud ha encontrado un error.
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST La solicitud no es válida.
STORAGE_PROTOCOL_STATUS_NO_DEVICE Un dispositivo no está disponible para realizar una solicitud.
STORAGE_PROTOCOL_STATUS_BUSY El dispositivo está ocupado actuando en la solicitud.
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN El dispositivo encontró una saturación de datos mientras actuaba en la solicitud.
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES El dispositivo no puede completar la solicitud debido a recursos insuficientes.
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED No se admite la solicitud.

ErrorCode

El código de error de esta solicitud. Esto se establece opcionalmente.

CommandLength

Longitud del comando. El autor de la llamada debe establecer un valor distinto de cero.

ErrorInfoLength

Longitud del búfer de errores. Opcionalmente, se establece y se puede establecer en 0.

DataToDeviceTransferLength

Tamaño del búfer que se va a transferir al dispositivo. Esto solo se usa con una solicitud WRITE.

DataFromDeviceTransferLength

Tamaño del búfer que se va a transferir desde el dispositivo. Esto solo se usa con una solicitud READ.

TimeOutValue

Cuánto tiempo debe esperar el dispositivo hasta que se agote el tiempo de espera. Esto se establece en unidades de segundos.

ErrorInfoOffset

Desplazamiento del búfer de errores. Debe estar alineado con el puntero.

DataToDeviceBufferOffset

Desplazamiento del búfer que se va a transferir al dispositivo. Debe estar alineado con el puntero y solo se usa con una solicitud WRITE.

DataFromDeviceBufferOffset

Desplazamiento del búfer que se va a transferir desde el dispositivo. Debe estar alineado con el puntero y solo se usa con una solicitud READ.

CommandSpecific

Datos específicos del comando pasados junto con el comando . Esto depende del comando del controlador y, opcionalmente, se establece.

Reserved0

Reservado para uso futuro.

FixedProtocolReturnData

Datos devueltos. Esto se establece opcionalmente. Algunos protocolos, como NVMe, pueden devolver una pequeña cantidad de datos (DWORD0 a partir de la entrada de la cola de finalización) sin necesidad de una transferencia de datos de dispositivo independiente.

FixedProtocolReturnData2

Reserved1[2]

Reservado para uso futuro.

Command[ANYSIZE_ARRAY]

Comando específico del proveedor que se va a pasar al dispositivo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Encabezado winioctl.h (incluye Windows.h)

Consulte también

IOCTL_STORAGE_PROTOCOL_COMMAND