Freigeben über


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)

Weitere Informationen

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable