Freigeben über


IoReadPartitionTable-Funktion (ntddk.h)

Die IoReadPartitionTable-Routine ist veraltet und wird nur zur Unterstützung vorhandener Treiber bereitgestellt. Neue Treiber müssen IoReadPartitionTableEx verwenden. IoReadPartitionTable liest eine Liste von Partitionen auf einem Datenträger mit einer angegebenen Sektorgröße und erstellt einen Eintrag in der Partitionsliste für jede erkannte Partition.

Syntax

NTSTATUS IoReadPartitionTable(
  [in]  PDEVICE_OBJECT            DeviceObject,
  [in]  ULONG                     SectorSize,
  [in]  BOOLEAN                   ReturnRecognizedPartitions,
  [out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);

Parameter

[in] DeviceObject

Zeiger auf das Geräteobjekt für den Datenträger, dessen Partitionen gelesen werden sollen.

[in] SectorSize

Gibt die Größe der Sektoren auf dem Datenträger an.

[in] ReturnRecognizedPartitions

Gibt an, ob nur erkannte Partitionen oder alle Partitionseinträge zurückgegeben werden sollen.

[out] PartitionBuffer

Zeiger auf eine nicht initialisierte Adresse. Bei erfolgreicher Ausführung ordnet IoReadPartitionTable den Arbeitsspeicher für diesen Puffer aus einem nicht auslagerten Pool zu und gibt die darin enthaltenen Informationen zum Laufwerklayout zurück.

Rückgabewert

Diese Routine gibt den Wert STATUS_SUCCESS zurück, wenn mindestens eine Sektortabelle gelesen wurde. Andernfalls wird ein Fehler status zurückgegeben und der Zeiger auf PartitionBuffer auf NULL festgelegt.

Hinweise

IoReadPartitionTable darf nur von Datenträgertreibern verwendet werden. Andere Treiber sollten stattdessen die IOCTL_DISK_GET_DRIVE_LAYOUT Datenträger-E/A-Anforderung verwenden.

Datenträgergerätetreiber rufen diese Routine während der Treiberinitialisierung auf.

Es liegt in der Verantwortung des Aufrufers, den PartitionBuffer zu behandeln, der von dieser Routine mit ExFreePool zugewiesen wurde.

Der von dieser Routine verwendete Algorithmus wird durch den booleschen Wert ReturnRecognizedPartitions bestimmt:

  • Lesen Sie jede Partitionstabelle, und füllen Sie für jede gefundene gültige und erkannte Partition ein Element in einem Array von PARTITION_INFORMATION Einträgen aus. Auf das Array von Partitionsinformationseinträgen verweist das PartitionEntry-Element einer DRIVE_LAYOUT_INFORMATION-Struktur . Die DRIVE_LAYOUT_INFORMATION Struktur befindet sich an der Position, auf die PartitionBuffer verweist. Erweiterte Partitionen werden gefunden, um andere Partitionstabellen zu finden, aber es werden keine Einträge für sie erstellt.
Lesen Sie jede Partitionstabelle, und geben Sie für jeden Eintrag einen Partitionsinformationseintrag ein. Erweiterte Partitionen befinden sich, um jede Partition auf dem Datenträger zu finden. Auch für diese werden Einträge erstellt.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntddk.h (include Ntddk.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Weitere Informationen

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable