Tarjetas inteligentes para el servicio de Windows

En este tema para los desarrolladores de tarjetas inteligentes y profesionales de TI se describe cómo el servicio Smart Cards for Windows (anteriormente denominado Smart Card Resource Manager) administra los lectores y las interacciones de las aplicaciones.

El servicio Tarjetas inteligentes para Windows proporciona la infraestructura básica para todos los demás componentes de tarjeta inteligente, ya que administra los lectores de tarjetas inteligentes y las interacciones de la aplicación en el equipo. Es totalmente compatible con las especificaciones establecidas por el grupo de trabajo de PC/SC. Para obtener información sobre estas especificaciones, consulte el sitio web Especificaciones del grupo de trabajo de PC/SC.

El servicio Tarjetas inteligentes para Windows se ejecuta en el contexto de un servicio local y se implementa como un servicio compartido del proceso de host de servicios (svchost). El servicio Tarjetas inteligentes para Windows, Scardsvr, tiene la siguiente descripción del servicio:

<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>

Nota

Para que winscard.dll se invoque como el instalador de clase adecuado, el archivo INF para un lector de tarjetas inteligentes debe especificar lo siguiente para Class y ClassGUID:

Class=SmartCardReader ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}

De forma predeterminada, el servicio está configurado para el modo manual. Los creadores de controladores de lector de tarjetas inteligentes deben configurar sus INF para que inicien el servicio automáticamente y winscard.dll archivos llamen a un punto de entrada predefinido para iniciar el servicio durante la instalación. El punto de entrada se define como parte de la clase SmartCardReader y no se llama directamente a él. Si un dispositivo se anuncia como parte de esta clase, el punto de entrada se invoca automáticamente para iniciar el servicio cuando se inserta el dispositivo. El uso de este método garantiza que el servicio esté habilitado cuando sea necesario, pero también está deshabilitado para los usuarios que no usan tarjetas inteligentes.

Cuando se inicia el servicio, realiza varias funciones:

  1. Se registra a sí mismo para las notificaciones de servicio
  2. Se registra a sí mismo para notificaciones de Plug and Play (PnP) relacionadas con la eliminación y adiciones de dispositivos
  3. Inicializa su caché de datos y un evento global que indica que el servicio se ha iniciado

Nota

En el caso de las implementaciones de tarjetas inteligentes, considere la posibilidad de enviar todas las comunicaciones en sistemas operativos Windows con lectores de tarjetas inteligentes a través del servicio Tarjetas inteligentes para Windows. Esto proporciona una interfaz para realizar un seguimiento, seleccionar y comunicarse con todos los controladores que se declaran miembros del grupo de dispositivos de lector de tarjetas inteligentes.

El servicio Tarjetas inteligentes para Windows clasifica cada ranura de lector de tarjetas inteligentes como un lector único y cada ranura también se administra por separado, independientemente de las características físicas del dispositivo. El servicio Tarjetas inteligentes para Windows controla las siguientes acciones de alto nivel:

  • Introducción al dispositivo
  • Inicialización del lector
  • Notificación a los clientes de nuevos lectores
  • Serialización del acceso a los lectores
  • Acceso a tarjetas inteligentes
  • Tunelización de comandos específicos del lector

Ver también

Funcionamiento del inicio de sesión mediante tarjetas inteligentes en Windows