파일 및 메모리 공유

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

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

파일과 연결되지 않은 메모리를 공유하려면 프로세스에서 CreateFileMapping 함수를 사용하고 INVALID_HANDLE_VALUE 기존 파일 핸들 대신 hFile 매개 변수로 지정해야 합니다. 해당 파일 매핑 개체는 시스템 페이징 파일에서 백업되는 메모리에 액세스합니다. CreateFileMapping 호출에서 INVALID_HANDLE_VALUE hFile을 지정할 때 0보다 큰 크기를 지정해야 합니다.

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

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

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

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

명명된 공유 메모리 만들기