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 :
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.
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.
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 :
Définissez le membre RequestFunction de SDBUS_REQUEST_PACKET sur une valeur d’énumération SD_REQUEST_FUNCTION de SDRF_DEVICE_COMMAND.
Initialisez le membre CmdDesc de SDBUS_REQUEST_PACKET pour définir la commande.
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) |