Cartões inteligentes para o Serviço do Windows
Este tópico para os desenvolvedores de cartão profissionais de TI e inteligentes descreve como o serviço Smart Cards for Windows (anteriormente chamado de Smart Card Resource Manager) gerencia leitores e interações de aplicativo.
O serviço Smart Cards for Windows fornece a infraestrutura básica para todos os outros componentes de cartão inteligentes, pois gerencia leitores inteligentes cartão e interações de aplicativo no computador. Ele está totalmente em conformidade com as especificações definidas pelo grupo de trabalho pc/SC. Para obter informações sobre essas especificações, consulte o site especificações do grupo de trabalho pc/SC.
O serviço Smart Cards for Windows é executado no contexto de um serviço local e é implementado como um serviço compartilhado do processo de host de serviços (svchost). O serviço Smart Cards para Windows, Scardsvr, tem a seguinte descrição do serviço:
<serviceData
dependOnService="PlugPlay"
description="@%SystemRoot%\System32\SCardSvr.dll,-5"
displayName="@%SystemRoot%\System32\SCardSvr.dll,-1"
errorControl="normal"
group="SmartCardGroup"
imagePath="%SystemRoot%\system32\svchost.exe -k LocalServiceAndNoImpersonation"
name="SCardSvr"
objectName="NT AUTHORITY\LocalService"
requiredPrivileges="SeCreateGlobalPrivilege,SeChangeNotifyPrivilege"
sidType="unrestricted"
start="demand"
type="win32ShareProcess"
>
<failureActions resetPeriod="900">
<actions>
<action
delay="120000"
type="restartService"
/>
<action
delay="300000"
type="restartService"
/>
<action
delay="0"
type="none"
/>
</actions>
</failureActions>
<securityDescriptor name="ServiceXSecurity"/>
</serviceData>
<registryKeys buildFilter="">
<registryKey keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr\Parameters">
<registryValue
name="ServiceDll"
value="%SystemRoot%\System32\SCardSvr.dll"
valueType="REG_EXPAND_SZ"
/>
<registryValue
name="ServiceMain"
value="CalaisMain"
valueType="REG_SZ"
/>
<registryValue
name="ServiceDllUnloadOnStop"
value="1"
valueType="REG_DWORD"
/>
</registryKey>
</registryKeys>
Observação
Para que winscard.dll seja invocado como o instalador de classe adequado, o arquivo INF para um leitor de cartão inteligente deve especificar o seguinte para Class e ClassGUID:
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
Por padrão, o serviço é configurado para o modo manual. Os criadores de drivers de leitor de cartão inteligentes devem configurar seus INFs para que iniciem o serviço automaticamente e winscard.dll arquivos chamem um ponto de entrada predefinido para iniciar o serviço durante a instalação. O ponto de entrada é definido como parte da classe SmartCardReader e não é chamado diretamente. Se um dispositivo se anuncia como parte dessa classe, o ponto de entrada será invocado automaticamente para iniciar o serviço quando o dispositivo é inserido. O uso desse método garante que o serviço esteja habilitado quando necessário, mas também está desabilitado para usuários que não usam cartões inteligentes.
Quando o serviço é iniciado, ele executa várias funções:
- Ele se registra para notificações de serviço
- Ele se registra para notificações de Plug and Play (PnP) relacionadas à remoção e adições do dispositivo
- Ele inicializa seu cache de dados e um evento global que sinaliza que o serviço foi iniciado
Observação
Para implementações de cartão inteligentes, considere enviar todas as comunicações em sistemas operacionais Windows com leitores de cartão inteligentes por meio do serviço Smart Cards for Windows. Isso fornece uma interface para rastrear, selecionar e se comunicar com todos os drivers que se declaram membros do grupo de dispositivos de leitor inteligente cartão.
O serviço Smart Cards for Windows categoriza cada slot de leitor inteligente cartão como um leitor exclusivo e cada slot também é gerenciado separadamente, independentemente das características físicas do dispositivo. O serviço Smart Cards para Windows lida com as seguintes ações de alto nível:
- Introdução ao dispositivo
- Inicialização do leitor
- Notificando clientes de novos leitores
- Serializando o acesso aos leitores
- Acesso de cartão inteligente
- Túnel de comandos específicos do leitor