estrutura SDBUS_REQUEST_PACKET (ntddsd.h)
A estrutura SDBUS_REQUEST_PACKET especifica os parâmetros para as solicitações e comandos individuais que a rotina SdBusSubmitRequest envia ao motorista do ônibus.
Sintaxe
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;
Membros
RequestFunction
Contém um valor de enumeração do tipo SD_REQUEST_FUNCTION que especifica os parâmetros para a operação e como eles são interpretados.
UserContext[3]
Contém uma área de buffer para uso opcional pelo chamador. O motorista do ônibus não usa esse membro.
Information
Contém o status da solicitação na saída.
ResponseData
Define a união ResponseData .
ResponseData.AsUCHAR[16]
Contém um máximo de 16 bytes de dados de resposta na saída. Para obter mais informações sobre os dados de resposta, consulte a especificação SD (Secure Digital ).
ResponseData.AsULONG[4]
Contém um máximo de 16 bytes de dados de resposta na saída. Para obter mais informações sobre os dados de resposta, consulte a especificação SD (Secure Digital ).
ResponseData.Type3
Define o membro SDRESP_TYPE3Type3.
ResponseLength
Indica o comprimento, em bytes, dos dados de resposta.
Reserved
Reservado, definido como 0.
Flags
Campo Sinalizadores para o SDRP.
Parameters
Parâmetros para as funções individuais.
Parameters.GetSetProperty
As funções de propriedade permitem que o chamador controle aspectos da operação do driver de barramento.
Parameters.GetSetProperty.Property
Contém um valor de enumeração do tipo SDBUS_PROPERTY que especifica a propriedade a ser lida ou alterada.
Parameters.GetSetProperty.Buffer
Contém os dados de propriedade a serem gravados em operações que definem uma propriedade. Contém os dados lidos da propriedade em operações que recuperam os dados associados a uma propriedade.
Parameters.GetSetProperty.Length
Indica o comprimento, em bytes, dos dados de resposta.
Parameters.DeviceCommand
DeviceCommand é o 'pipe' que permite que códigos e argumentos do dispositivo SD sejam executados. Esses códigos são definidos na especificação SD (Secure Digital), podem ser baseados por classe de dispositivo ou também podem ser proprietários.
Parameters.DeviceCommand.CmdDesc
Contém uma estrutura do tipo SDCMD_DESCRIPTOR que define um comando SD cartão.
Parameters.DeviceCommand.Argument
Contém 4 bytes de informações de argumento que acompanham o comando.
Parameters.DeviceCommand.Mdl
Ponteiro para um MDL que contém os dados de comando.
Parameters.DeviceCommand.Length
Indica o comprimento, em bytes, dos dados de resposta.
Parameters.EraseCommand
EraseCommand permite que os dispositivos MMC enviem comandos Erase para o dispositivo fornecido em uma sequência atômica, pois três comandos de dispositivo precisam ser enviados para Apagar um determinado intervalo ou grupo LBA.
Parameters.EraseCommand.EraseType
Define o membro SDBUS_ERASE_TYPEEraseType.
Parameters.EraseCommand.StartBlock
Define o membro ULONGStartBlock.
Parameters.EraseCommand.EndBlock
Define o endBlock do membro ULONG.
Parameters.MmcSoftReset
O MmcSoftReset permite que os dispositivos eMMC sejam redefinidos temporariamente para uma atualização de firmware proprietária do SanDisk que redefine o dispositivo para seu estado fabricado.
Parameters.MmcSoftReset.Frequency
Define a Frequênciado membro ULONG.
Parameters.MmcHpi
O MmcHpi permite que um HPI seja enviado para o dispositivo eMMC, o que fará com que o sdbus interrompa o SDRP em execução no momento com STATUS_SDBUS_IO_INTERRUPTED. O campo de informações do SDRP parado será preenchido com o andamento da operação interrompida, portanto, ele pode ser retomado posteriormente no deslocamento correto.
Parameters.MmcHpi.IrpToHpi
Este é o IRP para HPI. Isso é verificado pelo SDBUS para garantir que ele vá para o HPI o IRP certo.
Comentários
Se a solicitação ler ou definir uma propriedade em um dispositivo SD, um driver de dispositivo deverá concluir as seguintes etapas:
Defina o membro RequestFunction de SDBUS_REQUEST_PACKET como um valor de enumeração SD_REQUEST_FUNCTION de SDRF_GET_PROPERTY ou SDRF_SET_PROPERTY.
Defina o membro Property de SDBUS_REQUEST_PACKET como o valor de enumeração SDBUS_PROPERTY que especifica a propriedade a ser lida ou alterada.
Envie a solicitação para o driver de ônibus passando a estrutura de SDBUS_REQUEST_PACKET inicializada para SdBusSubmitRequest ou SdBusSubmitRequestAsync.
Se a solicitação enviar um comando para um dispositivo SD, um driver de dispositivo deverá concluir as seguintes etapas:
Defina o membro RequestFunction de SDBUS_REQUEST_PACKET como um valor de enumeração SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.
Inicialize o membro cmdDesc de SDBUS_REQUEST_PACKET para definir o comando.
Envie a solicitação para o driver de ônibus passando a estrutura de SDBUS_REQUEST_PACKET inicializada para SdBusSubmitRequest ou SdBusSubmitRequestAsync.
Para realizar operações de propriedade, o driver deve inicializar os membros GetSetProperty.Property, GetSetProperty.Buffer e GetSetProperty.Length da estrutura SDBUS_REQUEST_PACKET antes de enviar a solicitação.
Para enviar um comando, o driver deve inicializar os membros DeviceCommand.CmdDesc, DeviceCommand.Argument, DeviceCommand.Mdl e DeviceCommand.Length da estrutura SDBUS_REQUEST_PACKET antes de enviar a solicitação.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntddsd.h (inclua Ntddsd.h) |