Structure DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor. h)

La structure DEVICE_DATA_SET_LB_PROVISIONING_STATE est retournée par une demande de IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES lors de la demande d’informations de provisionnement de bloc logique 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 la dalle, 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 le jeu de données et la position de départ de la plage.

SlabAllocationBitMapBitCount

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

SlabAllocationBitMapLength

Nombre de valeurs de tableau ULong contenant la bitmap d’allocation de sections.

SlabAllocationBitMap

Bitmap des allocations de dalle.

Notes

Les informations d’état de provisionnement sont retournées lorsque le membre d' action de DEVICE_DSM_INPUT a la valeur DeviceDsmAction_Allocation. L’appelant ne doit inclure qu’une seule plage de jeu de données dans la mémoire tampon système sur DataSetRangesOffset.

Au 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 offset à partir 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 dalles au sein de la plage du jeu de données demandée. Les bits correspondent directement aux dalles de la plage du 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 bit est égale à 1 et non mappée si la valeur de bit est égale à 0.

Vous devez allouer de l’espace pour SlabAllocationBitMap en fonction du nombre de dalles possibles dans la plage du jeu de données demandée. Le SlabAllocationBitMapLength de la bitmap renvoyé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 demande de IOCTL_STORAGE_QUERY_PROPERTY . La longueur de la plage du jeu de données fournie doit être un multiple de OptimalUnmapGranularity. Lorsque la longueur de la plage n’est pas un multiple de OptimalUnmapGranularity, elle est réduite à un multiple.

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

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

Spécifications

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

Voir aussi

Descriptions des DEVICE_DSM_ACTION

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY