Berbagi File dan Memori

Pemetaan file dapat digunakan untuk berbagi file atau memori antara dua proses atau lebih. Untuk berbagi file atau memori, semua proses harus menggunakan nama atau handel objek pemetaan file yang sama.

Untuk berbagi file, proses pertama membuat atau membuka file dengan menggunakan fungsi CreateFile . Selanjutnya, ini membuat objek pemetaan file dengan menggunakan fungsi CreateFileMapping , menentukan handel file dan nama untuk objek pemetaan file. Nama-nama objek pemetaan peristiwa, semaphore, mutex, waitable timer, job, dan file berbagi namespace yang sama. Oleh karena itu, fungsi CreateFileMapping dan OpenFileMapping gagal jika mereka menentukan nama yang digunakan oleh objek dari jenis lain.

Untuk berbagi memori yang tidak terkait dengan file, proses harus menggunakan fungsi CreateFileMapping dan menentukan INVALID_HANDLE_VALUE sebagai parameter hFile alih-alih handel file yang ada. Objek pemetaan file yang sesuai mengakses memori yang didukung oleh file halaman sistem. Anda harus menentukan ukuran yang lebih besar dari nol ketika Anda menentukan hFile INVALID_HANDLE_VALUE dalam panggilan ke CreateFileMapping.

Cara termampu bagi proses lain untuk mendapatkan handel objek pemetaan file yang dibuat oleh proses pertama adalah dengan menggunakan fungsi OpenFileMapping dan menentukan nama objek. Ini disebut sebagai memori bersama bernama. Jika objek pemetaan file tidak memiliki nama, proses harus mendapatkan handel untuk itu melalui pewarisan atau duplikasi. Untuk informasi selengkapnya tentang pewarisan dan duplikasi, lihat Pewarisan.

Proses yang berbagi file atau memori harus membuat tampilan file dengan menggunakan fungsi MapViewOfFile atau MapViewOfFileEx . Mereka harus mengoordinasikan akses mereka menggunakan semaphores, mutex, peristiwa, atau beberapa teknik pengecualian timbal balik lainnya. Untuk informasi selengkapnya, lihat Sinkronisasi.

Objek pemetaan file bersama tidak akan dihancurkan sampai semua proses yang menggunakannya menutup handel mereka dengan menggunakan fungsi CloseHandle .

Untuk informasi tentang keamanan objek pemetaan file, lihat Keamanan Pemetaan File dan Hak Akses.

Membuat Memori Bersama Bernama