structure DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor.h)

La structure DEVICE_DATA_SET_LB_PROVISIONING_STATE est retournée par une requête IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES lors de la demande d’informations de provisionnement de blocs logiques pour une plage de jeu de données.

Syntaxe

typedef struct _DEVICE_DATA_SET_LB_PROVISIONING_STATE {
  ULONG     Size;
  ULONG     Version;
  ULONGLONG SlabSizeInBytes;
  ULONG     SlabOffsetDeltaInBytes;
  ULONG     SlabAllocationBitMapBitCount;
  ULONG     SlabAllocationBitMapLength;
  ULONG     SlabAllocationBitMap[ANYSIZE_ARRAY];
} DEVICE_DATA_SET_LB_PROVISIONING_STATE, *PDEVICE_DATA_SET_LB_PROVISIONING_STATE, DEVICE_DSM_ALLOCATION_OUTPUT, *PDEVICE_DSM_ALLOCATION_OUTPUT;

Membres

Size

Taille de cette structure, y compris la bitmap d’allocation de dalles, en octets.

Version

Version de cette structure.

SlabSizeInBytes

Taille, en octets, d’une dalle.

SlabOffsetDeltaInBytes

Différence, en octets, entre le décalage spécifié dans la plage du jeu de données et la position de la dalle de départ.

SlabAllocationBitMapBitCount

Nombre de bits dans les dalles de mappage bitmap d’allocation pour la plage de jeu de données.

SlabAllocationBitMapLength

Nombre de valeurs de tableau ULONG contenant l’image bitmap d’allocation de dalle.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Image bitmap d’allocations de dalles.

Notes

L’approvisionnement des informations d’état est retournée lorsque le membre Action de DEVICE_DSM_INPUT est défini sur DeviceDsmAction_Allocation. L’appelant doit inclure une seule plage de jeux de données dans la mémoire tampon système à DataSetRangesOffset.

En retour, la mémoire tampon système contient une structure DEVICE_DSM_OUTPUT suivie de la structure DEVICE_DATA_SET_LB_PROVISIONING_STATE. La structure DEVICE_DATA_SET_LB_PROVISIONING_STATE commence à un décalage du début de la mémoire tampon système spécifiée par OutputBlockOffset dans DEVICE_DSM_OUTPUT.

Chaque bit de la bitmap d’allocation représente un mappage de dalle dans la plage de jeu de données demandée. Les bits correspondent directement aux dalles de la plage de jeu de données. Cela signifie que le bit 0 dans la bitmap marque la première dalle de la plage. Une dalle est mappée si la valeur de bits = 1 et nonmapped si la valeur de bit = 0.

L’espace pour SlabAllocationBitMap doit être alloué en fonction du nombre de dalles possibles dans la plage de jeu de données demandée. Le SlabAllocationBitMapLength de la bitmap retournée est (nombre de dalles / 32) + ((nombre de dalles MOD 32) > 0 ? 1 : 0).

La taille de la dalle est déterminée par le membre OptimalUnmapGranularity de DEVICE_LB_PROVISIONING_DESCRIPTOR retourné à partir d’une requête IOCTL_STORAGE_QUERY_PROPERTY . La longueur de la plage de jeux de données fournie doit être un multiple d’OptimalUnmapGranularity. Lorsque la longueur de plage n’est pas un multiple de OptimalUnmapGranularity, elle est réduite à être un multiple.

Si le décalage de départ dans la plage du jeu de données n’est pas aligné sur une limite de dalle, un multiple d’OptimalUnmapGranularity, le décalage est ajusté à la limite suivante. La différence entre le décalage demandé et le décalage ajusté est retourné dans SlabOffsetDeltaInBytes.

Si le total d’allocation de dalle retourné dans SlabAllocationBitMapBitCount n’est pas comme prévu en raison des ajustements de plage ou de longueur de jeu de données, une demande supplémentaire peut être envoyée avec une plage de jeux de données modifiée en fonction des valeurs de SlabAllocationBitMapBitCount et SlabOffsetDeltaInBytes. La nouvelle plage sélectionne correctement les dalles laissées hors de l’image bitmap retournée par la demande précédente.

Spécifications

   
Client minimal pris en charge Disponible à partir de Windows 8.
En-tête ntddstor.h (include Ntddstor.h)

Voir aussi

DEVICE_DSM_ACTION Descriptions

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY