IoWritePartitionTableEx 函式 (ntddk.h)

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

語法

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

參數

[in] DeviceObject

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

DriveLayout

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

傳回值

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

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

備註

IoWritePartitionTableEx 會取代過時的例程 IoWritePartitionTable。 不同於較舊的例程,它可以寫入 GUID 數據分割數據表以及主啟動記錄數據分割數據表。

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

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

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

若要建立或刪除分割區,必須透過 呼叫 IoReadPartitionTableEx 來取得系統的完整描述。 系統格式公用程式可以修改磁碟驅動器配置結構,以反映磁碟的新設定。

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

規格需求

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

另請參閱

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx