共用方式為


ZwMapViewOfSectionEx 函式 (wdm.h)

ZwMapViewOfSectionEx 例程會將區段的檢視對應到主旨程式的虛擬位址空間。

語法

NTSYSAPI NTSTATUS ZwMapViewOfSectionEx(
  [in]                HANDLE                  SectionHandle,
  [in]                HANDLE                  ProcessHandle,
  [in, out]           PVOID                   *BaseAddress,
  [in, out, optional] PLARGE_INTEGER          SectionOffset,
  [in, out]           PSIZE_T                 ViewSize,
  [in]                ULONG                   AllocationType,
  [in]                ULONG                   PageProtection,
  [in, out, optional] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]                ULONG                   ExtendedParameterCount
);

參數

[in] SectionHandle

區段物件的句柄。 此句柄是由 成功呼叫 ZwCreateSectionZwOpenSection 所建立。

[in] ProcessHandle

物件句柄,此物件表示檢視應該對應的進程。 使用 ZwCurrentProcess 宏來指定目前的進程。 句柄必須以 PROCESS_VM_OPERATION 存取權開啟。

[in, out] BaseAddress

接收檢視基位址之變數的指標。 如果此參數的值不是 NULL,則會從指定的虛擬位址四捨五入到下一個 64 KB 位址界限開始配置檢視。

[in, out, optional] SectionOffset

從區段開頭到檢視之位移的變數指標,以位元組為單位。 如果這個指標不是 NULL,位移會四捨五入到下一個配置粒度大小界限。

[in, out] ViewSize

SIZE_T變數的指標。 如果這個變數的初始值為零, ZwMapViewOfSectionEx 會對應從 SectionOffset 開始的區段檢視,並繼續到區段的結尾。 否則,初始值會以位元組為單位指定檢視的大小。 ZwMapViewOfSectionEx 一律會將此值四捨五入到最接近的PAGE_SIZE倍數,然後再對應檢視。

傳回時,值會接收檢視的實際大小,以位元組為單位。

[in] AllocationType

指定一組旗標,描述要針對指定頁面區域執行的配置類型。 有效的旗標是MEM_RESERVE、MEM_TOP_DOWN、MEM_LARGE_PAGES、MEM_DIFFERENT_IMAGE_BASE_OK和MEM_REPLACE_PLACEHOLDER。 雖然不允許MEM_COMMIT,除非指定MEM_RESERVE,否則會隱含。 如需MEM_XXX 旗標的詳細資訊,請參閱 VirtualAllocMapViewOfFile3 例程的描述。

[in] PageProtection

指定要套用至對應檢視 的頁面保護

對於使用 SEC_IMAGE 屬性建立的 section 物件,PageProtection 參數沒有任何作用,而且可以設定為任何有效的值,例如 PAGE_READONLY。

對於使用 SEC_IMAGE_NO_EXECUTE 屬性建立的 section 物件,PageProtection 值必須設定為 PAGE_READONLY。

對於非影像區段,PageProtection 參數的值必須與呼叫 ZwCreateSection 時所指定的區段頁面保護相容。

ZwMapViewOfSectionEx 一律會設定對應頁面的快取類型,以符合建立區段物件時所提供的快取類型。 例如,如果使用 SEC_NOCACHE 旗標呼叫 ZwCreateSection,則不論 PageProtection 參數是否包含 PAGE_NOCACHE 旗標, ZwMapViewOfSectionEx 都會對應未快取的頁面。

[in, out, optional] ExtendedParameters

MEM_EXTENDED_PARAMETER 類型之一或多個擴充參數的選擇性指標。 如需擴充參數的詳細資訊,請參閱 MapViewOfFile3 例程的描述。

[in] ExtendedParameterCount

指定 ExtendedParameters 陣列中的項目數目。

傳回值

ZwMapViewOfSectionEx 會傳回 NTSTATUS 值。 可能的傳回值包括下列各項:

傳回碼 Description
STATUS_SUCCESS 例程已成功執行要求的作業。
STATUS_CONFLICTING_ADDRESSES 指定的位址範圍與已保留的範圍衝突。
STATUS_INVALID_PAGE_PROTECTION 為 PageProtection 參數指定的值無效。
STATUS_SECTION_PROTECTION 為 PageProtection 參數指定的值與建立區段時所指定的頁面保護不相容。

備註

區段的數個不同檢視可以同時對應至一或多個進程的虛擬位址空間。

請勿使用 ZwMapViewOfSectionEx 將記憶體範圍從 \Device\PhysicalMemory 對應到使用者模式,除非您的驅動程式已透過 MmAllocatePagesForMdlEx 或另一種方法直接配置記憶體範圍,以確保沒有其他系統元件將相同的記憶體範圍對應至不同的 MEMORY_CACHING_TYPE 值。

使用者應用程式無法直接從 Windows Server 2003 Service Pack 1 (SP1) 存取 \Device\PhysicalMemory ,而且只有在驅動程式將句柄傳遞至應用程式時才能存取它。

如需區段對象的詳細資訊,請參閱 Section Objects and Views

如果在使用者模式中呼叫此函式,您應該使用名稱 「NtMapViewOfSectionEx」 而不是 「ZwMapViewOfSectionEx」。。

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
最低支援的用戶端 Windows 11 版本 24H2
標頭 wdm.h

另請參閱

使用 Nt 和 Zw 版本的原生系統服務例程

ZwCreateSection

ZwOpenSection

ZwMapViewOfSection

ZwUnmapViewOfSection

MapViewOfFile3