IoSetPartitionInformationEx 函式 (ntddk.h)
針對 DeviceObject 所代表的磁碟, IoSetPartitionInformationEx 例程會使用 SET_PARTITION_INFORMATION_EX 結構中指定的資訊,初始化數據分割數據表專案。
語法
NTSTATUS IoSetPartitionInformationEx(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG PartitionNumber,
[in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);
參數
[in] DeviceObject
代表要設定數據分割類型的裝置之裝置物件的指標。
[in] PartitionNumber
指定要設定數據分割類型之裝置上的分割區編號。
[in] PartitionInfo
結構,其 PartitionType 成員會指定數據分割的類型。 針對目前定義的 PartitionType 值 PARTITION_INFORMATION。
傳回值
如果 IoSetPartitionInformationEx 傳回STATUS_SUCCESS,磁碟驅動程式會在其裝置延伸模組中更新此分割區類型的概念。
備註
IoSetPartitionInformationEx 只能由磁碟驅動器使用。 其他驅動程序應該改用 IOCTL_DISK_SET_PARTITION_INFO_EX 磁碟 I/O 要求。
當要求磁碟設備驅動器透過IRP_MJ_DEVICE_CONTROL要求在分割區數據表項目中設定分割區資訊時,就會呼叫此例程。 此要求通常是由格式公用程序發出,此公用程式會在分割區上執行 I/O 控件函式。 驅動程式會將指標傳遞給代表實體磁碟的裝置物件,以及與格式公用程式已開啟之裝置對象相關聯的分割區數目。 由於 IoSetPartitionInformationEx 的 HAL 例程是在實作動態數據分割之前開發的,所以它們 不會 (區分 磁碟上分割區的順序) ,而分割 區編號 (指派給分割區的數據分割編號,以便識別給系統) 。 驅動程式必須使用分割區的序號呼叫IoSetPartitionInformationEx,而不是實際的分割區編號。
如果分割區是主要開機記錄 (MBR) 類型分割區, IoSetPartitionInformationEx 僅限於設定分割區樣式,而分割區樣式則表示為未帶正負號的字元。 如需這些值的詳細資訊,請參閱SET_PARTITION_INFORMATION_MBR。
如果分割區是 GUID 資料分割資料表 (GPT) 分割區, IoSetPartitionInformationEx 會設定下列值:數據分割樣式、數據分割類型,以 GUID 表示,而不是以 MBR 數據分割的情況表示的整數;數據分割標識碼,亦由 GUID 表示;一組屬性 (請參閱可延伸韌體介面,以取得這些屬性的描述) ;和數據分割的 Unicode 名稱。 如需這些值的詳細資訊 ,請參閱SET_PARTITION_INFORMATION_GPT 。
此例程是同步的,而且必須由磁碟驅動程式的 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) 、 PowerIrpDDis (wdm) |