Freigeben über


IoReadPartitionTable-Funktion (ntddk.h)

Die IoReadPartitionTable- Routine ist veraltete und wird nur zur Unterstützung vorhandener Treiber bereitgestellt. Neue Treiber müssen IoReadPartitionTableExverwenden. IoReadPartitionTable- liest eine Liste der 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

Zeigen Sie 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 weist IoReadPartitionTable den Speicher für diesen Puffer aus einem nicht ausgelagerten Pool zu und gibt die Laufwerklayoutinformationen darin zurück.

Rückgabewert

Diese Routine gibt einen Wert von STATUS_SUCCESS zurück, wenn mindestens eine Sektortabelle gelesen wurde. Andernfalls wird ein Fehlerstatus zurückgegeben und der Zeiger bei PartitionBuffer- auf NULL-festgelegt.

Bemerkungen

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, die PartitionBuffer- zuzuordnen, die von dieser Routine mit ExFreePool-zugeordnet wurde.

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

  • Lesen Sie jede Partitionstabelle, und füllen Sie für jede gültige und erkannte Partition ein Element in einem Array von PARTITION_INFORMATION Einträgen aus. Das Array der Partitionsinformationseinträge wird durch das PartitionEntry Member einer DRIVE_LAYOUT_INFORMATION-Struktur verwiesen. Die DRIVE_LAYOUT_INFORMATION Struktur befindet sich an der Position, auf die PartitionBufferverweist. Erweiterte Partitionen befinden sich, um andere Partitionstabellen zu finden, aber es werden keine Einträge 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; Einträge werden auch für diese erstellt.

Anforderungen

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

Siehe auch

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation-

IoWritePartitionTable-