根据 MSDN,有一个特殊的虚拟读卡器 \?PNP?\Notification 允许获取新智能卡读卡器到达的通知(通过SCardGetStatusChange函数)。我的代码看起来像(省略了错误处理和检查):
while (true)
{
SCardGetStatusChange(hContext, INFINITE, rgReaderStates, cReaders);
// rgReaderStates[0] - \\?PNP?\Notification
WorkWithNewReader();
}
此代码在非终端会话上完美运行。但是通过 Citrix 终端会话函数 SCardGetStatusChange 立即返回并且 rgReaderStates[0].dwEventState 为 7 (SCARD_STATE_UNKNOWN)。那么,我如何才能收到插入新智能卡读卡器的通知?