Fungsi MapViewOfFile3FromApp (memoryapi.h)

Memetakan tampilan pemetaan file ke ruang alamat aplikasi Windows Store panggilan.

Dengan menggunakan fungsi ini, Anda dapat: untuk alokasi baru, menentukan rentang ruang alamat virtual dan pembatasan perataan daya 2; tentukan jumlah parameter yang diperluas secara arbitrer; tentukan simpul NUMA pilihan untuk memori fisik sebagai parameter yang diperluas; dan tentukan operasi tempat penampung (khususnya, penggantian).

Untuk menentukan simpul NUMA, lihat parameter ExtendedParameters .

Sintaks

PVOID MapViewOfFile3FromApp(
  [in]                HANDLE                 FileMapping,
  [in]                HANDLE                 Process,
  [in, optional]      PVOID                  BaseAddress,
  [in]                ULONG64                Offset,
  [in]                SIZE_T                 ViewSize,
  [in]                ULONG                  AllocationType,
  [in]                ULONG                  PageProtection,
  [in, out, optional] MEM_EXTENDED_PARAMETER *ExtendedParameters,
  [in]                ULONG                  ParameterCount
);

Parameter

[in] FileMapping

HANDLE ke bagian yang akan dipetakan ke ruang alamat proses yang ditentukan.

[in] Process

HANDLE ke proses di mana bagian akan dipetakan.

[in, optional] BaseAddress

Alamat dasar tampilan yang diinginkan. Alamat dibulatkan ke bawah ke batas 64k terdekat.

              If this parameter is <b>NULL</b>, the system picks the base
              address.

Jika BaseAddress bukan NULL, maka struktur MEM_ADDRESS_REQUIREMENTS yang disediakan harus terdiri dari semua nol.

[in] Offset

Offset dari awal bagian. Ini harus sejajar 64k.

[in] ViewSize

Jumlah byte yang akan dipetakan. Nilai nol (0) menentukan bahwa seluruh bagian akan dipetakan.

Ukuran harus selalu kelipatan ukuran halaman.

[in] AllocationType

Jenis alokasi memori. Parameter ini bisa nol (0) atau salah satu nilai berikut.

Nilai Makna
MEM_RESERVE
0x00002000
Memetakan tampilan yang dipesan.
MEM_REPLACE_PLACEHOLDER
0x00004000
Mengganti tempat penampung dengan tampilan yang dipetakan. Hanya tampilan bagian yang didukung data/pf yang didukung (tidak ada gambar, memori fisik, dll.). Saat Anda mengganti tempat penampung, BaseAddress dan ViewSize harus sama persis dengan tempat penampung, dan struktur MEM_ADDRESS_REQUIREMENTS yang disediakan harus terdiri dari semua nol.

Setelah Anda mengganti tempat penampung dengan tampilan yang dipetakan, untuk membebaskan tampilan yang dipetakan kembali ke tempat penampung, lihat parameter UnmapFlags dari UnmapViewOfFileEx dan UnmapViewOfFile2.

Tempat penampung adalah jenis wilayah memori yang dipesan.

MEM_LARGE_PAGES
0x20000000
Memetakan tampilan halaman besar. Lihat dukungan halaman besar.

[in] PageProtection

Perlindungan halaman yang diinginkan.

Untuk objek pemetaan file yang dibuat dengan atribut SEC_IMAGE , parameter PageProtection tidak berpengaruh, dan harus diatur ke nilai yang valid seperti PAGE_READONLY.

[in, out, optional] ExtendedParameters

Penunjuk opsional ke satu atau beberapa parameter jenis MEM_EXTENDED_PARAMETER yang diperluas. Masing-masing nilai parameter yang diperluas itu sendiri dapat memiliki bidang Jenisdari MemExtendedParameterAddressRequirements atau MemExtendedParameterNumaNode. Jika tidak ada parameter perluasan MemExtendedParameterNumaNode yang disediakan, maka perilakunya sama dengan untuk fungsi VirtualAlloc/MapViewOfFile (yaitu, simpul NUMA pilihan untuk halaman fisik ditentukan berdasarkan prosesor ideal utas yang pertama kali mengakses memori).

[in] ParameterCount

Jumlah parameter yang diperluas yang diacu oleh ExtendedParameters.

Nilai kembali

Mengembalikan alamat dasar tampilan yang dipetakan, jika berhasil. Jika tidak, mengembalikan NULL dan status kesalahan yang diperluas tersedia menggunakan GetLastError.

Keterangan

API ini membantu mendukung game berkinerja tinggi, dan aplikasi server, yang memiliki persyaratan khusus sekeliling mengelola ruang alamat virtual mereka. Misalnya, memetakan memori di atas wilayah yang dipesan sebelumnya; ini berguna untuk menerapkan buffer cincin pembungkusan secara otomatis. Dan mengalokasikan memori dengan keselarasan tertentu; misalnya, untuk memungkinkan aplikasi Anda menerapkan wilayah besar/besar yang dipetakan halaman sesuai permintaan.

Dengan satu pengecualian penting, tampilan file yang berasal dari objek pemetaan file apa pun yang didukung oleh file yang sama bersifat koheren atau identik pada waktu tertentu. Koherensi dijamin untuk tampilan dalam proses dan untuk tampilan yang dipetakan oleh proses yang berbeda.

Pengecualian terkait dengan file jarak jauh. Meskipun MapViewOfFile3FromApp berfungsi dengan file jarak jauh, mapViewOfFile3FromApp tidak membuatnya tetap koheren. Misalnya, jika dua komputer memetakan file sebagai dapat ditulis, dan keduanya mengubah halaman yang sama, setiap komputer hanya melihat tulisannya sendiri ke halaman. Ketika data diperbarui pada disk, data tidak digabungkan.

Anda hanya dapat berhasil meminta perlindungan yang dapat dieksekusi jika aplikasi Anda memiliki kemampuan codeGeneration .

Contoh

Untuk contoh kode, lihat Skenario 1 di Virtual2Alloc.

Persyaratan

   
Klien minimum yang didukung Windows 10 [khusus aplikasi desktop]
Server minimum yang didukung Windows Server 2016 [hanya aplikasi desktop]
Target Platform Windows
Header memoryapi.h (termasuk Windows.h)
Pustaka WindowsApp.lib
DLL Kernel32.dll

Lihat juga

CreateFileMapping

Membuat Tampilan File

DuplikatHandle

GetSystemInfo

MapViewOfFile3

MapViewOfFileEx

Fungsi Manajemen Memori

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile