Mam kartę inteligentną CAC i czytnik kart SCM Microsystems SCR3310 USB . Korzystam z systemu Windows 7 Ultimate z dodatkiem SP1.
Ta konfiguracja działała dobrze. Kiedy wstawiałem mój CAC, moje certyfikaty natychmiast rozprzestrzeniały się do magazynu certyfikatów (o czym świadczy Menedżer certyfikatów certmgr.msc
) i mogłem zalogować się na stronach internetowych, które wymagały CAC do uzyskania dostępu.
Ostatnio przestałem mieć dostęp do stron internetowych. W Menedżerze certyfikatów widzę, że obecny jest tylko jeden, a czasem dwa z moich certyfikatów. Jeśli je usunę i włożę ponownie kartę, może pojawić się inny certyfikat.
Właśnie wróciłem i wymieniłem czytnik na ten sam model, więc wiem, że to nie winowajca.
W końcu pomyślałem, aby spojrzeć na dziennik systemu i zauważyłem następujące błędy po włożeniu karty inteligentnej:
Błędy w porządku chronologicznym:
Smart Card Service Event ID: 610
Smart Card Reader 'SCM Microsystems SCR33xx v2.0 USB SC Reader 0' rejected
IOCTL TRANSMIT: Incorrect function. If this error persists, your smart card
or reader may not be functioning correctly.
Command Header: 00 c0 00 00
WudfUsbccidDrv Event ID: 11
A Request has returned failure.
MsgType: 0x80
ICCStatus: 0x0
CmdStatus: 0x1
Error: 0xf6 // ICC_PROTOCOL_NOT_SUPPORTED
SW1: 0x0
SW2: 0x0
WudfUsbccidDrv Event ID: 11
An operation has failed (0x0, 0x0, 0x0, 0x0).
ScT0Transmit: Failed to send request at TPDU level.
HResult: The specified request is not a valid operation for the target device.
// Note: this one comes from WUDFUsbccidDriver.dll CMyDevice::UsbScT0Transmit+7D0h
WudfUsbccidDrv Event ID: 10
Request[0](CLS=0x0,INS=0xc0,P1=0x0,P2=0x0,Lc=0,Le=256,.NETServiceMethod=0x0)
Wygląda na to, że sprzęt wskazał awarię podczas IOCTL TRANSMIT
, która przedostała się przez środowisko sterownika trybu użytkownika.
Edycja: po sprawdzeniu specyfikacji CCID wydaje się, że karta odpowiada
bmCommandStatus = 1 - Failed (error code provided by the error register)
. I Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h)
… Zakładam, że sterownik tłumaczy ten błąd na „HResult: Określone żądanie nie jest prawidłową operacją dla urządzenia docelowego”. wiadomość.
Ponadto wysyłane polecenie miało INS = 0xC0, czyli GET RESPONSE .
Jak można powiedzieć, że protokół nie jest obsługiwany? Co robi kierowca inaczej niż wtedy, gdy działał? Zauważ, że właśnie wypróbowałem to z nowym CAC i widzę podobne zachowanie. Problem z czytnikiem kart lub sterownikiem?
Biorąc pod uwagę, że właśnie wymieniłem czytnik (i ponownie zainstalowałem sterowniki, uruchomiłem ponownie itp.) Czy coś jest nie tak z moją kartą inteligentną? Nie jestem zakładając, ponieważ czyni pracę z innym czytnikiem na innym systemie. Nie próbowałem innego czytnika w tym samym systemie.
W rzeczywistości ten sam czytnik podłączony do maszyny wirtualnej z systemem Windows 7 na tej samej maszynie fizycznej działa dobrze! Coś jest wyraźnie zepsute i doprowadza mnie do szału, próbując dowiedzieć się, co.
Więc jaki jest problem?
Odpowiedzi:
Na wszelki wypadek, gdyby ktoś utknął z tym problemem - starałem się to naprawić przez cały dzień.
Oto rozwiązanie:
W 64-bitowym systemie Windows - przejdź do klucza rejestru pod adresem
Powinni już być czytelnicy. A jeśli nie, to dlatego możesz mieć zainstalowane wszystkie sterowniki, ale nadal nie działają.
Idź do
Device Manager
znajdź czytelnika w pytaniu następnie zwrócić uwagę na ten ciąg w karcie Szczegóły:Bus reported device description
.Utwórz podklucz dla powyższego klucza. Nazwa powinna być dokładnie taka sama
Bus reported device description
. Następnie dodaj licznik na końcu. Klucz powinien być taki jak ten:Teraz utwórz kilka wartości ciągu: pierwszy z nazwą urządzenia i drugi dla grup. Oto mój przykład:
Otóż to. Aby działało, odłącz czytnik i podłącz go ponownie. W przypadku urządzeń wewnętrznych może być konieczne ponowne uruchomienie komputera. Oto
.reg
przykład pliku (zmień nazwę i numer urządzenia na własne wartości):źródło