Compartilhar via


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:

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

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

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

  1. Defina o membro RequestFunction de SDBUS_REQUEST_PACKET como um valor de enumeração SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.

  2. Inicialize o membro cmdDesc de SDBUS_REQUEST_PACKET para definir o comando.

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

Confira também

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR