Partager via


structure SDBUS_REQUEST_PACKET (ntddsd.h)

La structure SDBUS_REQUEST_PACKET spécifie les paramètres des requêtes et commandes individuelles que la routine SdBusSubmitRequest envoie au pilote de bus.

Syntaxe

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;

Membres

RequestFunction

Contient une valeur d’énumération de type SD_REQUEST_FUNCTION qui spécifie les paramètres de l’opération et leur interprétation.

UserContext[3]

Contient une zone de mémoire tampon pour une utilisation facultative par l’appelant. Le pilote de bus n’utilise pas ce membre.

Information

Contient le status de la demande sur la sortie.

ResponseData

Définit l’union ResponseData .

ResponseData.AsUCHAR[16]

Contient un maximum de 16 octets de données de réponse sur la sortie. Pour plus d’informations sur les données de réponse, consultez la spécification SD (Secure Digital).

ResponseData.AsULONG[4]

Contient un maximum de 16 octets de données de réponse sur la sortie. Pour plus d’informations sur les données de réponse, consultez la spécification SD (Secure Digital).

ResponseData.Type3

Définit le SDRESP_TYPE3membre Type3.

ResponseLength

Indique la longueur, en octets, des données de réponse.

Reserved

Réservé, défini sur 0.

Flags

Champ Indicateurs pour le SDRP.

Parameters

Paramètres des fonctions individuelles.

Parameters.GetSetProperty

Les fonctions de propriété permettent à l’appelant de contrôler les aspects du fonctionnement du pilote de bus.

Parameters.GetSetProperty.Property

Contient une valeur d’énumération de type SDBUS_PROPERTY qui spécifie la propriété à lire ou à modifier.

Parameters.GetSetProperty.Buffer

Contient les données de propriété à écrire dans les opérations qui définissent une propriété. Contient les données lues à partir de la propriété dans les opérations qui récupèrent les données associées à une propriété.

Parameters.GetSetProperty.Length

Indique la longueur, en octets, des données de réponse.

Parameters.DeviceCommand

DeviceCommand est le « canal » qui permet l’exécution de codes et d’arguments d’appareil SD. Ces codes sont définis dans la spécification SD (Secure Digital), peuvent être basés sur chaque classe d’appareil ou peuvent également être propriétaires.

Parameters.DeviceCommand.CmdDesc

Contient une structure de type SDCMD_DESCRIPTOR qui définit une commande SD carte.

Parameters.DeviceCommand.Argument

Contient 4 octets d’informations d’argument qui accompagnent la commande.

Parameters.DeviceCommand.Mdl

Pointeur vers un MDL qui contient les données de commande.

Parameters.DeviceCommand.Length

Indique la longueur, en octets, des données de réponse.

Parameters.EraseCommand

EraseCommand permet aux appareils MMC d’envoyer des commandes d’effacement à l’appareil donné dans une séquence atomique, car trois commandes d’appareil doivent être envoyées à Effacer une plage ou un groupe LBA donné.

Parameters.EraseCommand.EraseType

Définit le SDBUS_ERASE_TYPE membre EraseType.

Parameters.EraseCommand.StartBlock

Définit le membre ULONGStartBlock.

Parameters.EraseCommand.EndBlock

Définit le membre ULONGEndBlock.

Parameters.MmcSoftReset

MmcSoftReset permet aux appareils eMMC d’être réinitialisés pour une mise à jour du microprogramme propriétaire SanDisk qui réinitialise l’appareil à son état fabriqué.

Parameters.MmcSoftReset.Frequency

Définit la fréquence du membre ULONG.

Parameters.MmcHpi

MmcHpi permet d’envoyer un HPI à l’appareil eMMC, ce qui entraîne l’arrêt du SDRP en cours d’exécution avec STATUS_SDBUS_IO_INTERRUPTED. Le champ d’informations du SDRP arrêté sera rempli avec la progression de l’opération arrêtée, afin qu’elle puisse être reprise ultérieurement au décalage correct.

Parameters.MmcHpi.IrpToHpi

Il s’agit de l’IRP pour HPI. Ceci est vérifié par SDBUS pour s’assurer qu’il va à HPI le bon IRP.

Remarques

Si la requête lit ou définit une propriété sur un périphérique SD, un pilote de périphérique doit effectuer les étapes suivantes :

  1. Définissez le membre RequestFunction de SDBUS_REQUEST_PACKET sur une valeur d’énumération SD_REQUEST_FUNCTION de SDRF_GET_PROPERTY ou de SDRF_SET_PROPERTY.

  2. Définissez le membre Property de SDBUS_REQUEST_PACKET sur la valeur d’énumération SDBUS_PROPERTY qui spécifie la propriété à lire ou à modifier.

  3. Envoyez la demande au pilote de bus en passant la structure SDBUS_REQUEST_PACKET initialisée à SdBusSubmitRequest ou À SdBusSubmitRequestAsync.

Si la demande envoie une commande à un appareil SD, un pilote de périphérique doit effectuer les étapes suivantes :

  1. Définissez le membre RequestFunction de SDBUS_REQUEST_PACKET sur une valeur d’énumération SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.

  2. Initialisez le membre CmdDesc de SDBUS_REQUEST_PACKET pour définir la commande.

  3. Envoyez la demande au pilote de bus en passant la structure SDBUS_REQUEST_PACKET initialisée à SdBusSubmitRequest ou À SdBusSubmitRequestAsync.

Pour effectuer des opérations de propriété, le pilote doit initialiser les membres GetSetProperty.Property, GetSetProperty.Buffer et GetSetProperty.Length de la structure SDBUS_REQUEST_PACKET avant d’envoyer la demande.

Pour envoyer une commande, le pilote doit initialiser les membres DeviceCommand.CmdDesc, DeviceCommand.Argument, DeviceCommand.Mdl et DeviceCommand.Length de la structure SDBUS_REQUEST_PACKET avant d’envoyer la demande.

Configuration requise

Condition requise Valeur
En-tête ntddsdsd.h (inclure Ntddsd.h)

Voir aussi

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR