IoSetPartitionInformation-Funktion (ntddk.h)
Die IoSetPartitionInformation-Routine ist veraltet und wird nur zur Unterstützung vorhandener Treiber bereitgestellt. Neue Treiber müssen IoSetPartitionInformationEx verwenden.
IoSetPartitionInformation legt den Partitionstyp und die Nummer in einem Partitionstabelleneintrag für den durch DeviceObject dargestellten Datenträger fest.
Syntax
NTSTATUS IoSetPartitionInformation(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG PartitionNumber,
[in] ULONG PartitionType
);
Parameter
[in] DeviceObject
Zeiger auf das Geräteobjekt, das das Gerät darstellt, auf dem der Partitionstyp festgelegt werden soll.
[in] SectorSize
Gibt die Größe von Sektoren auf dem Datenträger in Bytes an.
[in] PartitionNumber
Gibt die Partitionsnummer auf dem Gerät an, dessen Partitionstyp festgelegt werden soll.
[in] PartitionType
Gibt den Typ für die Partition an. Eine Liste einiger Schlüsselpartitionstypen finden Sie unter PARTITION_INFORMATION.
Rückgabewert
Wenn IoSetPartitionInformation STATUS_SUCCESS zurückgibt, aktualisiert der Datenträgertreiber seinen Begriff des Partitionstyps für diese Partition in seiner Geräteerweiterung.
Hinweise
IoSetPartitionInformation darf nur von Datenträgertreibern verwendet werden. Andere Treiber sollten stattdessen die IOCTL_DISK_SET_PARTITION_INFO Datenträger-E/A-Anforderung verwenden.
Diese Routine wird aufgerufen, wenn ein Datenträgergerätetreiber von einer IRP_MJ_DEVICE_CONTROL Anforderung aufgefordert wird, den Partitionstyp in einem Partitionstabelleneintrag festzulegen. Diese Anforderung wird in der Regel vom Formathilfsprogramm ausgegeben, das E/A-Steuerungsfunktionen auf der Partition ausführt. Der Treiber übergibt 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. Da die HAL-Routinen, die IoSetPartitionInformation zugrunde liegt, entwickelt wurden, bevor die Unterstützung dynamischer Partitionierung implementiert wurde, unterscheiden sie nicht zwischen der Partitionsordnung (d. a. der Reihenfolge einer Partition auf einem Datenträger) und der Partitionsnummer (die Partitionsnummer, die einer Partition zugewiesen ist, um sie dem System zu identifizieren). Treiber müssen IoSetPartitionInformation mit der Ordnungsnummer der Partition und nicht mit der tatsächlichen Partitionsnummer aufrufen.
Diese Routine ist synchron und muss von der Dispatch-Routine des Datenträgertreibers oder von einem Treiberthread aufgerufen werden. Daher müssen alle Benutzer- und Dateisystemthreads vorbereitet sein, um beim Ausgeben der Gerätesteuerungsanforderung einen Wartezustand zu erhalten, um den Partitionstyp für das Gerät festzulegen.
Diese Routine wird unter der Annahme ausgeführt, dass die vom Datenträgertreiber übergebene Partitionsnummer tatsächlich vorhanden ist.
Diese Routine muss unter IRQL = PASSIVE_LEVEL aufgerufen werden, da sie ein Kernelereignisobjekt verwendet, um die E/A-Vervollständigung auf dem Gerät zu synchronisieren. Das Ereignis kann nicht auf den Signalzustand festgelegt werden, ohne dass die spezielle Kernel-APC-Routine des E/A-Systems für die E/A-Vervollständigung anstehen und ausgeführt wird.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ntddk.h (include Ntddk.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (siehe Abschnitt "Hinweise") |
DDI-Complianceregeln | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |