NtCreateSectionEx 函式 (ntifs.h)

NtCreateSectionEx 會建立 區段物件** ,並開啟具有指定所需存取權的物件句柄。 這是 NtCreateSection 的擴充版本,指定以指出這實際上是 AWE (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 錯誤碼。 可能的錯誤狀態代碼包括:

傳回碼 Description
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」。。

對於核心模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本在處理和解譯輸入參數的方式可能會有不同的行為。 如需例程 NtXxxZwXxx 版本之間的關聯性詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

如果指定慣用的 NUMA 節點,ExtendedParameters 是堆棧型擴充參數。

只能指定一個擴充參數的實例。

轉換為預期在此 API 下游的 1 個型 numa 節點編號。

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1803)
標頭 ntifs.h
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe

另請參閱

ACCESS_MASK

CreateFileMapping

InitializeObjectAttributes

ZwClose

ZwMapViewOfSection

ZwOpenSection

ZwUnmapViewOfSection