SDBUS_REQUEST_PACKET struttura (ntddsd.h)
La struttura SDBUS_REQUEST_PACKET specifica i parametri per le singole richieste e i comandi inviati dalla routine SdBusSubmitRequest al driver del bus.
Sintassi
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;
Members
RequestFunction
Contiene un valore di enumerazione di tipo SD_REQUEST_FUNCTION che specifica i parametri per l'operazione e come vengono interpretati.
UserContext[3]
Contiene un'area del buffer per l'uso facoltativo da parte del chiamante. Il driver del bus non usa questo membro.
Information
Contiene lo stato della richiesta nell'output.
ResponseData
Definisce l'unione ResponseData .
ResponseData.AsUCHAR[16]
Contiene un massimo di 16 byte di dati di risposta nell'output. Per altre informazioni sui dati di risposta, vedere la specifica Secure Digital (SD).
ResponseData.AsULONG[4]
Contiene un massimo di 16 byte di dati di risposta nell'output. Per altre informazioni sui dati di risposta, vedere la specifica Secure Digital (SD).
ResponseData.Type3
Definisce il SDRESP_TYPE3membro Type3.
ResponseLength
Indica la lunghezza, in byte, dei dati di risposta.
Reserved
Riservato, impostato su 0.
Flags
Contrassegna il campo per SDRP.
Parameters
Parametri per le singole funzioni.
Parameters.GetSetProperty
Le funzioni di proprietà consentono al chiamante di controllare gli aspetti dell'operazione del driver del bus.
Parameters.GetSetProperty.Property
Contiene un valore di enumerazione di tipo SDBUS_PROPERTY che specifica la proprietà da leggere o modificare.
Parameters.GetSetProperty.Buffer
Contiene i dati delle proprietà da scrivere nelle operazioni che impostano una proprietà. Contiene i dati letti dalla proprietà nelle operazioni che recuperano i dati associati a una proprietà.
Parameters.GetSetProperty.Length
Indica la lunghezza, in byte, dei dati di risposta.
Parameters.DeviceCommand
DeviceCommand è la "pipe" che consente l'esecuzione di codici e argomenti del dispositivo SD. Questi codici sono definiti nella specifica Secure Digital (SD), possono essere basati per ogni classe di dispositivo o possono essere proprietari.
Parameters.DeviceCommand.CmdDesc
Contiene una struttura di tipo SDCMD_DESCRIPTOR che definisce un comando della scheda SD.
Parameters.DeviceCommand.Argument
Contiene 4 byte di informazioni sull'argomento che accompagnano il comando.
Parameters.DeviceCommand.Mdl
Puntatore a un MDL che contiene i dati del comando.
Parameters.DeviceCommand.Length
Indica la lunghezza, in byte, dei dati di risposta.
Parameters.EraseCommand
CancelCommand consente ai dispositivi MMC di inviare comandi Cancella al dispositivo specificato in una sequenza atomica, poiché tre comandi del dispositivo devono essere inviati a Cancella un determinato intervallo o gruppo LBA.
Parameters.EraseCommand.EraseType
Definisce il SDBUS_ERASE_TYPE membro CancelType.
Parameters.EraseCommand.StartBlock
Definisce il membro ULONGStartBlock.
Parameters.EraseCommand.EndBlock
Definisce il membro ULONGEndBlock.
Parameters.MmcSoftReset
MmcSoftReset consente ai dispositivi eMMC di essere reimpostati in modo soft per un aggiornamento del firmware proprietario di SanDisk che reimposta il dispositivo allo stato prodotto.
Parameters.MmcSoftReset.Frequency
Definisce la frequenza membro ULONG.
Parameters.MmcHpi
MmcHpi consente l'invio di un HPI al dispositivo eMMC che causerà l'arresto dell'SDRP attualmente in esecuzione con STATUS_SDBUS_IO_INTERRUPTED. Il campo informazioni dell'SDRP arrestato verrà compilato con lo stato di avanzamento dell'operazione interrotta, quindi potrebbe essere ripreso in seguito all'offset corretto.
Parameters.MmcHpi.IrpToHpi
Si tratta dell'IRP a HPI. Questa operazione viene controllata da SDBUS per assicurarsi che si stia andando a HPI il giusto IRP.
Commenti
Se la richiesta legge o imposta una proprietà in un dispositivo SD, un driver di dispositivo deve completare la procedura seguente:
Impostare il membro RequestFunction di SDBUS_REQUEST_PACKET su un valore di enumerazione SD_REQUEST_FUNCTION di SDRF_GET_PROPERTY o SDRF_SET_PROPERTY.
Impostare il membro Proprietà di SDBUS_REQUEST_PACKET sul valore di enumerazione SDBUS_PROPERTY che specifica la proprietà da leggere o modificare.
Inviare la richiesta al driver del bus passando la struttura di SDBUS_REQUEST_PACKET inizializzata a SdBusSubmitRequest o SdBusSubmitResync.
Se la richiesta invia un comando a un dispositivo SD, un driver di dispositivo deve completare la procedura seguente:
Impostare il membro RequestFunction di SDBUS_REQUEST_PACKET su un valore di enumerazione SD_REQUEST_FUNCTION di SDRF_DEVICE_COMMAND .
Inizializzare il membro CmdDesc di SDBUS_REQUEST_PACKET per definire il comando.
Inviare la richiesta al driver del bus passando la struttura di SDBUS_REQUEST_PACKET inizializzata a SdBusSubmitRequest o SdBusSubmitResync.
Per eseguire operazioni di proprietà, il driver deve inizializzare i membri GetSetProperty.Property, GetSetProperty.Buffer e GetSetProperty.Length della struttura SDBUS_REQUEST_PACKET prima di inviare la richiesta.
Per inviare un comando, il driver deve inizializzare i membri DeviceCommand.CmdDesc, DeviceCommand.Argument,DeviceCommand.Mdl e DeviceCommand.Length della struttura SDBUS_REQUEST_PACKET prima di inviare la richiesta.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntddsd.h (include Ntddsd.h) |