C#dll钩子:传递null作为参数

时间:2009-08-13 11:25:31

标签: c# hook

我已经成功地在c#

中挂了一个dll函数
[DllImport ("ftusbsrv.dll", EntryPoint="FtEnumDevices")]
public unsafe static extern bool FtEnumDevices(ref FT_SERVER_USB_DEVICE lpUsbDevices, ref ulong pulBufferSize, ref FT_ERROR_STATE lpES);

我需要传递null作为第一个参数,如下所示

FtEnumDevices(null, pulBufferSize,lpES);

我收到以下编译时错误:

  

参数'1':无法转换   '''参考   FebulaTechWrapper.USBOverNetWrapper.FT_SERVER_USB_DEVICE'

我需要知道:如何将null作为第一个参数传递?

1 个答案:

答案 0 :(得分:3)

我不认为null是您的问题 - 似乎lpEs在您的代码中是int,但ftusbsrv.dll期待{{1}类型}}

您需要在C#代码中重新创建FebulaTechWrapper.USBOverNetWrapper.FT_ERROR_STATE,以便可以将实例传递给方法而不是FT_ERROR_STATE

编辑:您不能将null传递给需要int参数的方法。 ref参数需要引用,尝试这样的事情:

ref