C# 获取智能卡序列号ScardGetTrib返回错误50

C# 获取智能卡序列号ScardGetTrib返回错误50,c#,smartcard,winscard,C#,Smartcard,Winscard,我正在使用ACS-ACR88智能卡读卡器。我试图使用Winscard.dll中的scardgettrib函数读取智能卡序列号,但它总是返回错误50。第50条未定义为。错误50为0x32,可能是错误\u不受支持 我寻找它可能意味着什么,发现它可能意味着读卡器的司机!以下是答案的链接: 我已经更新了驱动程序,但运气不好。以下是我迄今为止所做的工作: 专用静态UInt32 SCardAttrValue(UInt32属性类,UInt32 val) { return(attrClass)*(2可能太晚了,

我正在使用ACS-ACR88智能卡读卡器。我试图使用
Winscard.dll
中的
scardgettrib
函数读取智能卡序列号,但它总是返回错误50。第50条未定义为。错误50为0x32,可能是
错误\u不受支持

我寻找它可能意味着什么,发现它可能意味着读卡器的司机!以下是答案的链接:

我已经更新了驱动程序,但运气不好。以下是我迄今为止所做的工作:

专用静态UInt32 SCardAttrValue(UInt32属性类,UInt32 val)
{

return(attrClass)*(2可能太晚了,但我认为您的attrUpid值是错误的。您可以在下面的链接中查找attrUpid值,而不是自己从十六进制转换为十进制


不幸的是,返回智能卡序列号的命令没有标准化。因此,不太可能用其他读卡器或读卡器驱动程序解决此问题。获取您使用的卡的手册,查找必要的命令并发送此APDU,而不是查询属性。或者,如果您在一个具有技术规范:查看项目规范;经常会有说明,序列号应存储在何处,直接从何处获取。@guidot-Re:返回智能卡序列号的命令不标准“。我认为
SCARD\u ATTR\u VENDOR\u IFD\u SERIAL\u NO
是返回序列号的标准函数。它返回什么?@jww如果操作系统识别卡类型,因此知道相应的APDU,它可能会起作用。否则,对于任意卡,我预计会出现错误代码。”。