estrutura DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor.h)

A estrutura DEVICE_DATA_SET_LB_PROVISIONING_STATE é retornada por uma solicitação de IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES ao solicitar informações de provisionamento de bloco lógico para um intervalo de conjunto de dados.

Sintaxe

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;

Membros

Size

O tamanho dessa estrutura, incluindo o bitmap de alocação de laje, em bytes.

Version

A versão dessa estrutura.

SlabSizeInBytes

O tamanho, em bytes, de uma laje.

SlabOffsetDeltaInBytes

A diferença, em bytes, do deslocamento especificado no intervalo do conjunto de dados para a posição inicial da laje.

SlabAllocationBitMapBitCount

O número de bits nas lajes de mapeamento de bitmap de alocação para o intervalo do conjunto de dados.

SlabAllocationBitMapLength

O número de valores de matriz ULONG que contêm o bitmap de alocação de laje.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Um bitmap de alocações de laje.

Comentários

As informações de estado de provisionamento são retornadas quando o membro Action do DEVICE_DSM_INPUT é definido como DeviceDsmAction_Allocation. O chamador deve incluir apenas um intervalo de conjunto de dados no buffer do sistema em DataSetRangesOffset.

No retorno, o buffer do sistema contém uma estrutura DEVICE_DSM_OUTPUT seguida pela estrutura DEVICE_DATA_SET_LB_PROVISIONING_STATE. A estrutura DEVICE_DATA_SET_LB_PROVISIONING_STATE começa em um deslocamento do início do buffer do sistema especificado por OutputBlockOffset em DEVICE_DSM_OUTPUT.

Cada bit no bitmap de alocação representa um mapeamento de laje dentro do intervalo de conjunto de dados solicitado. Os bits correspondem diretamente às lajes no intervalo do conjunto de dados. Isso significa que o bit 0 no bitmap marca a primeira laje no intervalo. Uma laje será mapeada se o valor do bit = 1 e não for mapeado se o valor do bit = 0.

O espaço para SlabAllocationBitMap deve ser alocado com base no número de lajes possíveis no intervalo do conjunto de dados solicitado. O SlabAllocationBitMapLength do bitmap retornado é (número de lajes / 32) + ((número de lajes MOD 32) > 0 ? 1 : 0).

O tamanho da laje é determinado pelo membro OptimalUnmapGranularity de DEVICE_LB_PROVISIONING_DESCRIPTOR retornado de uma solicitação de IOCTL_STORAGE_QUERY_PROPERTY . O comprimento do intervalo do conjunto de dados fornecido deve ser um múltiplo de OptimalUnmapGranularity. Quando o comprimento do intervalo não é um múltiplo de OptimalUnmapGranularity, ele é reduzido para ser um múltiplo.

Se o deslocamento inicial no intervalo do conjunto de dados não estiver alinhado em um limite de laje, um múltiplo de OptimalUnmapGranularity, o deslocamento será ajustado para o próximo limite. A diferença entre o deslocamento solicitado e o deslocamento ajustado é retornada em SlabOffsetDeltaInBytes.

Se o total de alocação de laje retornado em SlabAllocationBitMapBitCount não for o esperado devido ao alinhamento de intervalo ou ajustes de comprimento do conjunto de dados, uma solicitação adicional poderá ser enviada com um intervalo de conjunto de dados modificado de acordo com os valores em SlabAllocationBitMapBitCount e SlabOffsetDeltaInBytes. O novo intervalo selecionará corretamente as lajes deixadas de fora do bitmap retornado pela solicitação anterior.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Cabeçalho ntddstor.h (inclua Ntddstor.h)

Confira também

Descrições do DEVICE_DSM_ACTION

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY