IoSetPartitionInformation 函式 (ntddk.h)

IoSetPartitionInformation 例程已過時,僅提供以支援現有的驅動程式。 新的驅動程序必須使用 IoSetPartitionInformationEx

IoSetPartitionInformation 會為 DeviceObject 所代表的磁碟,設定磁碟分區數據表專案中的數據分割類型和數位。

語法

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

參數

[in] DeviceObject

裝置物件的指標,代表要設定數據分割類型的裝置。

[in] SectorSize

指定磁碟上扇區的大小,以位元組為單位。

[in] PartitionNumber

指定要設定數據分割類型的裝置上的分割區編號。

[in] PartitionType

指定數據分割的類型。 如需部分索引鍵分割類型的清單,請參閱 PARTITION_INFORMATION

傳回值

如果 IoSetPartitionInformation 傳回STATUS_SUCCESS,磁碟驅動程式會在其裝置延伸模組中更新此磁碟分區的磁碟分區類型概念。

備註

IoSetPartitionInformation 只能由磁碟驅動器使用。 其他驅動程式應該改用 IOCTL_DISK_SET_PARTITION_INFO 磁碟 I/O 要求。

當要求磁碟設備驅動器依IRP_MJ_DEVICE_CONTROL要求,在分割區數據表項目中設定磁碟分區類型時,就會呼叫此例程。 此要求通常是由格式公用程序發出,它會在分割區上執行 I/O 控件函式。 驅動程式會將指標傳遞給代表實體磁碟的裝置物件,以及與格式公用程式已開啟之裝置對象相關聯的磁碟分區數目。 由於在實作動態數據分割之前, 已開發IoSetPartitionInformation 的HAL例程,因此它們不會區分磁碟) 上的分割區 序數 (,而分割區編號 (指派給分割區的數據分割 編號 ,以便將其識別給系統) 。 驅動程式必須使用分割區的號來呼叫IoSetPartitionInformation,而不是實際的分割區編號。

此例程是同步的,必須由磁碟驅動程式的 Dispatch 例程或驅動程式線程呼叫。 因此,發出裝置控制要求來設定裝置的分割區類型時,所有使用者和文件系統線程都必須準備好進入等候狀態。

此例程的運作假設磁碟驅動器所傳入的數據分割編號確實存在。

這個例程必須在 IRQL = PASSIVE_LEVEL呼叫,因為它會使用核心事件物件來同步處理裝置上的 I/O 完成。 事件無法設定為 Signaled 狀態,而不需要佇列並執行 I/O 系統的特殊核心 APC 例程以進行 I/O 完成。

規格需求

需求
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅一节)
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) IrqlIoPassive5 (wdm) PowerIrpDDis (wdm)

另請參閱

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable