2011-02-15 2 views
2

내 파일 (sample.txt)은 10 자입니다. 파일을 쓰기 모드로 열었습니다. createfilemapping("mymapping")을 완료했습니다. 그런 다음 getchar을 사용하여 프로세스를 보류합니다. 그러면 이제의 Sample.txt 값에 액세스 및 K를 통해 변경할 수메모리 매핑 파일 - 다른 프로세스에서 데이터 스트립을 삽입하는 방법

openfilemapping("mymapping"), 
char*k = (char*)mapviewoffile 

아래 않는 다른 프로세스를 열었다. 그러나 다른 10 자의 스트립을 파일에 삽입/추가하는 방법.

답변

3

공유 메모리 매핑은 생성시 크기가 고정되어 있습니다. 더 큰 매핑 크기로 CreateFileMapping에 다시 전화해야합니다. 이렇게하면 파일이 자동으로 확장되어 다시 MapViewOfFile 수 있으며 원하는 모든 데이터를 쓸 수 있습니다. 파일 매핑이 소멸되도록 모든 핸들과 매핑을 먼저 닫지 않으면 파일 매핑의 이름을 변경해야합니다.

디스크 파일을 기반으로 명명 된 파일 매핑을 사용하는 것은 예외입니다 (물론 불법은 아닙니다). 일반적으로 실제 파일을 매핑하는 경우 NULLlpName 매개 변수 CreateFileMapping으로 전달합니다. 보조 파일이없는 공유 메모리 매핑을 만들려는 경우 이름을 전달합니다. 즉, hFileNULL이고 lpName은 공유 메모리 세그먼트의 이름입니다.

관련 문제