[英]How to retrieve XML file stream from unmanaged DLL file in C#
我从客户端收到了一个非托管的DLL文件。 该DLL文件具有返回XML流的重要方法。 我不确定如何“捕获”此XML流,因为该DLL文件几乎没有记录。 这是我所知道的:
OpenXmlBridge
获取XML流句柄。 这就是我现在停留的地方:
[DllImport("UnmanagedDllFile.DLL")]
public static extern void OpenXmlBridge();
我知道执行该操作后将返回void
,但我对此感到茫然。 我也知道这个函数的存在是因为当我用一些随机的东西替换OpenXmlBridge
时,我得到了错误。 所以直到现在,我猜我一直在正确的轨道上。 我一直无法从这里找出要做什么。
我每个人都可以指出正确的方向,这样我就可以从此函数检索XML流句柄。 任何帮助或提示,我们将不胜感激。
您可以使用UnmanagedMemoryStream
类。 在这种情况下,您的包装器将如下所示:
[DllImport("UnmanagedDllFile.DLL")]
public static extern IntPtr OpenXmlBridge();
和访问它的代码将是这样的:
var length = 0 //stream length here
var pointer = NativeWrapper.OpenXmlBridge();
using(var ms = new UnmanagedMemoryStream((Byte*)pointer, length){
var xDocument = new XmlDocument();
xDocument.Load(ms);
//process document
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.