Share via


DEVICE_DATA_SET_LB_PROVISIONING_STATE 구조체(winioctl.h)

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 제어 코드DeviceDsmAction_Allocation 동작에 대한 출력 구조입니다.

구문

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;

멤버

Size

비트맵을 포함한 이 구조체의 크기(바이트)입니다.

Version

이 구조체의 버전입니다.

SlabSizeInBytes

슬래브의 크기(바이트)입니다.

SlabOffsetDeltaInBytes

지정된 범위가 DEVICE_LB_PROVISIONING_DESCRIPTOR 구조에 반환된 OptimalUnmapGranularity에 정렬되지 않은 경우 SlabAllocationBitMap에 표시되는 데이터는 지정된 범위에서 이 양만큼 오프셋됩니다.

SlabAllocationBitMapBitCount

비트맵의 관련 비트 수입니다.

SlabAllocationBitMapLength

비트맵 배열의 DWORD수입니다.

SlabAllocationBitMap[ANYSIZE_ARRAY]

각 슬래브에 대해 하나의 비트를 포함하는 할당 비트맵입니다. 비트가 설정되면 해당 슬래브가 할당됩니다. 그렇지 않으면 비트가 명확하면 해당 슬래브가 할당되지 않습니다.

설명

프로비전 상태 정보는 DEVICE_MANAGE_DATA_SET_ATTRIBUTES 구조체의 Action 멤버가 DeviceDsmAction_Allocation 설정되면 반환됩니다. 호출자는 DataSetRangesOffset의 시스템 버퍼에 하나의 데이터 집합 범위만 포함해야 합니다.

반환될 때 시스템 버퍼에는 DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT 구조와 DEVICE_DATA_SET_LB_PROVISIONING_STATE 구조가 포함됩니다. DEVICE_DATA_SET_LB_PROVISIONING_STATE 구조체는 DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUTOutputBlockOffset에 지정된 시스템 버퍼의 시작 부분부터 오프셋에서 시작됩니다.

할당 비트맵의 각 비트는 요청된 데이터 집합 범위 내의 슬래브 매핑을 나타냅니다. 비트는 데이터 집합 범위의 슬래브에 직접 해당합니다. 즉, 비트맵의 비트 0은 범위의 첫 번째 슬래브를 표시합니다. 비트 값이 1이면 슬래브가 매핑되고 비트 값이 0이면 매핑되지 않습니다.

SlabAllocationBitMap의 공간은 요청된 데이터 집합 범위에서 가능한 슬래브 수에 따라 할당되어야 합니다. 반환된 비트맵의 SlabAllocationBitMapLength 는 입니다 (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0).

슬래브 크기는 IOCTL_STORAGE_QUERY_PROPERTY 제어 코드에서 반환된 DEVICE_LB_PROVISIONING_DESCRIPTOR 구조체의 OptimalUnmapGranularity 멤버에 의해 결정됩니다. 제공된 데이터 집합 범위의 길이는 OptimalUnmapGranularity의 배수여야 합니다. 범위 길이가 OptimalUnmapGranularity의 배수가 아닌 경우 배수로 축소됩니다.

데이터 집합 범위의 시작 오프셋이 OptimalUnmapGranularity의 배수인 슬래브 경계에 정렬되지 않으면 오프셋이 다음 경계로 조정됩니다. 요청된 오프셋과 조정된 오프셋 간의 차이는 SlabOffsetDeltaInBytes로 반환됩니다.

데이터 집합 범위 맞춤 또는 길이 조정으로 인해 SlabAllocationBitMapBitCount 에 반환된 슬래브 할당 합계가 예상대로 되지 않으면 SlabAllocationBitMapBitCountSlabOffsetDeltaInBytes의 값에 따라 수정된 데이터 집합 범위와 함께 추가 요청이 제출될 수 있습니다. 새 범위는 이전 요청에서 반환된 비트맵에서 남은 슬래브를 제대로 선택합니다.

요청된 슬래브 크기가 너무 크면(예: HBA의 최대 전송 길이보다 큰 경우) ERROR_INVALID_PARAMETER IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 실패할 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 8
지원되는 최소 서버 Windows Server 2012
머리글 winioctl.h(Windows.h 포함)

추가 정보

DEVICE_LB_PROVISIONING_DESCRIPTOR

장치 관리 구조체

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES