Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > SCardGetStatusChange


Автор: THuman 22.4.2007, 22:31
Так.Научился опознавать карты:
Код
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    {
         SCARD_READERSTATE rs;

         rs.szReader       = "AKS ifdh 0";
         rs.pvUserData     = NULL;
         rs.dwCurrentState = SCARD_STATE_EMPTY;
         rs.dwEventState   = SCARD_STATE_PRESENT;

         gotcha = (SCardGetStatusChange(hContext,20000,&rs,1) == SCARD_S_SUCCESS); 
    }

Работает отлично.Загвоздка в одном лишь.
Если я запущу приложение во второй раз,то он мне сразу выдает что карта в ридере,даже если она не там.
Т.е. правильно работает программа лишь при первом запуске.
Вытаскиваю карту,запускаю,приложение не ждет того чтоб я вставил карту,а сразу выдает сообщение о том,что она там.Однако если перезапустить комп и включить приложение то все Ок.И опять таки лишь при первом запуске.
При последующих,он будто не проверяет есть ли карта,а по умолчанию считает что она там.
Мало того,после первого  раза,я могу вообще не инициализировать rs.Он мне все равно выдает SCARD_S_SUCCESS. Это как?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)