SDBUS_REQUEST_PACKET-Struktur (ntddsd.h)
Die SDBUS_REQUEST_PACKET-Struktur gibt die Parameter für die einzelnen Anforderungen und Befehle an, die die SdBusSubmitRequest-Routine an den Bustreiber sendet.
Syntax
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;
Member
RequestFunction
Enthält einen Enumerationswert vom Typ SD_REQUEST_FUNCTION , der die Parameter für den Vorgang und ihre Interpretation angibt.
UserContext[3]
Enthält einen Pufferbereich zur optionalen Verwendung durch den Aufrufer. Der Bustreiber verwendet diesen Member nicht.
Information
Enthält die status der Anforderung bei der Ausgabe.
ResponseData
Definiert die ResponseData-Union .
ResponseData.AsUCHAR[16]
Enthält maximal 16 Bytes Antwortdaten in der Ausgabe. Weitere Informationen zu den Antwortdaten finden Sie in der Spezifikation für Secure Digital (SD).
ResponseData.AsULONG[4]
Enthält maximal 16 Bytes Antwortdaten in der Ausgabe. Weitere Informationen zu den Antwortdaten finden Sie in der Spezifikation für Secure Digital (SD).
ResponseData.Type3
Definiert das SDRESP_TYPE3 Member Type3.
ResponseLength
Gibt die Länge der Antwortdaten in Bytes an.
Reserved
Reserviert, auf 0 festgelegt.
Flags
Feld "Flags" für das SDRP.
Parameters
Parameter für die einzelnen Funktionen.
Parameters.GetSetProperty
Die Eigenschaftenfunktionen ermöglichen es dem Aufrufer, Aspekte des Bustreiberbetriebs zu steuern.
Parameters.GetSetProperty.Property
Enthält einen Enumerationswert vom Typ SDBUS_PROPERTY , der die zu lesende oder zu ändernde Eigenschaft angibt.
Parameters.GetSetProperty.Buffer
Enthält die Eigenschaftendaten, die in Vorgänge geschrieben werden sollen, die eine Eigenschaft festlegen. Enthält die Daten, die aus der -Eigenschaft in Vorgängen gelesen werden, die die Daten abrufen, die einer Eigenschaft zugeordnet sind.
Parameters.GetSetProperty.Length
Gibt die Länge der Antwortdaten in Bytes an.
Parameters.DeviceCommand
DeviceCommand ist die "Pipe", mit der SD-Gerätecodes und -Argumente ausgeführt werden können. Diese Codes sind entweder in der Sd-Spezifikation (Secure Digital) definiert, können pro Geräteklasse basieren oder auch proprietär sein.
Parameters.DeviceCommand.CmdDesc
Enthält eine Struktur vom Typ SDCMD_DESCRIPTOR, die einen SD-Karte-Befehl definiert.
Parameters.DeviceCommand.Argument
Enthält 4 Bytes Argumentinformationen, die den Befehl begleiten.
Parameters.DeviceCommand.Mdl
Zeiger auf eine MDL, die die Befehlsdaten enthält.
Parameters.DeviceCommand.Length
Gibt die Länge der Antwortdaten in Bytes an.
Parameters.EraseCommand
EraseCommand ermöglicht MMC-Geräten das Senden von Erase-Befehlen an das angegebene Gerät in einer atomaren Sequenz, da drei Gerätebefehle an Löschen eines bestimmten LBA-Bereichs oder einer bestimmten Gruppe gesendet werden müssen.
Parameters.EraseCommand.EraseType
Definiert das SDBUS_ERASE_TYPE Member EraseType.
Parameters.EraseCommand.StartBlock
Definiert das ULONG-ElementStartBlock.
Parameters.EraseCommand.EndBlock
Definiert das EndBlock des ULONG-Members.
Parameters.MmcSoftReset
MmcSoftReset ermöglicht eMMC-Geräten das Soft Reset für ein proprietäres SanDisk-Firmwareupdate, das das Gerät auf den hergestellten Zustand zurücksetzt.
Parameters.MmcSoftReset.Frequency
Definiert die Häufigkeit von ULONG-Membern.
Parameters.MmcHpi
Mit MmcHpi kann ein HPI an das eMMC-Gerät gesendet werden, was dazu führt, dass sdbus das derzeit ausgeführte SDRP mit STATUS_SDBUS_IO_INTERRUPTED beendet. Das Informationsfeld des angehaltenen SDRP wird mit dem Fortschritt des angehaltenen Vorgangs ausgefüllt, sodass er später mit dem richtigen Offset fortgesetzt werden kann.
Parameters.MmcHpi.IrpToHpi
Dies ist die IRP zu HPI. Dies wird von SDBUS überprüft, um sicherzustellen, dass hpI die richtige IRP erhält.
Hinweise
Wenn die Anforderung eine Eigenschaft auf einem SD-Gerät liest oder festlegt, muss ein Gerätetreiber die folgenden Schritte ausführen:
Legen Sie den RequestFunction-Member von SDBUS_REQUEST_PACKET auf einen SD_REQUEST_FUNCTION Enumerationswert von SDRF_GET_PROPERTY oder SDRF_SET_PROPERTY fest.
Legen Sie den Eigenschaftsmembervon SDBUS_REQUEST_PACKET auf den SDBUS_PROPERTY-Enumerationswert fest, der die zu lesende oder zu ändernde Eigenschaft angibt.
Senden Sie die Anforderung an den Bustreiber, indem Sie die initialisierte SDBUS_REQUEST_PACKET-Struktur entweder an SdBusSubmitRequest oder SdBusSubmitRequestAsync übergeben.
Wenn die Anforderung einen Befehl an ein SD-Gerät sendet, muss ein Gerätetreiber die folgenden Schritte ausführen:
Legen Sie den RequestFunction-Member von SDBUS_REQUEST_PACKET auf einen SD_REQUEST_FUNCTION Enumerationswert von SDRF_DEVICE_COMMAND fest.
Initialisieren Sie das CmdDesc-Element von SDBUS_REQUEST_PACKET , um den Befehl zu definieren.
Senden Sie die Anforderung an den Bustreiber, indem Sie die initialisierte SDBUS_REQUEST_PACKET-Struktur entweder an SdBusSubmitRequest oder SdBusSubmitRequestAsync übergeben.
Um Eigenschaftenvorgänge auszuführen, muss der Treiber die Elemente GetSetProperty.Property, GetSetProperty.Buffer und GetSetProperty.Length der SDBUS_REQUEST_PACKET Struktur initialisieren, bevor die Anforderung übermittelt wird.
Um einen Befehl zu senden, muss der Treiber die Member DeviceCommand.CmdDesc, DeviceCommand.Argument, DeviceCommand.Mdl und DeviceCommand.Length der SDBUS_REQUEST_PACKET Struktur initialisieren, bevor die Anforderung übermittelt wird.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddsd.h (include Ntddsd.h) |