Partager via


structure DEVICE_DATA_SET_LB_PROVISIONING_STATE (winioctl.h)

Structure de sortie pour l’action DeviceDsmAction_Allocation du code de contrôle IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES .

Syntaxe

typedef struct _DEVICE_DATA_SET_LB_PROVISIONING_STATE {
  DWORD     Size;
  DWORD     Version;
  DWORDLONG SlabSizeInBytes;
  DWORD     SlabOffsetDeltaInBytes;
  DWORD     SlabAllocationBitMapBitCount;
  DWORD     SlabAllocationBitMapLength;
  DWORD     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 l’image bitmap, en octets.

Version

Version de cette structure.

SlabSizeInBytes

Taille d’une dalle, en octets.

SlabOffsetDeltaInBytes

Si la plage spécifiée n’est pas alignée sur optimalUnmapGranularity comme retourné dans DEVICE_LB_PROVISIONING_DESCRIPTOR structure, les données représentées dans le SlabAllocationBitMap sont décalées de la plage spécifiée par ce montant.

SlabAllocationBitMapBitCount

Nombre de bits pertinents dans la bitmap.

SlabAllocationBitMapLength

Nombre de DWORDdans le tableau bitmap.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Bitmap d’allocation contenant un bit pour chaque dalle. Si un bit est défini, la dalle correspondante est allouée. Sinon, si un bit est clair, la dalle correspondante n’est pas allouée.

Remarques

Les informations d’état d’approvisionnement sont retournées lorsque le membre Action de la structure DEVICE_MANAGE_DATA_SET_ATTRIBUTES est défini sur DeviceDsmAction_Allocation. L’appelant ne doit inclure qu’une seule plage de jeux de données dans la mémoire tampon système dans DataSetRangesOffset.

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

Chaque bit de la bitmap d’allocation représente un mappage de dalles 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 du bit = 1 et unmapped si la valeur du 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. La valeur SlabAllocationBitMapLength de la bitmap retournée est (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0).

La taille de la dalle est déterminée par le membre OptimalUnmapGranularity de la structure DEVICE_LB_PROVISIONING_DESCRIPTOR retournée à partir d’un code de contrôle 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 la plage n’est pas un multiple d’OptimalUnmapGranularity, elle est réduite en 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ée dans SlabOffsetDeltaInBytes.

Si le total d’allocation de la dalle retourné dans SlabAllocationBitMapBitCount n’est pas comme prévu en raison de l’alignement ou des ajustements de longueur des jeux 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 de SlabOffsetDeltaInBytes. La nouvelle plage sélectionne correctement les dalles laissées hors de la bitmap retournée par la demande précédente.

Si la taille de la dalle demandée est trop grande (par exemple si elle est supérieure à la longueur de transfert maximale de l’adaptateur HBA), l’IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES peut échouer avec ERROR_INVALID_PARAMETER.

Configuration requise

   
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
En-tête winioctl.h (inclure Windows.h)

Voir aussi

DEVICE_LB_PROVISIONING_DESCRIPTOR

structures Gestion des appareils

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES