Freigeben über


IoWritePartitionTableEx-Funktion (ntddk.h)

Die IoWritePartitionTableEx-Routine schreibt Partitionstabellen aus den Einträgen im Partitionslistenpuffer für jede Partition auf dem Datenträger, der durch das angegebene Geräteobjekt dargestellt wird.

Syntax

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

Parameter

[in] DeviceObject

Zeiger auf das Geräteobjekt, das den Datenträger darstellt, dessen Partitionstabellen geschrieben werden sollen.

DriveLayout

Zeiger auf den Laufwerklayoutpuffer, der die Partitionslisteneinträge enthält. Ausführlichere Informationen finden Sie unter DRIVE_LAYOUT_INFORMATION_EX.

Rückgabewert

IoWritePartitionTableEx gibt einen status Code von STATUS_SUCCESS zurück, wenn alle Schreibvorgänge ohne Fehler abgeschlossen wurden. Im Falle eines Fehlers können die von IoWritePartitionTableEx zurückgegebenen Fehlercodes die folgende Liste enthalten, sind jedoch nicht beschränkt auf:

Rückgabecode Beschreibung
STATUS_DEVICE_NOT_READY Gibt an, dass die richtige Datenträgergeometrie nicht gelesen wird.
STATUS_INSUFFICIENT_RESOURCES Gibt einen Fehler an, die erforderlichen Ressourcen zuzuweisen (z. B. Heapspeicher, IRPs usw.).
STATUS_UNSUCCESSFUL Gibt an, dass sektor null nicht über die erwartete MBR-Datenträgersignatur verfügte.

Hinweise

IoWritePartitionTableEx ersetzt die veraltete Routine-IoWritePartitionTable. Im Gegensatz zur älteren Routine kann es sowohl in GUID-Partitionstabellen als auch in Master Boot Record Partition Tables schreiben.

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

Wenn ein Datenträgergerätetreiber eine IRP_MJ_DEVICE_CONTROL Anforderung empfängt, den Partitionstyp in einem Partitionstabelleneintrag festzulegen oder den Datenträger neu zu partitionieren, sollte ioWritePartitionTableEx aufgerufen werden. Die Gerätesteuerungsanforderung wird in der Regel vom Formathilfsprogramm ausgegeben, das E/A-Steuerungsfunktionen auf den Partitionen und Datenträgern auf dem Computer ausführt.

Um einen Partitionstyp zurückzusetzen, übergibt der Treiber einen Zeiger auf das Geräteobjekt, der den physischen Datenträger darstellt, und die Anzahl der Partition, die dem Geräteobjekt zugeordnet ist, das das Formathilfsprogramm geöffnet hat. Wenn ein Datenträger dynamisch neu partitioniert werden soll, muss der Datenträgertreiber seine Geräteobjekte, die die aktuellen Datenträgerpartitionen darstellen, abreißen und einen neuen Satz von Geräteobjekten erstellen, die die neuen Partitionen auf dem Datenträger darstellen.

Um Partitionen nicht zu erstellen oder zu löschen, muss eine vollständige Beschreibung des Systems durch einen Aufruf von IoReadPartitionTableEx abgerufen werden. Die Struktur des Laufwerklayouts kann vom Systemformat-Hilfsprogramm geändert werden, um eine neue Konfiguration des Datenträgers widerzuspiegeln.

IoWritePartitionTableEx ist synchron. Sie muss von der Dispatch-Routine des Datenträgertreibers oder von einem Treiberthread aufgerufen werden. Daher müssen alle Benutzer- und Dateisystemthreads vorbereitet sein, um einen Wartezustand zu erhalten, wenn die Gerätesteuerungsanforderung ausgegeben wird, um Partitionstypen für das Gerät zurückzusetzen.

Anforderungen

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

Weitere Informationen

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx