Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, çok iş parçacıklı bir uygulama akıllı karta eriştiğinde oluşan "0x6 ERROR_INVALID_HANDLE" hatasını giderme ve düzeltme işlemleri açıklanır.
Şunlar için geçerlidir: Windows 10
Belirtiler
Aşağıdaki senaryoyu değerlendirin:
- Akıllı kart özellikli çok iş parçacıklı bir uygulamanız var.
- Uygulama, Microsoft Base Akıllı Kart Şifreleme Hizmeti Sağlayıcısı'nı (basecsp.dll/scksp.dll) temel alan bir akıllı karta erişiyor.
- Uygulama bir süre çalışır.
Bu senaryoda, bir 0x6 ERROR_INVALID_HANDLE hatası alırsınız.
Bu sorun, bağlamı serbest bırakan başka bir çağrıdan önce ve CryptGetUserKey()
gibi CryptGetKeyParam()
işlem yöneticisini kullanan herhangi bir Şifreleme API'sine çağrı yapıldığında oluşur.
ERROR_INVALID_HANDLE hatası hemen görünmüyor. Yüke bağlı olarak, iş parçacıklarının eşitleme sorunuyla karşılaşması zaman alır.
Neden
BaseCSP yüksek yük senaryoları için tasarlanmadığından bu sorun oluşur. Bu nedenle, BaseCSP akıllı kartları iş parçacığı açısından güvenli değildir veya yüksek yük senaryolarında desteklenmez.
Daha Fazla Bilgi
BaseCSP yalnızca tek kullanıcı, akıllı kartla oturum açma, e-posta şifreleme veya şifre çözme ve kod imzalama gibi tipik kullanım senaryolarında iş parçacığı güvenliği elde edebilir.
Tipik kullanım senaryolarında BaseCSP bağlam başına iş parçacığı açısından güvenli olmalıdır. Yüksek yük senaryolarında BaseCSP akıllı kartları işlem yöneticisi eşitleme sorunlarıyla karşılaşır.
Geçici çözüm
Bu sorunu geçici olarak çözmek için aşağıdaki yöntemlerden birini kullanın.
1. Yöntem
Bir satıcı CSP veya KSP sağlayıcısı geliştirin ve içinde bir işlem yöneticisi uygulayın. Bu şekilde, akıllı kart alt sistemi BaseCSP'de uygulanan bir işlem yöneticisi kullanmaz.
2. Yöntem
Önemli
Bu bölümdeki adımları dikkatlice izleyin. Kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Değiştirmeden önce, bir sorun olması halinde geri yükleyebilmek için kayıt defterini yedekleyin.
Daha kısa bir işlem zaman aşımı sorunun sıklığını azaltabilir. Bunu başarmak için regedit'i başlatın ve alt anahtar altındaki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\<provider_name>
TransactionTimeoutMilliseconds değerini değiştirin.
Not
Bu alt anahtarda provider_name <> sağlayıcıya bağlı olarak BaseCSP veya ksp'dir.
Ayrıntılı kayıt defteri açıklaması için bkz . Temel CSP ve Akıllı Kart KSP kayıt defteri anahtarları.
Örneğin, TransactionTimeoutMilliseconds değerinin varsayılan değeri olan 1500 ms'den 100 ms'ye düşürülmesi sorunun sıklığını azaltabilir.
Önemli
Bu değişiklik yalnızca sınırlı test sonuçlarını temel alan bir öneridir. TransactionTimeoutMilliseconds değerini azaltmanın bu sorunu denetlemeye yardımcı olacağının garantisi yoktur. Ayrıca, TransactionTimeoutMilliseconds varsayılan değerinin değiştirilmesi BaseCSP kartlarını etkileyen başka sorunlara neden olabilir. Bu değişikliği dağıtmadan önce kartınızı ilgili uygulama için kapsamlı bir şekilde test edip yüklediğinizden emin olun.
Başvurular
Temel CSP ve Akıllı Kart KSP kayıt defteri anahtarları