IoWritePartitionTable-Funktion (ntddk.h)
Die IoWritePartitionTable-Routine ist veraltet und wird nur zur Unterstützung vorhandener Treiber bereitgestellt. Neue Treiber müssen IoWritePartitionTableEx verwenden.
IoWritePartitionTable 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 IoWritePartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG SectorsPerTrack,
[in] ULONG NumberOfHeads,
[in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);
Parameter
[in] DeviceObject
Zeiger auf das Geräteobjekt, das den Datenträger darstellt, dessen Partitionstabellen geschrieben werden sollen.
[in] SectorSize
Gibt die Größe von Sektoren auf dem Gerät in Bytes an.
[in] SectorsPerTrack
Gibt die Spurgröße auf dem Gerät an.
[in] NumberOfHeads
Gibt die Anzahl der Spuren pro Zylinder an.
[in] PartitionBuffer
Zeiger auf den Laufwerklayoutpuffer, der die Partitionslisteneinträge enthält. Ausführlichere Informationen finden Sie unter DRIVE_LAYOUT_INFORMATION.
Rückgabewert
IoWritePartitionTablo 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 IoWritePartitionTable 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
IoWritePartitionTable darf nur von Datenträgertreibern verwendet werden. Andere Treiber sollten stattdessen die IOCTL_DISK_SET_DRIVE_LAYOUT Datenträger-E/A-Anforderung verwenden.
IoWritePartitionTable wird aufgerufen, wenn ein Datenträgergerätetreiber angefordert wird, um den Partitionstyp in einem Partitionstabelleneintrag festzulegen oder den Datenträger durch eine IRP_MJ_DEVICE_CONTROL Anforderung neu zu partitionieren. 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, das den physischen Datenträger und die Nummer der Partition darstellt, die dem Geräteobjekt zugeordnet ist, das das Format-Hilfsprogramm 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.
Anwendungen, die Partitionen erstellen und löschen und vollständige Beschreibungen des Systems erfordern, sollten IoReadPartitionTable aufrufen, wobei ReturnRecognizedPartitions auf FALSE festgelegt ist. Die Struktur des Laufwerklayouts kann vom Systemformat-Hilfsprogramm geändert werden, um eine neue Konfiguration des Datenträgers widerzuspiegeln.
IoWritePartitionTable 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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |