Fungsi PrefetchVirtualMemory (memoryapi.h)

Menyediakan mekanisme yang efisien untuk membawa ke dalam memori rentang alamat virtual yang berpotensi tidak konsisten dalam ruang alamat proses.

Sintaks

BOOL PrefetchVirtualMemory(
  [in] HANDLE                    hProcess,
  [in] ULONG_PTR                 NumberOfEntries,
  [in] PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses,
  [in] ULONG                     Flags
);

Parameter

[in] hProcess

Tangani ke proses yang rentang alamat virtualnya akan diambil sebelumnya. Gunakan fungsi GetCurrentProcess untuk menggunakan proses saat ini.

[in] NumberOfEntries

Jumlah entri dalam array yang ditujukkan oleh parameter VirtualAddresses .

[in] VirtualAddresses

Penunjuk ke array struktur WIN32_MEMORY_RANGE_ENTRY yang masing-masing menentukan rentang alamat virtual yang akan diambil sebelumnya. Rentang alamat virtual dapat mencakup bagian mana pun dari ruang alamat proses yang dapat diakses oleh proses target.

[in] Flags

Dicadangkan. Harus 0.

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah nilai bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah 0 (nol). Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi PrefetchVirtualMemory ditargetkan pada aplikasi yang tahu dengan keyakinan yang wajar set alamat yang akan mereka akses. Jika kemungkinan alamat ini tidak lagi berada dalam memori (yaitu telah di-page out ke disk), memanggil fungsi PrefetchVirtualMemory pada rentang alamat tersebut sebelum akses akan mengurangi latensi keseluruhan karena API akan secara efisien membawa rentang alamat tersebut dari disk menggunakan permintaan I/O besar dan bersamaan jika memungkinkan.

Fungsi PrefetchVirtualMemory memungkinkan aplikasi untuk memanfaatkan perangkat keras disk secara efisien dengan mengeluarkan I/Os bersamaan yang besar jika memungkinkan ketika aplikasi menyediakan daftar rentang alamat proses yang akan diakses. Bahkan untuk rentang alamat tunggal (misalnya pemetaan file), fungsi PrefetchVirtualMemory dapat memberikan peningkatan performa dengan mengeluarkan satu I/O besar daripada banyak I/Os yang lebih kecil yang akan dikeluarkan melalui kesalahan halaman.

Fungsi PrefetchVirtualMemory murni merupakan pengoptimalan performa: prefetching tidak diperlukan untuk mengakses rentang alamat target. Memori yang diambil sebelumnya tidak ditambahkan ke set kerja proses target; di-cache dalam memori fisik. Ketika rentang alamat yang diambil sebelumnya diakses oleh proses target, rentang tersebut akan ditambahkan ke set kerja.

Karena fungsi PrefetchVirtualMemory tidak pernah diperlukan untuk pengoperasian aplikasi yang benar, fungsi ini diperlakukan sebagai petunjuk yang kuat oleh sistem dan tunduk pada batasan memori fisik biasa di mana ia dapat sepenuhnya atau sebagian gagal dalam kondisi memori rendah. Ini juga dapat menciptakan tekanan memori jika dipanggil dengan rentang alamat besar, sehingga aplikasi hanya boleh melakukan prefetch rentang alamat yang benar-benar akan mereka gunakan.

Untuk mengkompilasi aplikasi yang memanggil fungsi ini, tentukan _WIN32_WINNT sebagai _WIN32_WINNT_WIN8 atau lebih tinggi. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Persyaratan

   
Klien minimum yang didukung Windows 8 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Target Platform Windows
Header memoryapi.h (termasuk Windows.h, Memoryapi.h)
Pustaka onecore.lib
DLL Kernel32.dll

Lihat juga

Fungsi Manajemen Memori

WIN32_MEMORY_RANGE_ENTRY