Fungsi IoReadPartitionTable (ntddk.h)
Rutinitas IoReadPartitionTableusang dan hanya disediakan untuk mendukung driver yang ada. Driver baru harus menggunakan IoReadPartitionTableEx. IoReadPartitionTable membaca daftar partisi pada disk yang memiliki ukuran sektor tertentu dan membuat entri dalam daftar partisi untuk setiap partisi yang dikenali.
Sintaks
NTSTATUS IoReadPartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] BOOLEAN ReturnRecognizedPartitions,
[out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);
Parameter
[in] DeviceObject
Arahkan ke objek perangkat untuk disk yang partisinya akan dibaca.
[in] SectorSize
Menentukan ukuran sektor pada disk.
[in] ReturnRecognizedPartitions
Menunjukkan apakah hanya partisi yang dikenali atau semua entri partisi yang harus dikembalikan.
[out] PartitionBuffer
Penunjuk ke alamat yang tidak diinisialisasi. Jika berhasil, IoReadPartitionTable mengalokasikan memori untuk buffer ini dari kumpulan yang tidak disebarkan dan mengembalikan informasi tata letak drive di dalamnya.
Nilai kembali
Rutinitas ini mengembalikan nilai STATUS_SUCCESS jika setidaknya satu tabel sektor dibaca. Jika tidak, ia mengembalikan status kesalahan dan mengatur penunjuk di PartitionBuffer ke NULL.
Keterangan
IoReadPartitionTable hanya boleh digunakan oleh driver disk. Driver lain harus menggunakan permintaan I/O disk IOCTL_DISK_GET_DRIVE_LAYOUT sebagai gantinya.
Driver perangkat disk memanggil rutinitas ini selama inisialisasi driver.
Pemanggil bertanggung jawab untuk membatalkan alokasi PartitionBuffer yang dialokasikan oleh rutinitas ini dengan ExFreePool.
Algoritma yang digunakan oleh rutinitas ini ditentukan oleh nilai Boolean ReturnRecognizedPartitions:
- Baca setiap tabel partisi dan, untuk setiap partisi yang valid dan dikenali yang ditemukan, isi elemen dalam array entri PARTITION_INFORMATION . Array entri informasi partisi ditujukkan oleh anggota PartitionEntry dari struktur DRIVE_LAYOUT_INFORMATION . Struktur DRIVE_LAYOUT_INFORMATION ditemukan di lokasi yang ditujukkan oleh PartitionBuffer. Partisi yang diperluas terletak untuk menemukan tabel partisi lain, tetapi tidak ada entri yang dibuat untuk mereka.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |