Bagikan melalui


Fungsi AllocateUserPhysicalPages (memoryapi.h)

Mengalokasikan halaman memori fisik untuk dipetakan dan tidak dipetakan dalam wilayah Address Windowing Extensions (AWE) dari proses tertentu.

Windows 64-bit pada sistem berbasis Itanium: Karena perbedaan ukuran halaman, AllocateUserPhysicalPages tidak didukung untuk aplikasi 32-bit.

Sintaks

BOOL AllocateUserPhysicalPages(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray
);

Parameter

[in] hProcess

Handel ke proses.

Fungsi ini mengalokasikan memori yang nantinya dapat dipetakan dalam ruang alamat virtual proses ini. Handel harus memiliki hak akses PROCESS_VM_OPERATION . Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.

[in, out] NumberOfPages

Ukuran memori fisik untuk dialokasikan, di halaman.

Untuk menentukan ukuran halaman komputer, gunakan fungsi GetSystemInfo . Pada output, parameter ini menerima jumlah halaman yang benar-benar dialokasikan, yang mungkin kurang dari angka yang diminta.

[out] PageArray

Penunjuk ke array untuk menyimpan nomor bingkai halaman memori yang dialokasikan.

Ukuran array yang dialokasikan harus setidaknya numberOfPages kali ukuran jenis data ULONG_PTR .

Jangan coba mengubah buffer ini. Ini berisi data sistem operasi, dan kerusakan bisa menjadi bencana. Informasi dalam buffer tidak berguna untuk aplikasi.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Lebih sedikit halaman dari yang diminta dapat dialokasikan. Pemanggil harus memeriksa nilai parameter NumberOfPages saat kembali untuk melihat berapa banyak halaman yang dialokasikan. Semua nomor bingkai halaman yang dialokasikan ditempatkan secara berurutan dalam memori yang diarahkan oleh parameter UserPfnArray .

Jika fungsi gagal, nilai yang dikembalikan adalah FALSE, dan tidak ada bingkai yang dialokasikan. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi AllocateUserPhysicalPages digunakan untuk mengalokasikan memori fisik yang nantinya dapat dipetakan dalam ruang alamat virtual proses. Hak istimewa SeLockMemoryPrivilege harus diaktifkan dalam token pemanggil atau fungsi akan gagal dengan ERROR_PRIVILEGE_NOT_HELD. Untuk informasi selengkapnya, lihat Konstanta Hak Istimewa.

Memori yang dialokasikan oleh fungsi ini harus ada secara fisik dalam sistem. Setelah memori dialokasikan, memori dikunci dan tidak tersedia untuk sistem manajemen memori virtual lainnya.

Halaman fisik tidak dapat dipetakan secara bersamaan di lebih dari satu alamat virtual.

Halaman fisik dapat berada di alamat fisik apa pun. Anda tidak boleh membuat asumsi tentang kedekatan halaman fisik.

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan makro _WIN32_WINNT sebagai 0x0500 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

AllocateUserPhysicalPages2, ditambahkan ke SDK dalam rilis selanjutnya, sama dengan AllocateUserPhysicalPages tetapi menambahkan parameter ExtendedParameters dan ExtendedParameterCount .

Contoh

Misalnya, lihat Contoh AWE.

Persyaratan

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

Lihat juga

Ekstensi Windowing Alamat

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Fungsi Manajemen Memori

AllocateUserPhysicalPages2