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