파일 및 메모리 공유

파일 매핑을 사용 하 여 두 개 이상의 프로세스 간에 파일 또는 메모리를 공유할 수 있습니다. 파일이 나 메모리를 공유 하려면 모든 프로세스가 동일한 파일 매핑 개체의 이름이 나 핸들을 사용 해야 합니다.

파일을 공유 하기 위해 첫 번째 프로세스는 CreateFile 함수를 사용 하 여 파일을 만들거나 엽니다. 그런 다음 파일 핸들 및 파일 매핑 개체의 이름을 지정 하 여 createfilemapping에서 함수를 사용 하 여 파일 매핑 개체를 만듭니다. 이벤트, 세마포, 뮤텍스, 대기 가능 타이머, 작업 및 파일 매핑 개체의 이름은 동일한 네임 스페이스를 공유 합니다. 따라서 createfilemapping에서openfilemapping이 함수는 다른 형식의 개체에서 사용 중인 이름을 지정 하는 경우 실패 합니다.

파일과 연결 되지 않은 메모리를 공유 하려면 프로세스에서 createfilemapping에서 함수를 사용 하 고 _ _ 기존 파일 핸들 대신 hfile 매개 변수로 잘못 된 핸들 값을 지정 해야 합니다. 해당 파일 매핑 개체는 시스템 페이징 파일에 의해 지원 되는 메모리에 액세스 합니다. _ _ Createfilemapping에서 에 대 한 호출에서 잘못 된 핸들 값의 hfile을 지정 하는 경우 0 보다 큰 크기를 지정 해야 합니다.

다른 프로세스에서 첫 번째 프로세스로 만든 파일 매핑 개체의 핸들을 가져오는 가장 쉬운 방법은 openfilemapping이 함수를 사용 하 고 개체의 이름을 지정 하는 것입니다. 이를 명명 된 공유 메모리 라고 합니다. 파일 매핑 개체에 이름이 없는 경우 프로세스는 상속 또는 중복을 통해 해당 개체에 대 한 핸들을 가져와야 합니다. 상속 및 복제에 대 한 자세한 내용은 상속을 참조 하세요.

파일이 나 메모리를 공유 하는 프로세스는 MapViewOfFile 또는 mapviewoffileex가 함수를 사용 하 여 파일 뷰를 만들어야 합니다. 세마포, 뮤텍스, 이벤트 또는 다른 상호 배제 기법을 사용 하 여 액세스를 조정 해야 합니다. 자세한 내용은 동기화를 참조 하세요.

공유 파일 매핑 개체는 해당 개체를 사용 하는 모든 프로세스에서 CloseHandle 함수를 사용 하 여 해당 개체에 대 한 핸들을 닫을 때까지 제거 되지 않습니다.

파일 매핑 개체 보안에 대 한 자세한 내용은 파일 매핑 보안 및 액세스 권한을 참조 하세요.

명명 된 공유 메모리 만들기