急求前辈指点,c#调用c/c++DLL,错误:对 PInvoke 函数调用导致堆栈不对称

急!求前辈指点,c#调用c/c++DLL,异常:对 PInvoke 函数调用导致堆栈不对称

//============================用户注册===================================
/// <summary>
/// 用户登录(注册)设备  宽字节版
/// </summary>
/// <param name="sDevIP">设备IP地址</param>
/// <param name="wPort">登录端口</param>
/// <param name="wMediaPort">媒体传输端口</param>
/// <param name="sUsername">用户名</param>
/// <param name="sPassword">密码</param>
/// <param name="pDeviceInfo">设备信息</param>
/// <returns>-1 失败,其他返回登录ID,ID具有唯一性。其他的操作需要传入此ID</returns>
IRLABNETSDK_API LONG __stdcall NET_SDK_Login(const WCHAR* sDevIP, WORD wPort, WORD wMediaPort,
    const WCHAR* sUsername, const WCHAR* sPassword, LPNET_SDK_DeviceInfo lpDeviceInfo);

// NET_SDK_Login参数结构
typedef struct{
    char szSerialNo[SERIALNO_LEN];        // 序列号
    BYTE byAlarmInPortNum;           // 报警输入个数
    BYTE byAlarmOutPortNum;          // 报警输出个数
    BYTE byDiskNum;                  // 硬盘数
    BYTE byDevType;                  // 设备类型
    BYTE byChanNum;                  // 通道数量
    BYTE byStartChan;                // 通道起始号
    BYTE byAudioChanNum;             // 语音通道数
}NET_SDK_DeviceInfo, *LPNET_SDK_DeviceInfo;

这个是头文件里面的内容

function NET_SDK_Login(const sDevIP: PWideChar; wPort, wMediaPort: Word;
  const sUsername, sPassword: PWideChar; pDeviceInfo: PNET_SDK_DeviceInfo): Integer;

这个是接口提供方,给我的数据类型
下面是我写的调用的代码


public class DllToll
    {
      
        // NET_SDK_Login参数结构
        [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)] 
        public struct LPNET_SDK_DeviceInfo
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
            public byte[] szSerialNo;        // 序列号            
            public byte byAlarmInPortNum;           // 报警输入个数          
            public byte byAlarmOutPortNum;          // 报警输出个数          
            public byte byDiskNum;                  // 硬盘数           
            public byte byDevType;                  // 设备类型           
            public byte byChanNum;                  // 通道数量            
            public byte byStartChan;                // 通道起始号          
            public byte byAudioChanNum;             // 语音通道数
        };
        /// <summary>
        /// 初始化sdk
        /// </summary>
        [DllImport("IRLABNetSdk.dll",CallingConvention =CallingConvention.StdCall)] 
        public static extern  bool NET_SDK_Init();
        /// <summary>