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