estructura SDBUS_REQUEST_PACKET (ntddsd.h)
La estructura SDBUS_REQUEST_PACKET especifica los parámetros de las solicitudes y comandos individuales que el SdBusSubmitRequest rutina envía al controlador de bus.
Sintaxis
typedef struct _SDBUS_REQUEST_PACKET {
SD_REQUEST_FUNCTION RequestFunction;
PVOID UserContext[3];
ULONG_PTR Information;
union {
UCHAR AsUCHAR[16];
ULONG AsULONG[4];
SDRESP_TYPE3 Type3;
} ResponseData;
UCHAR ResponseLength;
UCHAR Reserved;
USHORT Flags;
union {
struct {
SDBUS_PROPERTY Property;
PVOID Buffer;
ULONG Length;
} GetSetProperty;
struct {
SDCMD_DESCRIPTOR CmdDesc;
ULONG Argument;
PMDL Mdl;
ULONG Length;
} DeviceCommand;
struct {
SDBUS_ERASE_TYPE EraseType;
ULONG StartBlock;
ULONG EndBlock;
} EraseCommand;
struct {
ULONG Frequency;
} MmcSoftReset;
struct {
PIRP IrpToHpi;
} MmcHpi;
} Parameters;
} SDBUS_REQUEST_PACKET, *PSDBUS_REQUEST_PACKET;
Miembros
RequestFunction
Contiene un valor de enumeración de tipo SD_REQUEST_FUNCTION que especifica los parámetros de la operación y cómo se interpretan.
UserContext[3]
Contiene un área de búfer para el uso opcional del autor de la llamada. El conductor del autobús no usa este miembro.
Information
Contiene el estado de la solicitud en la salida.
ResponseData
Define la unión de ResponseData.
ResponseData.AsUCHAR[16]
Contiene un máximo de 16 bytes de datos de respuesta en la salida. Para obtener más información sobre los datos de respuesta, consulte la especificación de Secure Digital (SD).
ResponseData.AsULONG[4]
Contiene un máximo de 16 bytes de datos de respuesta en la salida. Para obtener más información sobre los datos de respuesta, consulte la especificación de Secure Digital (SD).
ResponseData.Type3
Define el miembro de SDRESP_TYPE3Type3.
ResponseLength
Indica la longitud, en bytes, de los datos de respuesta.
Reserved
Reservado, establecido en 0.
Flags
Campo Marcas para el SDRP.
Parameters
Parámetros para las funciones individuales.
Parameters.GetSetProperty
Las funciones de propiedad permiten al autor de la llamada controlar aspectos de la operación del controlador de bus.
Parameters.GetSetProperty.Property
Contiene un valor de enumeración de tipo SDBUS_PROPERTY que especifica la propiedad que se va a leer o cambiar.
Parameters.GetSetProperty.Buffer
Contiene los datos de propiedad que se van a escribir en operaciones que establecen una propiedad. Contiene los datos leídos de la propiedad en operaciones que recuperan los datos asociados a una propiedad .
Parameters.GetSetProperty.Length
Indica la longitud, en bytes, de los datos de respuesta.
Parameters.DeviceCommand
DeviceCommand es la "canalización" que permite ejecutar los códigos y argumentos del dispositivo SD. Estos códigos se definen en la especificación de Secure Digital (SD), se pueden basar por clase de dispositivo o también pueden ser propiedad.
Parameters.DeviceCommand.CmdDesc
Contiene una estructura de tipo SDCMD_DESCRIPTOR que define un comando de tarjeta SD.
Parameters.DeviceCommand.Argument
Contiene 4 bytes de información de argumento que acompaña al comando.
Parameters.DeviceCommand.Mdl
Puntero a una MDL que contiene los datos del comando.
Parameters.DeviceCommand.Length
Indica la longitud, en bytes, de los datos de respuesta.
Parameters.EraseCommand
EraseCommand permite que los dispositivos MMC envíen comandos Erase al dispositivo especificado en una secuencia atómica, ya que se deben enviar tres comandos de dispositivo para borrar un intervalo o grupo de LBA determinado.
Parameters.EraseCommand.EraseType
Define el miembro de SDBUS_ERASE_TYPEEraseType.
Parameters.EraseCommand.StartBlock
Define el miembro ULONG StartBlock.
Parameters.EraseCommand.EndBlock
Define el miembro de ULONG EndBlock.
Parameters.MmcSoftReset
mmcSoftReset permite que los dispositivos eMMC se restablezcan temporalmente para una actualización de firmware propietaria de SanDisk que restablezca el dispositivo a su estado fabricado.
Parameters.MmcSoftReset.Frequency
Define el miembro ULONG Frequency.
Parameters.MmcHpi
mmcHpi permite enviar un HPI al dispositivo eMMC que hará que sdbus detenga el SDRP que se está ejecutando actualmente con STATUS_SDBUS_IO_INTERRUPTED. El campo de información del SDRP detenido se rellenará con el progreso de la operación detenida, por lo que se puede reanudar más adelante en el desplazamiento correcto.
Parameters.MmcHpi.IrpToHpi
Este es el IRP para HPI. SdBUS comprueba esto para asegurarse de que va a HPI el IRP correcto.
Observaciones
Si la solicitud lee o establece una propiedad en un dispositivo SD, un controlador de dispositivo debe completar los pasos siguientes:
Establezca el miembro requestFunction de de SDBUS_REQUEST_PACKET en un valor de enumeración SD_REQUEST_FUNCTION de SDRF_GET_PROPERTY o SDRF_SET_PROPERTY.
Establezca el Property miembro de SDBUS_REQUEST_PACKET en el valor de enumeración SDBUS_PROPERTY que especifica la propiedad que se va a leer o cambiar.
Envíe la solicitud al controlador de bus pasando la estructura de SDBUS_REQUEST_PACKET inicializada a sdBusSubmitRequest o sdBusSubmitRequestAsync.
Si la solicitud envía un comando a un dispositivo SD, un controlador de dispositivo debe completar los pasos siguientes:
Establezca el miembro requestFunction de de SDBUS_REQUEST_PACKET en un valor de enumeración SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.
Inicialice el miembro CmdDesc de SDBUS_REQUEST_PACKET para definir el comando.
Envíe la solicitud al controlador de bus pasando la estructura de SDBUS_REQUEST_PACKET inicializada a sdBusSubmitRequest o sdBusSubmitRequestAsync.
Para realizar operaciones de propiedad, el controlador debe inicializar los GetSetProperty.Property, GetSetProperty.Buffery getSetProperty.Length miembros de la estructura de SDBUS_REQUEST_PACKET antes de enviar la solicitud.
Para enviar un comando, el controlador debe inicializar el DeviceCommand.CmdDesc, DeviceCommand.Argument, DeviceCommand.Mdly DeviceCommand.Length miembros de la estructura SDBUS_REQUEST_PACKET antes de enviar la solicitud.
Requisitos
Requisito | Valor |
---|---|
encabezado de | ntddsd.h (incluya Ntddsd.h) |