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 FixedProtocolReturnData2;
ULONG Reserved1[2];
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.
FixedProtocolReturnData2
Datos devueltos2. Esto se establece opcionalmente. Algunos protocolos como NVMe pueden devolver una pequeña cantidad de datos (DWORD1 a partir de la entrada de la cola de finalización) sin necesidad de transferencia de datos de dispositivo independiente.
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 | ntddstor.h (incluya Ntddstor.h) |