IoSetPartitionInformation-Funktion (ntddk.h)
Die IoSetPartitionInformation Routine ist veraltete und wird nur zur Unterstützung vorhandener Treiber bereitgestellt. Neue Treiber müssen IoSetPartitionInformationExverwenden.
IoSetPartitionInformation legt den Partitionstyp und die Nummer in einem Partitionstabelleneintrag für den Datenträger fest, der durch DeviceObjectdargestellt wird.
Syntax
NTSTATUS IoSetPartitionInformation(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG PartitionNumber,
[in] ULONG PartitionType
);
Parameter
[in] DeviceObject
Zeigen Sie 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 Byte 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 der Geräteerweiterung.
Bemerkungen
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 aufgefordert wird, den Partitionstyp in einem Partitionstabelleneintrag durch eine IRP_MJ_DEVICE_CONTROL Anforderung 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 darstellt, und die Nummer der Partition, die dem Geräteobjekt zugeordnet ist, das das Hilfsprogramm für das Format geöffnet hat. Da die HAL-Routinen, die IoSetPartitionInformation zugrunde liegt, vor der Implementierung der dynamischen Partitionierung entwickelt wurden, unterscheiden sie nicht zwischen der Partitions ordinal (also 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 mithilfe der Ordnungs zahl der Partition und nicht 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 einzugeben, um den Partitionstyp für das Gerät festzulegen.
Diese Routine funktioniert unter der Annahme, dass die vom Datenträgertreiber übergebene Partitionsnummer tatsächlich vorhanden ist.
Diese Routine muss bei IRQL = PASSIVE_LEVEL aufgerufen werden, da es ein Kernelereignisobjekt zum Synchronisieren der E/A-Fertigstellung auf dem Gerät verwendet. Das Ereignis kann nicht auf den Signalzustand festgelegt werden, ohne die E/A-System-spezielle Kernel-APC-Routine für den E/A-Abschluss auszuführen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ntddk.h (include Ntddk.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | PASSIVE_LEVEL (Siehe Abschnitt "Hinweise") |
DDI-Complianceregeln | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |