NtCreateSectionEx 函式 (ntifs.h)
NtCreateSectionEx 會建立 區段物件**,並開啟具有指定所需存取權之物件的句柄。 它是 NtCreateSection 的擴充版本,指定 以指出這實際上是位址視窗延伸模組 (AWE) 區段,以建立區段物件。
語法
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateSectionEx(
[out] PHANDLE SectionHandle,
[out] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PLARGE_INTEGER MaximumSize,
[in] ULONG SectionPageProtection,
[in] ULONG AllocationAttributes,
[in, optional] HANDLE FileHandle,
[in/out] PMEM_EXTENDED_PARAMETER ExtendedParameters,
ULONG ExtendedParameterCount
);
參數
[out] SectionHandle
接收區段物件的句柄之 HANDLE 變數的指標。
[out] DesiredAccess
指定 ACCESS_MASK 值,這個值會決定對物件的要求存取權。 除了針對所有類型的物件所定義的訪問許可權之外,呼叫者還可以指定下列任一訪問許可權,這些許可權是區段物件特有的:
DesiredAccess 旗標 | 允許呼叫端執行此動作 |
---|---|
SECTION_EXTEND_SIZE | 動態擴充區段的大小。 |
SECTION_MAP_EXECUTE | 執行區段的檢視。 |
SECTION_MAP_READ | 讀取區段的檢視。 |
SECTION_MAP_WRITE | 撰寫區段的檢視。 |
SECTION_QUERY | 查詢區段物件以取得區段的相關信息。 驅動程式應該設定此旗標。 |
SECTION_ALL_ACCESS | 所有先前的旗標與STANDARD_RIGHTS_REQUIRED結合。 |
[in, optional] ObjectAttributes
指定物件名稱和其他屬性之 OBJECT_ATTRIBUTES 結構的指標。 使用 InitializeObjectAttributes 初始化這個結構。 如果呼叫端未在系統線程內容中執行,則呼叫 InitializeObjectAttributes時,它必須設定OBJ_KERNEL_HANDLE屬性。
[in, optional] MaximumSize
指定區段的大小上限,以位元組為單位。 NtCreateSection 會將此值四捨五入為最接近的PAGE_SIZE倍數。 如果區段是由分頁檔案所支援,MaximumSize 指定區段的實際大小。 如果區段是由一般檔案所支援,MaximumSize 會指定檔案可擴充或對應的大小上限。
[in] SectionPageProtection
指定要在 區段中每個頁面放置的保護。 使用下列四個值之一:PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE或PAGE_WRITECOPY。 如需這些值的描述,請參閱 CreateFileMapping。
[in] AllocationAttributes
指定SEC_XXX 旗標的位掩碼,以決定區段的配置屬性。 如需這些旗標的描述,請參閱 CreateFileMapping。
[in, optional] FileHandle
選擇性地指定開啟檔案物件的句柄。 如果 fileHandle 的值 NULL,區段會由分頁檔案支援。 否則,區段是由指定的檔案所支援。
[in/out] ExtendedParameters
MEM_EXTENDED_PARAMETER 結構的陣列指標,包含用來建立 區段的擴充參數。
ExtendedParameterCount
ExtendedParameters 指向的陣列大小。
傳回值
NtCreateSectionEx 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回適當的 NTSTATUS 錯誤碼。 可能的錯誤狀態代碼包括下列專案:
傳回碼 | 描述 |
---|---|
STATUS_FILE_LOCK_CONFLICT | FileHandle 參數所指定的檔案已鎖定。 |
STATUS_INVALID_FILE_FOR_SECTION | FileHandle 所指定的檔案不支援區段。 |
STATUS_INVALID_PAGE_PROTECTION | SectionPageProtection 參數指定的值無效。 |
STATUS_MAPPED_FILE_SIZE_ZERO | FileHandle 所指定的檔案大小為零,而 MaximumSize 為零。 |
STATUS_SECTION_TOO_BIG | MaximumSize 的值太大。 當 MaximumSize 大於系統定義的區段上限時,或如果 MaximumSize 大於指定的檔案,且區段無法寫入時,就會發生此情況。 |
言論
SectionHandle 指向的句柄不再使用後,驅動程式必須呼叫 NtClose 關閉它。
如果呼叫端未在系統線程內容中執行,則必須確保所建立的任何句柄都是私人句柄。 否則,進程可以存取其內容中的驅動程序執行句柄。 如需詳細資訊,請參閱 物件句柄。
如需設定記憶體對應區段和檢視的詳細資訊,請參閱 區段和檢視。
注意
如果呼叫此函式是在使用者模式中發生,您應該使用名稱 「NtCreateSectionEx」 而不是 「ZwCreateSectionEx」。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
如果指定慣用的 NUMA 節點,ExtendedParameters 是堆棧型擴充參數。
只能指定擴充參數的一個實例。
轉換為此 API 下游預期的 1 型 numa 節點編號。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1803 |
標頭 | ntifs.h |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |