Поделиться через


структура SDBUS_REQUEST_PACKET (ntddsd.h)

Структура SDBUS_REQUEST_PACKET определяет параметры для отдельных запросов и команд, которые подпрограмма SdBusSubmitRequest отправляет водителю автобуса.

Синтаксис

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;

Члены

RequestFunction

Содержит значение перечисления типа SD_REQUEST_FUNCTION , указывающее параметры для операции и способ их интерпретации.

UserContext[3]

Содержит буферную область для необязательного использования вызывающим объектом. Водитель автобуса не использует этот элемент.

Information

Содержит состояние запроса в выходных данных.

ResponseData

Определяет объединение ResponseData .

ResponseData.AsUCHAR[16]

Содержит не более 16 байт данных ответа в выходных данных. Дополнительные сведения о данных ответа см. в спецификации Secure Digital (SD).

ResponseData.AsULONG[4]

Содержит не более 16 байт данных ответа в выходных данных. Дополнительные сведения о данных ответа см. в спецификации Secure Digital (SD).

ResponseData.Type3

Определяет элемент SDRESP_TYPE3Type3.

ResponseLength

Указывает длину (в байтах) данных ответа.

Reserved

Зарезервировано, задайте значение 0.

Flags

Поле флагов для SDRP.

Parameters

Параметры для отдельных функций.

Parameters.GetSetProperty

Функции свойств позволяют вызывающему объекту управлять аспектами работы водителя автобуса.

Parameters.GetSetProperty.Property

Содержит значение перечисления типа SDBUS_PROPERTY , указывающее свойство для чтения или изменения.

Parameters.GetSetProperty.Buffer

Содержит данные свойства для записи в операциях, которые задают свойство. Содержит данные, считываемые из свойства в операциях, которые извлекают данные, связанные со свойством .

Parameters.GetSetProperty.Length

Указывает длину (в байтах) данных ответа.

Parameters.DeviceCommand

DeviceCommand — это "канал", который позволяет выполнять коды и аргументы sd-устройств. Эти коды определяются в спецификации Secure Digital (SD), могут быть основаны на каждом классе устройства или могут быть проприетарными.

Parameters.DeviceCommand.CmdDesc

Содержит структуру типа SDCMD_DESCRIPTOR, которая определяет команду SD карта.

Parameters.DeviceCommand.Argument

Содержит 4 байта сведений о аргументах, сопровождающих команду.

Parameters.DeviceCommand.Mdl

Указатель на MDL, содержащий данные команды.

Parameters.DeviceCommand.Length

Указывает длину (в байтах) данных ответа.

Parameters.EraseCommand

EraseCommand позволяет устройствам MMC отправлять команды Erase на данное устройство в атомарной последовательности, так как три команды устройства должны быть отправлены в Стереть заданный диапазон LBA или группу.

Parameters.EraseCommand.EraseType

Определяет элемент EraseType SDBUS_ERASE_TYPE.

Parameters.EraseCommand.StartBlock

Определяет элемент ULONGStartBlock.

Parameters.EraseCommand.EndBlock

Определяет элемент ULONGEndBlock.

Parameters.MmcSoftReset

MmcSoftReset позволяет выполнять обратимый сброс устройств eMMC для обновления встроенного ПО SanDisk, которое сбрасывает устройство до состояния производства.

Parameters.MmcSoftReset.Frequency

Определяет частоту элемента ULONG.

Parameters.MmcHpi

MmcHpi позволяет отправлять HPI на устройство eMMC, что приведет к остановке sdbus выполняющегося в настоящее время SDRP с STATUS_SDBUS_IO_INTERRUPTED. Информационное поле остановленного SDRP будет заполнено с описанием хода выполнения остановленной операции, поэтому ее можно будет возобновить позже с правильным смещением.

Parameters.MmcHpi.IrpToHpi

Это IRP для HPI. Это проверяется SDBUS, чтобы убедиться, что он собирается к HPI правильное IRP.

Комментарии

Если запрос считывает или задает свойство на sd-устройстве, драйвер устройства должен выполнить следующие действия:

  1. Задайте для элемента RequestFunctionSDBUS_REQUEST_PACKET значение перечисления SD_REQUEST_FUNCTION SDRF_GET_PROPERTY или SDRF_SET_PROPERTY.

  2. Задайте для элемента PropertySDBUS_REQUEST_PACKET значение перечисления SDBUS_PROPERTY , указывающее считываемое или изменяемое свойство.

  3. Отправьте запрос водителю автобуса, передав инициализированную структуру SDBUS_REQUEST_PACKETв SdBusSubmitRequest или SdBusSubmitRequestAsync.

Если запрос отправляет команду на устройство SD, драйвер устройства должен выполнить следующие действия:

  1. Задайте для элемента RequestFunctionSDBUS_REQUEST_PACKET значение SD_REQUEST_FUNCTION перечисления SDRF_DEVICE_COMMAND.

  2. Инициализируйте член CmdDescSDBUS_REQUEST_PACKET , чтобы определить команду.

  3. Отправьте запрос водителю автобуса, передав инициализированную структуру SDBUS_REQUEST_PACKETв SdBusSubmitRequest или SdBusSubmitRequestAsync.

Для выполнения операций со свойствами драйвер должен инициализировать элементы GetSetProperty.Property, GetSetProperty.Buffer и GetSetProperty.Length структуры SDBUS_REQUEST_PACKET перед отправкой запроса.

Чтобы отправить команду, драйвер должен инициализировать элементы DeviceCommand.CmdDesc, DeviceCommand.Argument, DeviceCommand.Mdl и DeviceCommand.Length структуры SDBUS_REQUEST_PACKET перед отправкой запроса.

Требования

Требование Значение
Заголовок ntddsd.h (включая Ntddsd.h)

См. также раздел

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR