Bagikan melalui


Membuat Tampilan File

Untuk memetakan data dari file ke memori virtual proses, Anda harus membuat tampilan file. Fungsi MapViewOfFile dan MapViewOfFileEx menggunakan handel objek pemetaan file yang dikembalikan oleh CreateFileMapping untuk membuat tampilan file atau sebagian file di ruang alamat virtual proses. Fungsi-fungsi ini gagal jika bendera akses bertentangan dengan yang ditentukan ketika CreateFileMapping membuat objek pemetaan file.

Fungsi MapViewOfFile mengembalikan penunjuk ke tampilan file. Dengan mendereferensikan penunjuk dalam rentang alamat yang ditentukan dalam MapViewOfFile, aplikasi dapat membaca data dari file dan menulis data ke file. Menulis ke tampilan file menghasilkan perubahan pada objek pemetaan file. Penulisan aktual ke file pada disk ditangani oleh sistem. Data sebenarnya tidak ditransfer pada saat objek pemetaan file ditulis. Sebaliknya, banyak input dan output file (I/O) di-cache untuk meningkatkan performa sistem umum. Aplikasi dapat mengambil alih perilaku ini dengan memanggil fungsi FlushViewOfFile untuk memaksa sistem segera melakukan transaksi disk.

Fungsi MapViewOfFileEx berfungsi persis seperti fungsi MapViewOfFile kecuali memungkinkan proses untuk menentukan alamat dasar tampilan file di ruang alamat virtual proses di parameter lpvBase . Jika tidak ada cukup ruang di alamat yang ditentukan, panggilan gagal. Oleh karena itu, jika Anda harus memetakan file ke alamat yang sama dalam beberapa proses, proses harus menegosiasikan alamat yang sesuai: Parameter lpvBase harus merupakan kelipatan integral dari granularitas alokasi memori sistem atau panggilan gagal. Untuk mendapatkan granularitas alokasi memori sistem, gunakan fungsi GetSystemInfo , yang mengisi anggota struktur SYSTEM_INFO .

Aplikasi dapat membuat beberapa tampilan file dari objek pemetaan file yang sama. Tampilan file dapat menjadi ukuran yang berbeda dari objek pemetaan file dari mana ia berasal, tetapi harus lebih kecil dari objek pemetaan file. Offset yang ditentukan oleh parameter dwOffsetHigh dan dwOffsetLow dari MapViewOfFile harus merupakan kelipatan granularitas alokasi sistem.

Membuat Tampilan Dalam File