structure DEVICE_LB_PROVISIONING_DESCRIPTOR (ntddstor.h)
La structure DEVICE_LB_PROVISIONING_DESCRIPTOR est l’une des structures de résultats de requête retournées par une requête IOCTL_STORAGE_QUERY_PROPERTY. Cette structure contient les fonctionnalités d’approvisionnement dynamique pour un appareil de stockage.
Syntaxe
typedef struct _DEVICE_LB_PROVISIONING_DESCRIPTOR {
ULONG Version;
ULONG Size;
UCHAR ThinProvisioningEnabled : 1;
UCHAR ThinProvisioningReadZeros : 1;
UCHAR AnchorSupported : 3;
UCHAR UnmapGranularityAlignmentValid : 1;
UCHAR GetFreeSpaceSupported : 1;
UCHAR MapSupported : 1;
UCHAR Reserved1[7];
ULONGLONG OptimalUnmapGranularity;
ULONGLONG UnmapGranularityAlignment;
ULONG MaxUnmapLbaCount;
ULONG MaxUnmapBlockDescriptorCount;
} DEVICE_LB_PROVISIONING_DESCRIPTOR, *PDEVICE_LB_PROVISIONING_DESCRIPTOR;
Membres
Version
Version de cette structure.
Size
Taille de cette structure. Cette valeur est définie sur sizeof(DEVICE_LB_PROVISIONING_DESCRIPTOR)
.
ThinProvisioningEnabled
État activé pour l’approvisionnement dynamique.
Valeur | Signification |
---|---|
0 | L’approvisionnement dynamique est désactivé. |
1 | L’approvisionnement dynamique est activé. |
ThinProvisioningReadZeros
Les lectures dans les régions non mappées retournent des zéros.
Valeur | Signification |
---|---|
0 | Les données lues à partir de régions non mappées ne sont pas définies. |
1 | Lit les zéros de retour. |
AnchorSupported
Prise en charge de l’état de mappage LBA ancré.
Valeur | Signification |
---|---|
0 | L’état de mappage LBA ancré n’est pas pris en charge. |
1 | L’état de mappage LBA ancré est pris en charge. |
UnmapGranularityAlignmentValid
Validité de l’alignement de granularité unmap pour l’appareil.
Valeur | Signification |
---|---|
0 | L’alignement de granularité non mappage n’est pas valide. |
1 | L’alignement de granularité non mappage est valide. |
GetFreeSpaceSupported
Indique la prise en charge de DeviceDsmAction_GetFreeSpace.
Valeur | Signification |
---|---|
0 | DeviceDsmAction_GetFreeSpace n’est pas pris en charge. |
1 | DeviceDsmAction_GetFreeSpace est pris en charge. |
MapSupported
Indique la prise en charge de DeviceDsmAction_Map.
Valeur | Signification |
---|---|
0 | DeviceDsmAction_Map n’est pas pris en charge. |
1 | DeviceDsmAction_Map est pris en charge. |
Reserved1[7]
Réservé; n’utilisez pas.
OptimalUnmapGranularity
Nombre optimal de blocs pour la granularité unmap pour l’appareil.
UnmapGranularityAlignment
Valeur actuelle, en blocs, définie pour l’alignement de granularité unmap sur l’appareil. La valeur UnmapGranularityAlignmentValid indique la validité de ce membre.
MaxUnmapLbaCount
Quantité maximale d’AL qui peut être non mappée dans une seule commande UNMAP, en unités de blocs logiques. Valide à partir de Windows 10.
MaxUnmapBlockDescriptorCount
Nombre maximal de descripteurs autorisés dans une seule commande UNMAP. Valide à partir de Windows 10.
Remarques
Cette structure est retournée dans la mémoire tampon système à partir d’une requête IOCTL_STORAGE_QUERY_PROPERTY lorsque le propertyId membre de STORAGE_PROPERTY_QUERY est défini sur StorageDeviceLBProvisioningProperty.
La structure DEVICE_LB_PROVISIONING_DESCRIPTOR est écrite dans la mémoire tampon système, Irp->AssociatedIrp.SystemBuffer, avec une valeur de taille de(DEVICE_LB_PROVISIONING_DESCRIPTOR) définie dans Parameters.DeviceIoControl.OutputBufferLength pour l’emplacement actuel de la pile IRP.
Si UnmapGranularityAlignmentValid est 0, tout code utilisant UnmapGranularityAlignment doit supposer qu’il a la valeur 0.
Si l’appareil de stockage sous-jacent est un appareil SCSI, vous pouvez interroger la fonctionnalité de non-mappage. Si le TrimEnabled membre de la structure DEVICE_TRIM_DESCRIPTOR a la valeur TRUE, UNMAP est pris en charge. La structure DEVICE_TRIM_DESCRIPTOR est retournée dans la mémoire tampon système à partir d’une requête de IOCTL_STORAGE_QUERY_PROPERTY lorsque le PropertyId membre de STORAGE_PROPERTY_QUERY est défini sur StorageDeviceTrimProperty.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 |
d’en-tête | ntddstor.h (include Ntddstor.h) |