gpt4 book ai didi

.net - 带有 winscard.dll 的 .NET 应用程序中的 ERROR_INVALID_HANDLE

转载 作者:可可西里 更新时间:2023-11-01 10:07:59 27 4
gpt4 key购买 nike

我正在创建一个 .NET Windows 服务来与智能卡读卡器通信。主要组件是一个名为 winscard.dll 的 Windows DLL,我在 .NET 代码中将其与 DLLImport 属性一起使用。在 Windows XP 32 位上一切正常,但是当我在 Windows 7 x64 上运行它时,我在调用 SCardTransmit 时收到 0x6 ERROR_INVALID_HANDLE 结果。该应用程序(作为命令行应用程序的服务)可以连接到读卡器,但无法从卡中读取任何内容。

有什么想法吗?

最佳答案

SCardEstablishContext 有问题,它将返回 0 但也处理 0。使用 IntPtr 而不是 Integer:

Public Declare Function SCardEstablishContext Lib "Winscard.dll" (ByVal dwScope As Integer, _
ByVal pvReserved1 As Integer, _
ByVal pvReserved2 As Integer, _
ByRef phContext As IntPtr) As Integer

phContext 将在 Windows x64 中存储有效值(通过 RDP 测试的 Windows 8 x64 和 Windows 2008)。当它用作句柄时,也将其他“Integer”替换为“IntPtr”。

Public Declare Function SCardConnect Lib "Winscard.dll" Alias "SCardConnectA" (ByVal hContext As IntPtr, _
ByVal szReaderName As String, _
ByVal dwShareMode As Integer, _
ByVal dwPrefProtocol As Integer, _
ByRef hCard As IntPtr, _
ByRef ActiveProtocol As IntPtr) As Integer

关于.net - 带有 winscard.dll 的 .NET 应用程序中的 ERROR_INVALID_HANDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com