2010-01-29 6 views
3

C#에서 일부 COM 개체로 작업하고 있는데, 그 중 하나에는 IntPtr을 사용하는 SetLogFile이라는 함수가 있습니다. 어떻게하면 C#에서 파일을 만들고 그 COM 함수에 IntPtr로 전달할 수 있습니까?C#에서 파일을 만들고 COM 개체에 IntPtr로 전달하십시오.

편집 : - 당신은 당신이하여 FileStream에서 손으로 할 수있는하여 FileStream이있는 경우 http://msdn.microsoft.com/en-us/library/aa915939.aspx

답변

2

이것은 정확히 매개 변수에 대해 SetLogFile 메서드에서 수신 할 것으로 예상되는 내용에 크게 의존합니다. COM 객체와 C# 메소드가 해당 인터페이스를 구현한다고 예상하면 다음을 사용하여 변수를 전달할 수 있습니다.

var ptr = Marshal.GetIUnknownForObject(theParameter); 
try { 
    theComObject.SetLogFile(ptr); 
} finally { 
    Marshal.Release(ptr); 
} 

실제 Win32 핸들이 필요한 경우. 파일 시스템 API를 통해 파일 핸들을 얻은 다음 메소드에 전달해야합니다.

0

아마도 FileStream 객체의 SafeFileHandle 속성을 사용할 수 있습니다. 그렇다고해서 P/Invoke CreateFile보다 안전 할 수도 있습니다.

관련 문제