阅读:2790回复:1
[求助]在C#中调用FilterSendMessage获取文件操作信息的程序
各位大侠好, 我最近正在做一个C#中调用FilterSendMessage获取文件操作信息的程序.
在DDK的minispy例子中, C语言下调用FilterSendMessage正常 在C#中通过WindowsAPI调用 先调用FilterConnectCommunicationPort, 返回值为0, 成功 代码如下: [DllImport("fltlib", SetLastError = false)] public static extern int FilterConnectCommunicationPort([MarshalAs(UnmanagedType.LPWStr)] string portName, uint options, IntPtr context, uint sizeOfContext, IntPtr securityAttributes, IntPtr portPtr); IntPtr portPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr))); string portName = "\\MiniSpyPort"; int status = FilterConnectCommunicationPort( portName, 0, IntPtr.Zero, 0, IntPtr.Zero, portPtr); 紧接着再调用FilterSendMessage就出问题了, 返回-2147024890, 估计是哪个参数传的有问题, 代码如下: [DllImport("fltlib", SetLastError = true)] public static extern int FilterSendMessage( IntPtr hPort, IntPtr lpInBuffer, uint dwInBufferSize, IntPtr lpOutBuffer, int dwOutBufferSize, out int lpBytesReturned ); int result = FilterSendMessage(portPtr, IntPtr.Zero, 0, IntPtr.Zero, 0, out size); 我试过从一个在C#中定义的, 类似Demo中传入参数结构的结构体, 通过Marshal得到的lpInBuffer, 但是可能是结构体里的枚举和数据类型或者数据值有问题, 结果还是-2147024890. 请教C#中的结构体应该如何建立, 或者哪里做的有问题导致的, 谢谢. |
|
沙发#
发布于:2011-02-17 17:17
你为啥不用c++封成一个dll,再用c#?
|
|
|