IoSetPartitionInformationEx-Funktion (ntddk.h)
Für den durch DeviceObject dargestellten Datenträger initialisiert die IoSetPartitionInformationEx-Routine einen Partitionstabelleneintrag mit den in der SET_PARTITION_INFORMATION_EX-Struktur angegebenen Informationen.
Syntax
NTSTATUS IoSetPartitionInformationEx(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG PartitionNumber,
[in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);
Parameter
[in] DeviceObject
Zeiger auf das Geräteobjekt, das das Gerät darstellt, auf dem der Partitionstyp festgelegt werden soll.
[in] PartitionNumber
Gibt die Partitionsnummer auf dem Gerät an, dessen Partitionstyp festgelegt werden soll.
[in] PartitionInfo
Eine Struktur, deren PartitionType-Member den Typ für die Partition angibt. Für die aktuell definierten PartitionType-WertePARTITION_INFORMATION.
Rückgabewert
Wenn IoSetPartitionInformationEx STATUS_SUCCESS zurückgibt, aktualisiert der Datenträgertreiber seinen Begriff des Partitionstyps für diese Partition in seiner Geräteerweiterung.
Hinweise
IoSetPartitionInformationEx darf nur von Datenträgertreibern verwendet werden. Andere Treiber sollten stattdessen die IOCTL_DISK_SET_PARTITION_INFO_EX Datenträger-E/A-Anforderung verwenden.
Diese Routine wird aufgerufen, wenn ein Datenträgergerätetreiber angefordert wird, um Partitionsinformationen 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 und die Nummer der Partition darstellt, die dem Geräteobjekt zugeordnet ist, das das Format-Hilfsprogramm geöffnet hat. Da die HAL-Routinen, die IoSetPartitionInformationEx zugrunde stehen, vor der Implementierung der Unterstützung für dynamische Partitionierung entwickelt wurden, unterscheiden sie nicht zwischen der partitionsordinalen (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 IoSetPartitionInformationEx aufrufen, indem sie die Ordnungsnummer der Partition und nicht die tatsächliche Partitionsnummer verwenden.
Wenn es sich bei der Partition um eine MBR-Partition (Master Boot Record) handelt, ist IoSetPartitionInformationEx auf das Festlegen des Partitionsstils und der Partitionsart beschränkt, die als unsigniertes Zeichen dargestellt wird. Weitere Informationen zu diesen Werten finden Sie unter SET_PARTITION_INFORMATION_MBR.
Wenn es sich bei der Partition um eine GPT-Partition (GUID Partition Table) handelt, legt IoSetPartitionInformationEx die folgenden Werte fest: der Partitionsstil, der Partitionstyp, dargestellt durch eine GUID anstelle einer ganzen Zahl, wie dies bei MBR-Partitionen der Fall war; eine Partitions-ID, die auch durch eine GUID dargestellt wird; eine Reihe von Attributen (eine Beschreibung dieser Attribute finden Sie unter Extensible Firmware Interface); und einen Unicode-Namen für die Partition. Weitere Informationen zu diesen Werten finden Sie unter SET_PARTITION_INFORMATION_GPT .
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), PowerIrpDDis(wdm) |