Pet*_*iss 4 .net windows 64-bit winscard
我正在创建一个 .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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4031 次 |
| 最近记录: |