Makro EngAllocPrivateUserMem (winddi.h)
Fungsi EngAllocPrivateUserMem mengalokasikan blok memori pengguna dari ruang alamat proses tertentu dan menyisipkan tag yang disediakan penelepon sebelum alokasi.
Sintaks
void EngAllocPrivateUserMem(
[in] psl,
[in] cj,
[in] tag
);
Parameter
[in] psl
Arahkan ke struktur DD_SURFACE_LOCAL yang mewakili permukaan Microsoft DirectDraw untuk mengaitkan memori yang dialokasikan.
[in] cj
Menentukan jumlah byte memori yang akan dialokasikan.
[in] tag
Menentukan tag kumpulan 4 byte yang secara unik mengidentifikasi driver yang melakukan alokasi memori. Untuk informasi selengkapnya tentang tag kumpulan, lihat ExAllocatePoolWithTag.
Mengembalikan nilai
Tidak ada
Keterangan
Driver DirectDraw mungkin memerlukan "scratch pad" memori pengguna sebagai pengganti memori video yang sebenarnya. Meskipun praktik ini tidak disarankan karena implikasi performanya, terkadang diperlukan. Memori goresan ini biasanya dialokasikan hanya untuk waktu yang singkat. Setelah memori dialokasikan, memori digunakan untuk operasi grafis yang dimaksudkan, lalu dibatalkan alokasinya.
Masalah muncul jika instans driver dihancurkan sebelum permukaan tidak terkunci. Kasus tertentu terjadi ketika sistem beralih ke desktop yang dilindungi sebagai akibat dari pengguna yang menekan CTRL+ALT+DEL. Dalam situasi ini, sakelar mode dilakukan pada konteks proses sistem. Jika driver memiliki kunci permukaan yang luar biasa, seperti ketika sakelar mode terjadi sebelum permukaan dibuka, driver akan diperlukan untuk menghancurkan permukaan tersebut pada konteks proses yang berbeda. Driver tidak dapat memanggil EngFreeUserMem untuk membatalkan alokasi memori awal karena titik masuk ini akan gagal jika dipanggil pada konteks yang berbeda dari yang digunakan ketika memori dialokasikan.
EngAllocPrivateUserMem, dan EngFreePrivateUserMem disediakan untuk mengatasi masalah ini. Kedua fungsi ini identik dengan EngAllocUserMem dan EngFreeUserMem, kecuali bahwa mereka melakukan pekerjaan tambahan yang diperlukan untuk membebaskan memori yang dialokasikan pada konteks proses yang berbeda. Informasi konteks proses disimpan dengan objek DirectDraw yang memiliki objek permukaan DirectDraw tempat titik psl .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows 2000 dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Universal |
Header | winddi.h (termasuk Winddi.h) |
Pustaka | Win32k.lib |
DLL | Win32k.sys |