我正在创建一个.NETWindows服务来与智能卡读卡器通信。主要组件是一个名为winscard.dll的WindowsDLL,我在.NET代码中将其与DLLImport属性一起使用。在WindowsXP32位上一切正常,但是当我在Windows7x64上运行它时,我在调用SCardTransmit时收到0x6ERROR_INVALID_HANDLE结果。该应用程序(作为命令行应用程序的服务)可以连接到读卡器,但无法从卡中读取任何内容。有什么想法吗? 最佳答案 SCardEstablishContext有问题,它将返回0但也处理0。
在Windows>=XP上使用winscard只有一个PCSC阅读器的句柄和上下文,是否有某种方法可以获取其设备实例ID或可以在中使用的其他内容SetupDi*API,用于找出为所述读卡器加载了哪个驱动程序。SCardGetReaderDeviceInstanceId仅在Windows8上可用,所以不幸的是不适合我。作为B计划,可以使用智能卡读卡器类GUID在SetupDi中枚举所有智能卡读卡器。但是我需要一个unique属性来关联SCard*API和SetupDi*API之间的阅读器。例如,序列号听起来不错,但并非所有制造商都使用它。有什么想法吗? 最佳答
我在我的Dotnet智能卡应用程序中使用winscard.dll。我的阅读器Omnikey5321具有接触式和非接触式界面,它们被检测为两个不同的阅读器。非接触式设备的名称中包含字母“CL”。我可以毫无问题地手动选择读者并与他们一起做我需要做的一切。但是,是否有一种可靠的方法,使用SCardGetAttrib或其他调用来确定这些读卡器中的哪些支持ISO14443-即EMV非接触式?我最终想要一个快速的“选择非接触式设置”按钮,该按钮足够通用以适用于所有PC/SC阅读器,因此如果没有这样的界面,我也可以禁用非接触式选项。 最佳答案 不
一些背景信息:为了读取/写入SLE4442存储卡,我的应用目前正在使用OmnikeyCardman3021USB读卡器,一个能够包装CT-API调用(定向到omnikey的dll)的SumbsemblySmartcardAPI(外部dll),因此我可以在我的c#应用程序中读/写存储卡。这里唯一的问题是Omnikey仅提供其CT-API的32位dll。我问他们是否要生产64位版本,但他们不介意。现状:为了使我的应用程序支持64位,我必须使用WindowsWinSCardAPI重写它。这里的问题是网络上没有具体的例子如何去做。掌握有效的APDU命令几乎是不可能的,但我已经设法获得了两个略有
我们购买了ACR122USBSDK用于NFC测试。我们想为ACR122U-A2NFC阅读器构建测试桌面应用程序。我们正在MicrosoftWindows7平台上用Java开发它。我们预计,为了从Winscard.dll使用PC/SC,我们需要进行JNI调用。为此,应准备用于JNI调用的C/C++包装器库。我认为这应该是SDK的一部分,因为示例应用程序引用了JNI包装器Jacspcsc.dll,但该库不存在。有没有人有类似的经历?是否有可用于Winscard.dll的JNI包装器?谢谢斯腾 最佳答案 如果您为阅读器安装了PC/SC驱动
智能卡服务在Windows8上的行为有所不同,MSDN尚未更新其文档。任何人都可以提供有关如何正确调用SCardGetStatusChange以监视Windows8上的智能卡操作的代码片段吗?提前致谢! 最佳答案 这是我为个人博客项目编写的C++模板函数。它使用我正在开发的库,该库位于github上,但您也可以将逻辑重新编写到您自己的上下文中。templateunique_winerrormonitor_smartcard_readers(SetContext&&setContext,ClearContext&&clearConte