Fungsi ZwSetInformationVirtualMemory (ntifs.h)
Rutinitas ZwSetInformationVirtualMemory melakukan operasi pada daftar rentang alamat tertentu di ruang alamat pengguna proses.
Sintaks
NTSYSAPI NTSTATUS ZwSetInformationVirtualMemory(
[in] HANDLE ProcessHandle,
[in] VIRTUAL_MEMORY_INFORMATION_CLASS VmInformationClass,
[in] ULONG_PTR NumberOfEntries,
[in] PMEMORY_RANGE_ENTRY VirtualAddresses,
[in] PVOID VmInformation,
[in] ULONG VmInformationLength
);
Parameter
[in] ProcessHandle
Menentukan handel terbuka untuk proses dalam konteks operasi yang akan dilakukan. Handel ini tidak boleh tidak valid. Gunakan makro NtCurrentProcess , yang ditentukan dalam Ntddk.h, untuk menentukan proses saat ini.
[in] VmInformationClass
Menentukan jenis operasi yang akan dilakukan. Atur ke VmPrefetchInformation yang ditentukan dalam enumerasi VIRTUAL_MEMORY_INFORMATION_CLASS , lihat ntddk.h.
[in] NumberOfEntries
Jumlah entri dalam array yang ditujukkan oleh parameter VirtualAddresses . Parameter ini tidak boleh 0.
[in] VirtualAddresses
Penunjuk ke array struktur MEMORY_RANGE_ENTRY di mana setiap entri menentukan rentang alamat virtual yang akan diproses. Rentang alamat virtual dapat mencakup bagian mana pun dari ruang alamat proses yang dapat diakses oleh proses target.
[in] VmInformation
Penunjuk ke buffer yang berisi informasi memori. Format dan konten buffer bergantung pada kelas informasi yang ditentukan.
Jika VmInformationClass adalah VmPrefetchInformation, parameter ini tidak boleh berupa NULL dan harus menunjuk ke variabel ULONG yang diatur ke 0.
[in] VmInformationLength
Ukuran buffer yang diacu oleh VmInformation.
Jika VmInformationClass adalah VmPrefetchInformation, ini harus sizeof (ULONG)
.
Nilai kembali
ZwSetInformationVirtualMemory mengembalikan STATUS_SUCCESS pada keberhasilan, atau kode kesalahan NTSTATUS yang sesuai tentang kegagalan.
Keterangan
Rutinitas ZwSetInformationVirtualMemory dipanggil oleh driver yang mengetahui serangkaian alamat yang akan mereka akses. Jika kemungkinan alamat ini tidak lagi berada dalam memori (yaitu telah di-page out ke disk), memanggil rutinitas ini pada rentang alamat tersebut sebelum akses mengurangi latensi keseluruhan karena secara efisien membawa rentang alamat tersebut dari disk menggunakan permintaan I/O bersamaan yang besar jika memungkinkan.
ZwSetInformationVirtualMemory memungkinkan driver untuk memanfaatkan perangkat keras disk secara efisien dengan mengeluarkan I/Os bersamaan yang besar jika memungkinkan ketika driver menyediakan daftar rentang alamat proses yang akan diakses. Bahkan untuk rentang alamat tunggal (misalnya pemetaan file), rutinitas dapat memberikan peningkatan performa dengan mengeluarkan satu I/O besar daripada banyak I/Os yang lebih kecil yang akan dikeluarkan melalui kesalahan halaman.
Driver menyebut rutinitas ini murni untuk 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 ditambahkan ke set kerja.
Karena panggilan ini tidak diperlukan untuk pengoperasian driver yang benar, itu 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.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 versi 1511. |
Target Platform | Universal |
Header | ntifs.h (termasuk Ntddk.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs, PowerIrpDDis |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk