新人求问,C#调用C++dll,C++函数中有NULL参数,小弟我转换到C#该如何改。

新人求问,C#调用C++dll,C++函数中有NULL参数,我转换到C#该怎么改。。
最近调用C++dll,各种问题,烦死了都要。。求各位帮助。。
C++
DEVICE_ID APICALL NSSTCreateDevice(
       NsstDevice* device,
       AppProxy* proxy
);
 其中NsstDevice和 AppProxy是结构,调用时这样的:DEVICE_ID id = NSSTCreateDevice(&device,NULL);


今天花了好大功夫转换了C#结构,这是其中一个:
public struct NsstDevice
    {
        //设备IP
        //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string host;

        //协议端口,默认80
        public  UInt16 protocol_port;
        //rtsp数据端口,默认554
        public UInt16 rtsp_port;
        //用户名
        //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string username;

        //密码
        //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string password;
        //产品系列               

        public NSST_DEVICE_TYPE dev_type;
    }
然后赋值了:
 NsstDevice Ndevice;
            Ndevice.host="192.168.1.109";
            Ndevice.username = "admin";
            Ndevice.password = "admin";
            Ndevice.protocol_port = 80;
            Ndevice.rtsp_port = 554;
            Ndevice.dev_type = NSST_DEVICE_TYPE.NSSTDEV_H;(大家看看到这有没有问题。。)
但是第二个参数搞不定了。。。
我在C#中是这样写的:
public extern static UInt16 NSSTCreateDevice([In(), Out()] ref NsstDevice device ,ref AppProxy proxy);(不知道inout那里有没有用。。)
调用的时候第二个NULL我不知道该怎么写,对于引用不太了解唉。。
device_id = InitLogin.NSSTCreateDevice(ref Ndevice,×××××××××××××××× );求大家帮我看看第二个NULL怎么填充。。




------解决思路----------------------
public extern static UInt16 NSSTCreateDevice([In(), Out()] ref NsstDevice device ,intptr proxy);
------解决思路----------------------
IntPtr类型,传IntPtr.Zero