estructura STORAGE_PROTOCOL_COMMAND (ntddstor.h)

Esta estructura se usa con el mecanismo de paso a través IOCTL_STORAGE_PROTOCOL_COMMAND que emite un comando de protocolo específico del proveedor a un dispositivo de almacenamiento.

Sintaxis

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                 Reserved1[3];
  UCHAR                 Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;

Miembros

Version

Versión de esta estructura. Establézcalo en STORAGE_PROTOCOL_STRUCTURE_VERSION.

Length

Tamaño de esta estructura. Establézcalo en sizeof(STORAGE_PROTOCOL_COMMAND).

ProtocolType

Tipo de protocolo.

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 que se pueden devolver incluyen:

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

Código de error de protocolo específico del bus que se va a devolver para esta solicitud. Esto se establece opcionalmente.

CommandLength

Longitud del comando, en bytes. El autor de la llamada debe establecerlo en un valor distinto de cero.

ErrorInfoLength

Longitud del búfer errorCode , en bytes. Opcionalmente, se establece y se puede establecer en 0.

DataToDeviceTransferLength

Tamaño del búfer que se va a transferir al dispositivo.

DataFromDeviceTransferLength

Tamaño del búfer que se va a transferir desde el dispositivo.

TimeOutValue

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

ErrorInfoOffset

Desplazamiento del búfer errorCode . 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 adicionales específicos del comando pasados junto con Command. 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.

Reserved1[3]

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

Consulte también

IOCTL_STORAGE_PROTOCOL_COMMAND