IoWritePartitionTable 函式 (ntddk.h)

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

IoWritePartitionTable 會針對指定裝置物件所代表磁碟上每個分割區,從數據分割清單緩衝區中的專案寫入數據分割數據表。

語法

NTSTATUS IoWritePartitionTable(
  [in] PDEVICE_OBJECT            DeviceObject,
  [in] ULONG                     SectorSize,
  [in] ULONG                     SectorsPerTrack,
  [in] ULONG                     NumberOfHeads,
  [in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);

參數

[in] DeviceObject

裝置物件的指標,代表要寫入其數據分割數據表的磁碟。

[in] SectorSize

指定裝置上扇區位元組的大小。

[in] SectorsPerTrack

指定裝置上的追蹤大小。

[in] NumberOfHeads

指定每個圓柱的曲目數目。

[in] PartitionBuffer

磁碟驅動器配置緩衝區的指標,其中包含數據分割清單專案。 如需詳細資訊 ,請參閱 DRIVE_LAYOUT_INFORMATION

傳回值

如果所有寫入都已完成且沒有錯誤,IoWritePartitionTablo 會傳回狀態代碼STATUS_SUCCESS。 如果失敗, IoWritePartitionTable 傳回的錯誤碼可能包含下列清單,但不限於:

傳回碼 Description
STATUS_DEVICE_NOT_READY 表示讀取正確的磁碟幾何失敗。
STATUS_INSUFFICIENT_RESOURCES 表示無法 (配置必要的資源,例如堆積記憶體、IRP 等 ) 。
STATUS_UNSUCCESSFUL 表示扇區零沒有預期的 MBR 磁碟簽章。

備註

IoWritePartitionTable 只能由磁碟驅動器使用。 其他驅動程序應該改用 IOCTL_DISK_SET_DRIVE_LAYOUT 磁碟 I/O 要求。

當要求磁碟設備驅動器在分割區數據表項目中設定磁碟分區類型,或IRP_MJ_DEVICE_CONTROL要求重新分割磁碟時,就會呼叫IoWritePartitionTable。 裝置控制要求通常是由格式公用程序發出,它會在電腦上的磁碟分區和磁碟上執行 I/O 控制函式。

若要重設磁碟分區類型,驅動程式會將指標傳遞給代表實體磁碟的裝置物件,以及與格式公用程式已開啟之裝置對象相關聯的磁碟分區數目。 當磁碟要動態重新分割時,磁碟驅動器必須卸除其代表目前磁碟分區的一組裝置物件,並建立代表磁碟上新磁碟分區的新裝置物件集。

建立和刪除分割區且需要系統完整描述的應用程式應該呼叫 IoReadPartitionTable並將 ReturnRecognizedPartitions 設定為 FALSE。 系統格式公用程式可以修改磁碟驅動器配置結構,以反映磁碟的新設定。

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

規格需求

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

另請參閱

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation