struktur DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor.h)

Struktur DEVICE_DATA_SET_LB_PROVISIONING_STATE dikembalikan oleh permintaan IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES saat meminta informasi provisi blok logis untuk rentang himpunan data.

Sintaks

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;

Anggota

Size

Ukuran struktur ini, termasuk bitmap alokasi slab, dalam byte.

Version

Versi struktur ini.

SlabSizeInBytes

Ukuran, dalam byte, dari slab.

SlabOffsetDeltaInBytes

Perbedaannya, dalam byte, dari offset yang ditentukan dalam rentang himpunan data hingga posisi slab awal.

SlabAllocationBitMapBitCount

Jumlah bit dalam slab pemetaan bitmap alokasi untuk rentang himpunan data.

SlabAllocationBitMapLength

Jumlah nilai array ULONG yang berisi bitmap alokasi slab.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Bitmap alokasi slab.

Keterangan

Informasi status provisi dikembalikan saat anggota TindakanDEVICE_DSM_INPUT diatur ke DeviceDsmAction_Allocation. Pemanggil hanya boleh menyertakan satu rentang himpunan data dalam buffer sistem di DataSetRangesOffset.

Saat kembali, buffer sistem berisi struktur DEVICE_DSM_OUTPUT diikuti oleh struktur DEVICE_DATA_SET_LB_PROVISIONING_STATE. Struktur DEVICE_DATA_SET_LB_PROVISIONING_STATE dimulai pada offset dari awal buffer sistem yang ditentukan oleh OutputBlockOffset di DEVICE_DSM_OUTPUT.

Setiap bit dalam bitmap alokasi mewakili pemetaan slab dalam rentang himpunan data yang diminta. Bit sesuai langsung dengan garis miring dalam rentang himpunan data. Ini berarti bahwa bit 0 dalam bitmap menandai slab pertama dalam rentang. Slab dipetakan jika nilai bit = 1 dan tidak dipetakan jika nilai bit = 0.

Ruang untuk SlabAllocationBitMap harus dialokasikan berdasarkan jumlah kemungkinan lempengan dalam rentang himpunan data yang diminta. SlabAllocationBitMapLength dari bitmap yang dikembalikan adalah (jumlah slabs / 32) + ((jumlah slabs MOD 32) > 0 ? 1 : 0).

Ukuran Slab ditentukan oleh anggota OptimalUnmapGranularitydari DEVICE_LB_PROVISIONING_DESCRIPTOR yang dikembalikan dari permintaan IOCTL_STORAGE_QUERY_PROPERTY . Panjang rentang himpunan data yang disediakan harus kelipatan OptimalUnmapGranularity. Ketika panjang rentang bukan kelipatan OptimalUnmapGranularity, panjang rentang dikurangi menjadi kelipatan.

Jika offset awal dalam rentang himpunan data tidak selaras pada batas lempung, kelipatan OptimalUnmapGranularity, offset akan disesuaikan ke batas berikutnya. Perbedaan antara offset yang diminta dan offset yang disesuaikan dikembalikan dalam SlabOffsetDeltaInBytes.

Jika total alokasi slab yang dikembalikan dalam SlabAllocationBitMapBitCount tidak seperti yang diharapkan karena perataan rentang himpunan data atau penyesuaian panjang, permintaan tambahan dapat dikirimkan dengan rentang himpunan data yang dimodifikasi sesuai dengan nilai di SlabAllocationBitMapBitCount dan SlabOffsetDeltaInBytes. Rentang baru akan memilih dengan benar slabs yang ditinggalkan dari bitmap yang dikembalikan oleh permintaan sebelumnya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.
Header ntddstor.h (termasuk Ntddstor.h)

Lihat juga

Deskripsi DEVICE_DSM_ACTION

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY