Proveedor de servicios contenedor de proveedor
El propósito del contenedor del proveedor es encapsular y usar las interfaces COM de bajo nivel (proporcionadas por los fabricantes de tarjetas inteligentes) para una tarjeta inteligente determinada. Microsoft no proporciona estas interfaces.
Tal y como se describe en la parte 6 de la Especificación de interoperabilidad para NIC y sistemas informáticos personales (consulte las especificaciones en https://pcscworkgroup.com), la funcionalidad expuesta por este contenedor es más fácil de usar que la funcionalidad de cuatro proveedores de servicios independientes. La funcionalidad del contenedor se puede dividir en cuatro áreas principales:
- Servicios de autenticación de tarjetas inteligentes, como obtener desafío y autenticación de tarjetas.
- Acceso a archivos de tarjeta inteligente o servicios del sistema de archivos, como abrir, cerrar, leer y escribir.
- Administración de tarjetas inteligentes, como adjuntar y desasociar.
- Servicios de verificación de tarjetas inteligentes, como comprobar y cambiar el código.
Nota
Es posible que esta especificación no esté disponible en algunos idiomas y países o regiones.
La funcionalidad es específica del tipo de tarjeta que se usa (que funciona con la tarjeta, protocolos, etc.) y será diferente para cada tarjeta.
El contenedor de ejemplo de Microsoft SCardCOM usa la biblioteca COM de ATL para implementar un contenedor sencillo y establecer una plantilla para otros contenedores. Implementa las siguientes interfaces.
Interfaz u objeto | Descripción |
---|---|
ISCardAuth |
Servicios de autenticación. |
ISCardFileAccess |
Servicios del sistema de archivos. |
ISCardManage |
Servicios de administración. |
ISCardVerify |
Servicios de verificación. |
Nota
El ejemplo de SCardCOM solo se proporciona como ejemplo de implementación de las interfaces contenedoras. Para evitar la colisión de nombres dll con otros proveedores, no debe usar SCardCOM.dll como nombre de los archivos DLL que cree.
A continuación se muestra un uso típico del contenedor de proveedor. En este ejemplo se usa la interfaz ISCardManage para crear instancias de las interfaces que se encapsularán en el proveedor de servicios y la interfaz ISCardVerify para comprobar su operación.
Para compilar un proveedor de servicios contenedor
- Cree una instancia de la interfaz ISCardManage . Use esta interfaz para crear una instancia de las interfaces necesarias (por ejemplo, ISCardFileAccess o ISCardVerify). Al crear estas interfaces, también se crearían las interfaces COM de bajo nivel correspondientes.
- Adjunte o conéctese a una tarjeta mediante el método ISCardManage adecuado.
- Realice las operaciones necesarias a través del método ISCardVerify adecuado (que puede llamar a varias interfaces y métodos COM de bajo nivel para completarse).
- Repita el proceso para otras operaciones.
- Liberar cuando haya finalizado.
El nombre de la interfaz COM y el identificador de interfaz (GUID) no deben cambiar de los usados en el contenedor de ejemplo o código. Sin embargo, el GUID de clase (es decir, donde reside una implementación real de una interfaz) debe cambiarse de los usados. Esto es especialmente importante al implementar un contenedor de proveedor. Un ejemplo sería usar varios contenedores de proveedor en un equipo determinado. Estos contenedores deben implementar las mismas interfaces COM, pero siempre usarán estrategias de implementación diferentes. Por lo tanto, se requieren diferentes clases (e identificadores de clase).