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) |