SCardEstablishContext未在发布模式中设置上下文指针
本文关键字:设置 上下文 指针 模式 布模式 SCardEstablishContext | 更新日期: 2023-09-27 18:20:21
我从C#调用winscard.dll方法,在调试模式下一切都很好。我遇到的问题是在发布模式
我呼吁建立上下文是
[DllImport("winscard.dll")]
public static extern int SCardEstablishContext(int dwScope, int pvReserved1, int pvReserved2, ref int phContext);
在我的测试应用程序中,当我调用它时,pntContext变量似乎在调试模式下得到了正确设置。但是,在发布模式下,它还没有设置好。但奇怪的是,返回代码仍然是0(成功)。
所以,我只是想知道是什么情况可能导致这种情况,或者我还可能做错了什么?
p.S。还有一件事我检查是编译平台设置为任何CPU。我试着改变平台,当我有x86作为平台和发布模式时,它就成功了。如此奇怪的行为,为什么它在调试模式下工作?
我没有发现任何异常,因为指针长度为8字节的64位Windows的封送处理完全错误。您应该使用IntPtr类型,在32位Windows上长度为4字节,在64位Windows上为8字节。
[DllImport("winscard.dll"]
public static extern Int32 SCardEstablishContext(
[In] Int32 dwScope,
[In] IntPtr pvReserved1,
[In] IntPtr pvReserved2,
[In, Out] ref IntPtr phContext);
在您的情况下,更好的选择是使用经过验证的托管winscard.dll包装器,如pcscsharp。