Freigeben über


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)

Siehe auch

IoReadPartitionTable-

IoSetPartitionInformationEx-

IoWritePartitionTable-