我正在使用C#处理一些COM对象,其中一个对象有一个名为SetLogFile的函数,该函数需要一个IntPtr参数。我该如何在C#中创建文件,并将其作为IntPtr参数传递给该COM函数?
编辑:该函数需要一个打开的文件句柄:http://msdn.microsoft.com/en-us/library/aa915939.aspx
编辑:该函数需要一个打开的文件句柄:http://msdn.microsoft.com/en-us/library/aa915939.aspx
您提到的"file"需要传入什么内容不太明确- 如果您有一个FileStream,可以将FileStream.Handle作为IntPtr传递(假设它期望一个HANDLE值)。
请参见 "如何从C#向C++ DLL传递类型为HANDLE的参数"。
SetLogFile
方法对IntPtr
参数的具体要求。如果它需要一个COM对象,并且C#方法实现了适当的接口,您可以使用以下代码传递变量。var ptr = Marshal.GetIUnknownForObject(theParameter);
try {
theComObject.SetLogFile(ptr);
} finally {
Marshal.Release(ptr);
}