Compartir a través de


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:

  1. 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.

  2. 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.

  3. 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:

  1. Establezca el miembro requestFunction de de SDBUS_REQUEST_PACKET en un valor de enumeración SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.

  2. Inicialice el miembro CmdDesc de SDBUS_REQUEST_PACKET para definir el comando.

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

Consulte también

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR