DEVICE_DATA_SET_LB_PROVISIONING_STATE Struktur (winioctl.h)
Ausgabestruktur für die DeviceDsmAction_Allocation Aktion des IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES-Steuerelementcodes .
Syntax
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;
Member
Size
Die Größe dieser Struktur, einschließlich der Bitmap, in Bytes.
Version
Die Version dieser Struktur.
SlabSizeInBytes
Die Größe einer Platte in Bytes.
SlabOffsetDeltaInBytes
Wenn der angegebene Bereich nicht an der In DEVICE_LB_PROVISIONING_DESCRIPTOR-Struktur zurückgegebenen OptimalUnmapGranularity ausgerichtet ist, werden die in der SlabAllocationBitMap dargestellten Daten um diesen Betrag vom angegebenen Bereich versetzt.
SlabAllocationBitMapBitCount
Die Anzahl der relevanten Bits in der Bitmap.
SlabAllocationBitMapLength
Die Anzahl von DWORD-Sim Bitmaparray.
SlabAllocationBitMap[ANYSIZE_ARRAY]
Die Zuordnungsbitbit, die ein Bit für jede Platte enthält. Wenn ein Bit festgelegt ist, wird die entsprechende Platte zugeordnet. Andernfalls, wenn ein Bit klar ist, wird die entsprechende Platte nicht zugeordnet.
Hinweise
Bereitstellungsstatusinformationen werden zurückgegeben, wenn das Aktionselement der DEVICE_MANAGE_DATA_SET_ATTRIBUTES-Struktur 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_MANAGE_DATA_SET_ATTRIBUTES_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_MANAGE_DATA_SET_ATTRIBUTES_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 (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0)
.
Die Größe der Slab-Struktur wird durch das Element "OptimalUnmapGranularity" der DEVICE_LB_PROVISIONING_DESCRIPTOR-Struktur bestimmt, die von einem IOCTL_STORAGE_QUERY_PROPERTY-Steuerelementcode 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.
Wenn die angeforderte Plattengröße zu groß ist (z. B. wenn sie größer als die maximale Übertragungslänge des HBA ist), kann die IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES mit ERROR_INVALID_PARAMETER fehlschlagen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 8 |
Unterstützte Mindestversion (Server) | Windows Server 2012 |
Kopfzeile | winioctl.h (einschließlich Windows.h) |