Freigeben über


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 Block für einen Datensatzbereich 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;

Angehörige

Size

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

Version

Die Version dieser Struktur.

SlabSizeInBytes

Die Größe eines Plattenbausteins in Byte.

SlabOffsetDeltaInBytes

Die Differenz zwischen dem im Datensatzbereich angegebenen Offset und der Anfangslabposition in Byte.

SlabAllocationBitMapBitCount

Die Anzahl der Bits in den Zuordnungsbitmap-Zuordnungslabs für den Datensatzbereich.

SlabAllocationBitMapLength

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

SlabAllocationBitMap[ANYSIZE_ARRAY]

Eine Bitmap mit Plattenzuordnungen.

Bemerkungen

Bereitstellungsstatusinformationen werden zurückgegeben, wenn das Action- Mitglied der DEVICE_DSM_INPUT auf DeviceDsmAction_Allocationfestgelegt ist. Der Aufrufer sollte nur einen Datensatzbereich im Systempuffer bei DataSetRangesOffset-enthalten.

Beim Zurückgeben 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 Zuordnungsbitmap stellt eine Plattenzuordnung innerhalb des angeforderten Datensatzbereichs dar. Die Bits entsprechen direkt den Platten im Datensatzbereich. 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.

Speicherplatz für SlabAllocationBitMap- sollte basierend auf der Anzahl möglicher Platten im angeforderten Datensatzbereich zugeordnet 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 die OptimalUnmapGranularity Member von DEVICE_LB_PROVISIONING_DESCRIPTOR bestimmt, die von einer IOCTL_STORAGE_QUERY_PROPERTY Anforderung zurückgegeben werden. Die Länge des bereitgestellten Datensatzbereichs sollte ein Vielfaches von OptimalUnmapGranularitysein. Wenn die Bereichslänge kein Vielfaches von OptimalUnmapGranularityist, wird sie auf ein Vielfaches reduziert.

Wenn der Anfangsoffset im Datensatzbereich nicht an einer Plattengrenze ausgerichtet ist, wird ein Vielfaches von OptimalUnmapGranularity, der Offset an die nächste Grenze angepasst. Die Differenz zwischen dem angeforderten Offset und dem angepassten Offset wird in SlabOffsetDeltaInByteszurückgegeben.

Wenn die in SlabAllocationBitBitCount zurückgegebene Gesamtmenge aufgrund der Ausrichtung oder Länge des Datasets nicht wie erwartet ist, kann eine zusätzliche Anforderung mit einem Datensatzbereich übermittelt werden, der entsprechend den Werten in SlabAllocationBitMapBitCount und SlabOffsetDeltaInBytesgeändert wurde. Der neue Bereich wählt die Platten aus, die von der vorherigen Anforderung zurückgegeben wurden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Header- ntddstor.h (include Ntddstor.h)

Siehe auch

DEVICE_DSM_ACTION Beschreibungen

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY