структура 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-устройстве, драйвер устройства должен выполнить следующие действия:
Задайте для элемента RequestFunctionSDBUS_REQUEST_PACKET значение перечисления SD_REQUEST_FUNCTION SDRF_GET_PROPERTY или SDRF_SET_PROPERTY.
Задайте для элемента PropertySDBUS_REQUEST_PACKET значение перечисления SDBUS_PROPERTY , указывающее считываемое или изменяемое свойство.
Отправьте запрос водителю автобуса, передав инициализированную структуру SDBUS_REQUEST_PACKETв SdBusSubmitRequest или SdBusSubmitRequestAsync.
Если запрос отправляет команду на устройство SD, драйвер устройства должен выполнить следующие действия:
Задайте для элемента RequestFunctionSDBUS_REQUEST_PACKET значение SD_REQUEST_FUNCTION перечисления SDRF_DEVICE_COMMAND.
Инициализируйте член CmdDescSDBUS_REQUEST_PACKET , чтобы определить команду.
Отправьте запрос водителю автобуса, передав инициализированную структуру 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) |