외부 DLL에서 파일 핸들을 가져 와서 FileStream
을 인스턴스화한다고합시다. 읽기와 쓰기에 잘 작동합니다.핸들 생성자를 사용하는 FileStream에서 Name 속성이 <Unknown> 인 이유는 무엇입니까?
그런 다음 핸들의 경로와 이름을 지정하고 FileStream 객체의 Name 속성에 액세스하려고하면 '알 수 없음'이 반환됩니다.
이 파일을 취하는 생성자 마찬가지입니다 핸들 :이 구현되지 있기 때문에
public FileStream(IntPtr handle, ...
public FileStream(SafeFileHandle handle, ...
나는 짧은 답을 알고있다. 개인 필드
_fileName
이
FileStream
인 경우 해당 생성자에는 할당되지 않습니다.
핸들에서 이름을 얻으려면 API이 하나 이상의 코드 행을 포함하는 것으로 보입니다. 그러나 나는 여전히이 코드가 포함될 수 있다고 생각합니다.
진짜 질문은 다음과 같습니다. 왜 그런가? 아니면 그냥 잊었 니?
@nubugz, 설명 주셔서 감사합니다 :) 핸들에 mmf를 생성하고보기를 가져온 다음 파일 이름/경로를 얻기 위해 GetMappedFileName 호출을 사용하여 링크 된 코드가 모든 파일에서 작동해야합니다. . 대단히 많은 작업이 필요하며 외장에서 보이는 것은 간단한 OS 호출이어야하는 것처럼 보이는 불필요한 작업입니다. 이상한 그것은 mmf에 관해서 만 구현됩니다. 그러나 다시, 우리는 종종 핸들에서 이름으로 매핑하는 옵션이 필요하지 않을 수도 있습니다. –
흠, 두 번째 생각에, 당신 말이 맞습니다. 원격 서버의 공유 폴더에있는 파일에 대한 핸들을 사용하여 필자와 공유하십시오. 그리고 접근 권한이 중요합니다. Anyhoo, .NET 팀이 지금까지 생각한 것은 아무것도 없습니다. –
나는 그들도 의심 스럽다. 우리는 언젠가 mmf 외에도 OS 호출을 볼 것입니다. 그리고 나는 원격 파일에 대한 핸들이 조금이라도 보인다는 것에 동의한다. mmf 호출은 공유 상태로 파일을 열지 않으면 액세스 할 수 없기 때문에 문제가 발생합니다. –