gpt4 book ai didi

windows - 使用 WinSCard 获取 PCSC 读卡器序列号

转载 作者:行者123 更新时间:2023-12-02 09:42:27 26 4
gpt4 key购买 nike

如果读卡器中没有卡,我在获取 PCSC 读卡器序列号时遇到问题。我正在使用winscard.dll 和c++。

以下代码仅适用于读卡器中存在卡的情况。否则,不会检索 SCardHandle。我还没有找到任何其他方式来获取 SCardHandle。

SCARDHANDLE hCardHandle;
SCARDCONTEXT hSC;
WCHAR pCardReaderName[256];
LONG lReturn;

lReturn = SCardEstablishContext(SCARD_SCOPE_USER, 0, 0, &hSC);

if (lReturn != SCARD_S_SUCCESS)
{
Console::WriteLine("SCardEstablishContext() failed\n");
return;
}

my_select_reader(hSC, pCardReaderName); // just shows reader names in console and requires you to pick one

// connect to smart card
DWORD dwAP;

lReturn = SCardConnect( hSC,
(LPCWSTR)pCardReaderName,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW,
&hCardHandle,
&dwAP );

if ( SCARD_S_SUCCESS != lReturn )
{
Console::WriteLine("Failed SCardConnect\n");
exit(1); // Or other appropriate action.
}

// get reader serial no
LPBYTE pbAtr = NULL;
DWORD cByte = SCARD_AUTOALLOCATE;

lReturn = SCardGetAttrib(hCardHandle,
SCARD_ATTR_VENDOR_IFD_SERIAL_NO,
(LPBYTE)&pbAtr,
&cByte);

if ( SCARD_S_SUCCESS != lReturn )
{
Console::WriteLine("Failed to retrieve Reader Serial\n");
exit(1); // Or other appropriate action.
}

printf("serial no: %s", pbAtr);

SCardFreeMemory(hCardHandle, pbAtr);

有没有办法在不连接卡的情况下获取读卡器序列号?

最佳答案

也许我有点晚了 - 但无论如何......

您可以使用 SCardConnect 的 SCARD_SHARE_DIRECT 标志直接连接到读卡器。至少对我们来说这工作得很好..(我们使用协议(protocol)标志“0x00”)

关于windows - 使用 WinSCard 获取 PCSC 读卡器序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940824/

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