Compartilhar via


estrutura DEVICE_DATA_SET_LB_PROVISIONING_STATE (winioctl.h)

Estrutura de saída para a ação DeviceDsmAction_Allocation do código de controle IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES .

Sintaxe

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;

Membros

Size

O tamanho dessa estrutura, incluindo o bitmap, em bytes.

Version

A versão dessa estrutura.

SlabSizeInBytes

O tamanho de uma laje, em bytes.

SlabOffsetDeltaInBytes

Se o intervalo especificado não estiver alinhado à OptimalUnmapGranularity conforme retornado em DEVICE_LB_PROVISIONING_DESCRIPTOR estrutura, os dados representados no SlabAllocationBitMap serão deslocados do intervalo especificado por esse valor.

SlabAllocationBitMapBitCount

O número de bits relevantes no bitmap.

SlabAllocationBitMapLength

O número de DWORDs na matriz de bitmap.

SlabAllocationBitMap[ANYSIZE_ARRAY]

O bitmap de alocação que contém um bit para cada laje. Se um bit for definido, a laje correspondente será alocada. Caso contrário, se um bit estiver claro, a laje correspondente não será alocada.

Comentários

As informações de estado de provisionamento são retornadas quando o membro Action da estrutura DEVICE_MANAGE_DATA_SET_ATTRIBUTES é 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_MANAGE_DATA_SET_ATTRIBUTES_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_MANAGE_DATA_SET_ATTRIBUTES_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 é (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0).

O tamanho da laje é determinado pelo membro OptimalUnmapGranularity da estrutura DEVICE_LB_PROVISIONING_DESCRIPTOR retornada de um código de controle 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.

Se o tamanho da laje solicitada for muito grande (por exemplo, se for maior que o comprimento máximo de transferência do HBA), o IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES poderá falhar com ERROR_INVALID_PARAMETER.

Requisitos

   
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Cabeçalho winioctl.h (inclua Windows.h)

Confira também

DEVICE_LB_PROVISIONING_DESCRIPTOR

Estruturas de Gerenciamento de Dispositivos

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES