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 Sie logische Blockbereitstellungsinformationen für einen Datensatzbereich anfordern.

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 Rasterzuordnungs bitmap, in Bytes.

Version

Die Version dieser Struktur.

SlabSizeInBytes

Die Größe, in Bytes, eines Plattenbaus.

SlabOffsetDeltaInBytes

Der Unterschied in Bytes von dem im Datensatzbereich angegebenen Offset zur Startlabposition.

SlabAllocationBitMapBitCount

Die Anzahl der Bits in der Zuordnungs bitmapzuordnungslabs für den Datensatzbereich.

SlabAllocationBitMapLength

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

SlabAllocationBitMap

Eine Bitmap der Plattenzuweisungen.

Bemerkungen

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

Der Systempuffer enthält 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 von OutputBlockOffset in DEVICE_DSM_OUTPUT angegeben wird.

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

Platz 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).

DieLabgröße wird durch das Member " OptimalUnmapGranularity" von DEVICE_LB_PROVISIONING_DESCRIPTOR bestimmt, die von einer IOCTL_STORAGE_QUERY_PROPERTY Anforderung zurückgegeben wurden. Die Länge des bereitgestellten Datensatzbereichs sollte ein Vielfaches von OptimalUnmapGranularity sein. Wenn die Bereichslänge kein Mehrfaches von OptimalUnmapGranularity ist, wird sie reduziert, um ein Vielfaches zu sein.

Wenn der Startversatz im Datensatzbereich nicht an einer Plattengrenze ausgerichtet ist, wird ein Vielfaches von OptimalUnmapGranularity an die nächste Grenze angepasst. Der Unterschied zwischen dem angeforderten Offset und dem angepassten Offset wird in SlabOffsetDeltaInBytes zurückgegeben.

Wenn die in SlabAllocationBitCount zurückgegebene Gesamtanzahl der Lab-Zuweisung aufgrund der Ausrichtung von Datensatzbereichs- oder Längenanpassungen nicht wie erwartet ist, kann eine zusätzliche Anforderung mit einem Datensatzbereich übermittelt werden, der entsprechend den Werten in SlabAllocationBitBitCount und SlabOffsetDeltaInBytes geändert wird. Der neue Bereich wählt die Von der vorherigen Anforderung zurückgegebenen Bitmaps ordnungsgemäß aus den Von der vorherigen Anforderung zurückgegebenen Platten aus.

Anforderungen

   
Unterstützte Mindestversion (Client) Ab Windows 8 verfügbar.
Header ntddstor.h (enthalten Ntddstor.h)

Weitere Informationen

DEVICE_DSM_ACTION Beschreibungen

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY