DEVICE_DATA_SET_LB_PROVISIONING_STATE-Struktur (ntddstor.h)

Die DEVICE_DATA_SET_LB_PROVISIONING_STATE-Struktur wird von einer IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES-Anforderung zurückgegeben, wenn Informationen zur Bereitstellung logischer Blocke für einen Datasetbereich angefordert werden.

Syntax

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;

Member

Size

Die Größe dieser Struktur, einschließlich der Bitmap für die Brammenzuordnung, in Bytes.

Version

Die Version dieser Struktur.

SlabSizeInBytes

Die Größe einer Platte in Bytes.

SlabOffsetDeltaInBytes

Der Unterschied in Bytes zwischen dem im Datasetbereich angegebenen Offset und der Anfangslabposition.

SlabAllocationBitMapBitCount

Die Anzahl der Bits in den Zuordnungs-Bitmapzuordnungslabs für den Datasetbereich.

SlabAllocationBitMapLength

Die Anzahl der ULONG-Arraywerte , die die Bitmap für die Plattenzuordnung enthalten.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Eine Bitmap mit Brammenzuordnungen.

Hinweise

Bereitstellungsstatusinformationen werden zurückgegeben, wenn das Aktionselement von DEVICE_DSM_INPUT auf DeviceDsmAction_Allocation festgelegt ist. Der Aufrufer sollte nur einen Datensatzbereich im Systempuffer bei DataSetRangesOffset enthalten.

Bei der Rückgabe enthält der Systempuffer eine DEVICE_DSM_OUTPUT-Struktur gefolgt von der DEVICE_DATA_SET_LB_PROVISIONING_STATE-Struktur. Die DEVICE_DATA_SET_LB_PROVISIONING_STATE-Struktur beginnt mit einem Offset vom Anfang des Systempuffers, der durch OutputBlockOffset in DEVICE_DSM_OUTPUT angegeben wird.

Jedes Bit in der Zuordnungsbitbit stellt eine Plattenzuordnung innerhalb des angeforderten Datasetbereichs dar. Die Bits entsprechen direkt den Platten im Datensatzbereich. Dies bedeutet, dass Bit 0 in der Bitmap die erste Platte im Bereich markiert. Ein Slab wird zugeordnet, wenn der Bitwert = 1 und nicht zugeordnet ist, wenn der Bitwert = 0 ist.

Speicherplatz für SlabAllocationBitMap sollte basierend auf der Anzahl möglicher Platten im angeforderten Datensatzbereich zugewiesen werden. Die SlabAllocationBitMapLength der zurückgegebenen Bitmap ist (Anzahl der Platten / 32) + ((Anzahl der Platten MOD 32) > 0 ? 1 : 0).

Die Plattengröße wird durch das Element "OptimalUnmapGranularity" von DEVICE_LB_PROVISIONING_DESCRIPTOR bestimmt, das von einer IOCTL_STORAGE_QUERY_PROPERTY-Anforderung zurückgegeben wird. Die Länge des bereitgestellten Datasetbereichs sollte ein Vielfaches von OptimalUnmapGranularity sein. Wenn die Bereichslänge kein Vielfaches von OptimalUnmapGranularity ist, wird sie auf ein Vielfaches reduziert.

Wenn der Startoffset im Datasetbereich nicht an einer Plattengrenze, einem Vielfachen von OptimalUnmapGranularity, ausgerichtet ist, wird der Offset an die nächste Grenze angepasst. Die Differenz zwischen dem angeforderten Offset und dem angepassten Offset wird in SlabOffsetDeltaInBytes zurückgegeben.

Wenn die in SlabAllocationBitMapBitCount zurückgegebene Slab-Zuordnung aufgrund von Datensatzbereichsausrichtung oder Längenanpassungen nicht wie erwartet ist, kann eine zusätzliche Anforderung mit einem Datasetbereich gesendet werden, der gemäß den Werten in SlabAllocationBitMapBitCount und SlabOffsetDeltaInBytes geändert wurde. Der neue Bereich wählt die Von der vorherigen Anforderung zurückgegebenen Bitmaps ordnungsgemäß aus.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Kopfzeile ntddstor.h (include Ntddstor.h)

Weitere Informationen

DEVICE_DSM_ACTION Beschreibungen

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY