2012-12-14 5 views
1

내 문제는 파일을 열 수 없다는 것입니다. 다른 프로세스 또는 동일한 프로세스에서!관리되는 메모리 매핑 된 파일

코드 :

var path = @"c:\work\mmf.dat"; 
var map = "testmap123"; 
var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 

if (fs.Length == 0) 
{ 
    fs.SetLength(1024); 
} 

var sec = new MemoryMappedFileSecurity(); 
var mem = MemoryMappedFile.CreateFromFile(fs, map, fs.Length, MemoryMappedFileAccess.ReadWrite, sec, HandleInheritability.Inheritable, false); 

// Problem here System.UnauthorizedAccessException 

var tmp = MemoryMappedFile.OpenExisting(map, MemoryMappedFileRights.FullControl, HandleInheritability.Inheritable); 
+0

당신의 오류 코드는 무엇입니까? –

+0

7FF8FFFB 경로에 대한 액세스가 거부되었습니다. – nim

+1

MemoryMappedFileSecurity에서 바로 가기를 사용했습니다. 다른 하나를 가져 가면 대신 null을 전달하십시오. –

답변

1

는 다음과 같은 시도 :

var path = @"c:\diverse\mmf.dat"; 
var map = "testmap123"; 
using (var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) 
{ 

    if (fs.Length == 0) 
    { 
     fs.SetLength(1024); 
    } 
} 
using (var mem = MemoryMappedFile.CreateFromFile(path, FileMode.Open, map, 1024, MemoryMappedFileAccess.Read)) 
{ 
    using (var tmp = MemoryMappedFile.OpenExisting(map)) 
    { 
     //work with tmp 
    } 
} 
관련 문제