Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) PC/SC Check the Status of each Smart Card Reader (and USB token)See more SCard ExamplesDemonstrates how to list the smart card readers and USB tokens connected to the computer, and check the status of each. Note: This functionality was introduced in Chilkat v9.5.0.87.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @scard int -- Use "Chilkat_9_5_0.SCard" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.SCard', @scard OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- First establish a context to the PC/SC Resource Manager DECLARE @success int EXEC sp_OAMethod @scard, 'EstablishContext', @success OUT, 'user' IF @success = 0 BEGIN EXEC sp_OAGetProperty @scard, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @scard RETURN END DECLARE @stReaders int -- Use "Chilkat_9_5_0.StringTable" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringTable', @stReaders OUT EXEC sp_OAMethod @scard, 'ListReaders', @success OUT, @stReaders IF @success = 0 BEGIN EXEC sp_OAGetProperty @scard, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @scard EXEC @hr = sp_OADestroy @stReaders RETURN END DECLARE @numReaders int EXEC sp_OAGetProperty @stReaders, 'Count', @numReaders OUT DECLARE @i int SELECT @i = 0 WHILE @i < @numReaders BEGIN DECLARE @reader nvarchar(4000) EXEC sp_OAMethod @stReaders, 'StringAt', @reader OUT, @i PRINT @i + ': ' + @reader -- Connect to this reader. EXEC sp_OAMethod @scard, 'Connect', @iTmp0 OUT, @reader, 'shared', 'no_preference' IF @iTmp0 = 1 BEGIN -- Check the status to get the reader state, active protocol, and card ATR (if a card is inserted). EXEC sp_OAMethod @scard, 'CheckStatus', @iTmp0 OUT IF @iTmp0 = 1 BEGIN EXEC sp_OAGetProperty @scard, 'ReaderStatus', @sTmp0 OUT PRINT 'ReaderStatus: ' + @sTmp0 EXEC sp_OAGetProperty @scard, 'CardAtr', @sTmp0 OUT PRINT 'CardAtr: ' + @sTmp0 EXEC sp_OAGetProperty @scard, 'ActiveProtocol', @sTmp0 OUT PRINT 'ActiveProtocol: ' + @sTmp0 END ELSE BEGIN EXEC sp_OAGetProperty @scard, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 PRINT 'CheckStatus failed.' END -- Disconnect from this reader. EXEC sp_OAMethod @scard, 'Disconnect', @success OUT, 'leave' END ELSE BEGIN EXEC sp_OAGetProperty @scard, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 PRINT 'Connect failed.' END PRINT '---------------------------------------' SELECT @i = @i + 1 END -- Sample output: -- 0: Alcor Micro USB Smart Card Reader 0 -- ReaderStatus: specific -- CardAtr: 3B7F96000080318065B0855956FB120FFE829000 -- ActiveProtocol: T0 -- --------------------------------------- -- 1: Generic Smart Card Reader Interface 0 -- ReaderStatus: specific -- CardAtr: 3BFC180000813180459067464A00641606F2727E00E0 -- ActiveProtocol: T1 -- --------------------------------------- -- 2: SCM Microsystems Inc. SCR33x USB Smart Card Reader 0 -- ReaderStatus: specific -- CardAtr: 3BDF96FF8131FE455A018048494443313158587300011B09 -- ActiveProtocol: T1 -- --------------------------------------- -- Applications should always release the context when finished. EXEC sp_OAMethod @scard, 'ReleaseContext', @success OUT IF @success = 0 BEGIN EXEC sp_OAGetProperty @scard, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 END EXEC @hr = sp_OADestroy @scard EXEC @hr = sp_OADestroy @stReaders END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.