C# 错误指针参数未指向可访问内存
我使用CEN XFS标准构建应用程序,然后我在CEN XFS文档中得到了这个错误C# 错误指针参数未指向可访问内存,c#,cen-xfs,C#,Cen Xfs,我使用CEN XFS标准构建应用程序,然后我在CEN XFS文档中得到了这个错误WFS\u ERR\u INVALID\u POINTER,意思是指针参数不指向可访问内存。但我不知道这个错误是什么 我的wfsecute如下所示: [StructLayout(LayoutKind.Explicit), Serializable] public struct WFSResult { [FieldOffset(0), MarshalAs(UnmanagedTyp
WFS\u ERR\u INVALID\u POINTER
,意思是指针参数不指向可访问内存。但我不知道这个错误是什么
我的wfsecute如下所示:
[StructLayout(LayoutKind.Explicit), Serializable]
public struct WFSResult
{
[FieldOffset(0), MarshalAs(UnmanagedType.U4)]
public uint RequestID;
[FieldOffset(4), MarshalAs(UnmanagedType.U2)]
public ushort hService;
[FieldOffset(6), MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
public Timestamp tsTimestamp;
[FieldOffset(22), MarshalAs(UnmanagedType.U4)]
public int hResult;
[FieldOffset(26), MarshalAs(UnmanagedType.U4)]
public UInt32 dwCommandCode;
[FieldOffset(26), MarshalAs(UnmanagedType.U4)]
public UInt32 dwEventID;
[FieldOffset(30), MarshalAs(UnmanagedType.U4)]
public Int32 lpBuffer;
}
wfsecute(lphService,1401,cardDispense,0,lppResult)代码>
我的父亲是这样认为的:
[StructLayout(LayoutKind.Explicit), Serializable]
public struct WFSResult
{
[FieldOffset(0), MarshalAs(UnmanagedType.U4)]
public uint RequestID;
[FieldOffset(4), MarshalAs(UnmanagedType.U2)]
public ushort hService;
[FieldOffset(6), MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
public Timestamp tsTimestamp;
[FieldOffset(22), MarshalAs(UnmanagedType.U4)]
public int hResult;
[FieldOffset(26), MarshalAs(UnmanagedType.U4)]
public UInt32 dwCommandCode;
[FieldOffset(26), MarshalAs(UnmanagedType.U4)]
public UInt32 dwEventID;
[FieldOffset(30), MarshalAs(UnmanagedType.U4)]
public Int32 lpBuffer;
}
请发表一篇文章,尽管我们不能真正编译或测试它,但是查看所有涉及的类型是很重要的。好的,我们必须猜测wfsecute方法的签名是什么,lphService、cardDispense和lppResult的类型,以及您如何获得这些参数的值。对于初学者来说,在发布的代码中没有可见的指针,所以这都是猜测工作。它可能是lpbuffer
?“lp”=长指针?如果是这样的话,如何从C#计算该值?或者这将由您调用的代码填充?lphService和cardDispense只是字符串,所以我认为这与我的错误无关…lp是来自CEN XFS文档的名称,所以这没有问题,我认为我的问题在于该结构。。