Bagikan melalui


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 fungsiCreateFile. Selanjutnya, ini membuat objek pemetaan file dengan menggunakan fungsiCreateFileMapping, menentukan handel file dan nama untuk objek pemetaan file. Nama peristiwa, semaphore, mutex, timer yang dapat ditunda, pekerjaan, dan objek pemetaan file berbagi namespace yang sama. Oleh karena itu, fungsi CreateFileMapping dan fungsi OpenFileMapping gagal jika fungsi-fungsi tersebut menentukan nama yang sudah digunakan oleh objek jenis lain.

Untuk berbagi memori yang tidak terkait dengan file, proses harus menggunakan fungsiCreateFileMapping 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 INVALID_HANDLE_VALUE hFile dalam panggilan ke CreateFileMapping.

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

Proses yang berbagi file atau memori harus membuat tampilan file dengan menggunakan fungsi MapViewOfFile atau MapViewOfFileEx. Mereka harus mengoordinasikan akses mereka menggunakan semaphore, mutex, event, atau beberapa teknik eksklusi mutual lainnya. Untuk informasi selengkapnya, lihat Sinkronisasi.

Objek pemetaan file bersama tidak akan dihancurkan sampai semua proses yang menggunakannya menutup handelnya dengan menggunakan fungsiCloseHandle.

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

Membuat Memori Bersama Bernama