Freigeben über


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:

  1. Legen Sie den RequestFunction-Member von SDBUS_REQUEST_PACKET auf einen SD_REQUEST_FUNCTION Enumerationswert von SDRF_GET_PROPERTY oder SDRF_SET_PROPERTY fest.

  2. Legen Sie den Eigenschaftsmembervon SDBUS_REQUEST_PACKET auf den SDBUS_PROPERTY-Enumerationswert fest, der die zu lesende oder zu ändernde Eigenschaft angibt.

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

  1. Legen Sie den RequestFunction-Member von SDBUS_REQUEST_PACKET auf einen SD_REQUEST_FUNCTION Enumerationswert von SDRF_DEVICE_COMMAND fest.

  2. Initialisieren Sie das CmdDesc-Element von SDBUS_REQUEST_PACKET , um den Befehl zu definieren.

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

Weitere Informationen

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR