structure UFS_DEVICE_DESCRIPTOR (ufs.h)
UFS_DEVICE_DESCRIPTOR est le descripteur principal pour les appareils UFS (Universal Flash Storage) et doit être le premier descripteur récupéré, car il spécifie la classe d’appareil et la sous-classe et le protocole (jeu de commandes) à utiliser pour accéder à cet appareil et le nombre maximal d’unités logiques contenues dans l’appareil.
Syntaxe
typedef struct {
UCHAR bLength;
UCHAR bDescriptorIDN;
UCHAR bDevice;
UCHAR bDeviceClass;
UCHAR bDeviceSubClass;
UCHAR bProtocol;
UCHAR bNumberLU;
UCHAR bNumberWLU;
UCHAR bBootEnable;
UCHAR bDescrAccessEn;
UCHAR bInitPowerMode;
UCHAR bHighPriorityLUN;
UCHAR bSecureRemovalType;
UCHAR bSecurityLU;
UCHAR bBackgroundOpsTermLat;
UCHAR bInitActiveICCLevel;
UCHAR wSpecVersion[2];
UCHAR wManufactureDate[2];
UCHAR iManufacturerName;
UCHAR iProductName;
UCHAR iSerialNumberID;
UCHAR iOemID;
UCHAR wManufacturerID[2];
UCHAR bUD0BaseOffset;
UCHAR bUDConfigPLength;
UCHAR bDeviceRTTCap;
UCHAR wPeriodicRTCUpdate[2];
UCHAR bUFSFeaturesSupport;
UCHAR bFFUTimeout;
UCHAR bQueueDepth;
UCHAR wDeviceVersion[2];
UCHAR bNumSecureWPArea;
UCHAR dPSAMaxDataSize[4];
UCHAR dPSAStateTimeout;
UCHAR iProductRevisionLevel;
UCHAR Reserved[5];
UCHAR Reserved2[16];
USHORT wHPBVersion;
UCHAR bHPBControl;
UCHAR Reserved3[12];
UCHAR dExtendedUFSFeaturesSupport[4];
UCHAR bWriteBoosterBufferPreserveUserSpaceEn;
UCHAR bWriteBoosterBufferType;
UCHAR dNumSharedWriteBoosterBufferAllocUnits[4];
} UFS_DEVICE_DESCRIPTOR, *PUFS_DEVICE_DESCRIPTOR;
Membres
bLength
Spécifie la longueur, en octets, de ce descripteur.
bDescriptorIDN
Spécifie le type du descripteur. Ce descripteur aura une valeur de UFS_DESC_DEVICE_IDN.
bDevice
Spécifie le type d’appareil.
Valeur | Description |
---|---|
0x00 | Appareil |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bDeviceClass
Spécifie la classe d’appareil.
Valeur | Description |
---|---|
0x00 | Stockage de masse |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bDeviceSubClass
Spécifie les sous-classes de stockage de masse UFS dans un mappage de bits comme suit :
Mors | Valeur |
---|---|
0 | Démarrage ou non-démarrage |
1 | Incorporé ou amovible |
2 | Réservé pour JESD220-1 (UME) |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bProtocol
Spécifie la prise en charge du protocole par l’appareil UFS.
Valeur | Description |
---|---|
0x00 | SCSI |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bNumberLU
Spécifie le nombre d’unités logiques. Cela n’inclut pas le nombre d’unités logiques connues.
bNumberWLU
Spécifie le nombre d’unités logiques connues.
bBootEnable
Spécifie si la fonctionnalité de démarrage d’un appareil est activée.
Valeur | Description |
---|---|
0x00 | Fonctionnalité de démarrage désactivée |
0x01 | Fonctionnalité de démarrage activée |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bDescrAccessEn
Indique si le descripteur d’appareil peut être lu après la phase d’initialisation partielle de la séquence de démarrage.
Valeur | Description |
---|---|
0x00 | Accès de descripteur d’appareil désactivé |
0x01 | Accès de descripteur d’appareil activé |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bInitPowerMode
bInitPowerMode définit le mode d’alimentation après l’initialisation de l’appareil ou la réinitialisation matérielle.
Valeur | Description |
---|---|
0x00 | mode UFS-Sleep |
0x01 | Mode actif |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bHighPriorityLUN
bHighPriorityLUN définit l’unité logique à priorité élevée.
bSecureRemovalType
Spécifie le type de suppression sécurisé.
Valeur | Description |
---|---|
0x00 | Informations supprimées par une effacement de la mémoire physique |
0x01 | Informations supprimées en remplaçant les emplacements adressés par un caractère unique suivi d’une effacement |
0x02 | Informations supprimées en remplaçant les emplacements traités par un caractère, son complément, puis un caractère aléatoire |
0x03 | Informations supprimées à l’aide d’un mécanisme défini par le fournisseur. |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bSecurityLU
Spécifie s’il existe une prise en charge des unités logiques de sécurité.
Valeur | Description |
---|---|
0x00 | Non pris en charge |
0x01 | Relire le bloc de mémoire protégée (RPMB) |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bBackgroundOpsTermLat
bBackgroundOpsTermLat définit la latence maximale pour démarrer la transmission des données lorsque des opérations en arrière-plan sont en cours. La limite de latence d’arrêt s’applique à deux cas :
- Lorsque l’appareil reçoit une upIU (COMMAND UFS Protocol Information Units) avec une demande de transfert. L’appareil démarre le transfert de données et envoie un UPIU DATA IN UPIU ou un UPIU RTT dans la limite de latence.
- Lorsque l’appareil reçoit l’UPIU QUERY REQUEST pour effacer l’indicateur fBackgroundOpsEn. L’appareil est censé mettre fin aux opérations en arrière-plan dans la limite de latence.
bInitActiveICCLevel
bInitActiveICCLevel définit la valeur bActiveICCLevel après la mise sous tension ou la réinitialisation. La plage de la valeur est comprise entre 0x00 et 0x0F.
wSpecVersion[2]
Indique la version de spécification au format décimal codé binaire (BCD).
wManufactureDate[2]
Spécifie la date de fabrication au format BCD comme 0xMMYY.
iManufacturerName
Contient une valeur d’index à la chaîne qui contient le nom du fabricant.
iProductName
Contient une valeur d’index à la chaîne qui contient le nom du produit.
iSerialNumberID
Contient une valeur d’index sur la chaîne qui contient le numéro de série.
iOemID
Contient une valeur d’index sur la chaîne qui contient l’ID OEM.
wManufacturerID[2]
Spécifie l’ID du fabricant de l’appareil.
bUD0BaseOffset
Spécifie le décalage des paramètres configurables du descripteur d’unité 0 dans le descripteur de configuration, UFS_CONFIG_DESCRIPTOR.
bUDConfigPLength
Taille totale d’un UFS_UNIT_CONFIG_DESCRIPTORparamètres.
bDeviceRTTCap
Spécifie le nombre maximal de READY TO TRANSFER UPIU en attente pris en charge par l’appareil. La valeur minimale est 2.
wPeriodicRTCUpdate[2]
Spécifie la fréquence et la méthode des mises à jour d’horloge en temps réel. Les bits 10 à 15 sont réservés.
bUFSFeaturesSupport
Spécifie les fonctionnalités prises en charge sur cet appareil. Une fonctionnalité est prise en charge si son bit associé est défini sur 1.
Mors | Valeur |
---|---|
0 | Mise à jour du microprogramme de champ (FFU) |
1 | Sensibilisation à l’état de production (PSA) |
2 | Durée de vie de l’appareil |
Toutes les autres valeurs | Réservé à une utilisation ultérieure |
bFFUTimeout
Durée maximale, en secondes, à laquelle l’accès à l’appareil est limité ou impossible via les ports associés en raison de l’exécution d’une commande WRITE BUFFER.
bQueueDepth
Spécifie la profondeur de la file d’attente. Si ce membre est égal à 0, l’appareil implémente l’architecture de mise en file d’attente par lu.
wDeviceVersion[2]
Spécifie la version de l’appareil.
bNumSecureWPArea
Spécifie le nombre total de zones de protection en écriture sécurisée prises en charge par l’appareil. La valeur de ce membre est comprise entre bNumberLU et 32.
dPSAMaxDataSize[4]
Spécifie la quantité maximale de données qui peuvent être écrites pendant la phase de pré-soldement du flux PSA.
dPSAStateTimeout
Ce membre correspond à bPSAStateTimeout (29h) dans la spécification JEDEC.
iProductRevisionLevel
Spécifie l’index de la chaîne qui contient le niveau de révision du produit.
Reserved[5]
Réservé pour une utilisation ultérieure.
Reserved2[16]
Réservé pour une utilisation ultérieure.
wHPBVersion
Spécifie la version du booster de performances de l’hôte.
bHPBControl
Reserved3[12]
Réservé pour une utilisation ultérieure.
dExtendedUFSFeaturesSupport[4]
dExtendedUFSFeaturesSupport est un masque de bits indiquant les fonctionnalités étendues prises en charge.
bWriteBoosterBufferPreserveUserSpaceEn
Définir bWriteBoosterBufferPreserveUserSpaceEn pour 0x01 évite la réduction de l’espace utilisateur total qui peut être configuré pendant l’approvisionnement, mais peut entraîner des performances inférieures. Si bWriteBoosterBufferPreserveUserSpaceEn est défini sur 0x00, la mémoire tampon de rappel d’écriture réduit l’espace utilisateur total qui peut être configuré pendant l’approvisionnement.
bWriteBoosterBufferType
bWriteBoosterBufferType configure le type de mémoire tampon d’rappel d’écriture. Une valeur de 0x00 spécifie le mode de mémoire tampon dédié d’unité logique. Une valeur de 0x01 spécifie le mode de mémoire tampon partagée.
dNumSharedWriteBoosterBufferAllocUnits[4]
dNumSharedWriteBoosterBufferAllocUnits spécifie la taille de mémoire tampon de rappel d’écriture pour une configuration de mémoire tampon de rappel d’écriture partagée.
Remarques
Si bBootEnable dans l'UFS_DEVICE_DESCRIPTOR a la valeur zéro ou si l’unité logique boot well known n’est pas mappée à une unité logique activée, l’unité logique boot well known doit se terminer.
UFS_DEVICE_DESCRIPTOR est en lecture seule, certains de ses paramètres peuvent être modifiés en modifiant le paramètre correspondant dans UFS_UNIT_CONFIG_DESCRIPTOR.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1709 |
serveur minimum pris en charge | Windows Server 2016 |
d’en-tête | ufs.h |