Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
| Bandera | 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 hacer 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 actúa 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 de 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 de 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 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 desde la entrada de cola de finalización) sin necesidad de una transferencia de datos de dispositivo independiente.
FixedProtocolReturnData2
Los 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 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 | Valor |
|---|---|
| cliente mínimo admitido | Windows 10 |
| servidor mínimo admitido | Windows Server 2016 |
| encabezado de | ntddstor.h (incluya Ntddstor.h) |