Función SCardUIDlgSelectCardA (winscard.h)

La función SCardUIDlgSelectCard muestra el cuadro de diálogo Seleccionar tarjetainteligente.

Sintaxis

LONG SCardUIDlgSelectCardA(
  [in] LPOPENCARDNAMEA_EX unnamedParam1
);

Parámetros

[in] unnamedParam1

Puntero a la estructura OPENCARDNAME_EX del cuadro de diálogo Seleccionar tarjeta .

Valor devuelto

Si la función muestra correctamente el cuadro de diálogo Seleccionar tarjeta , el valor devuelto es SCARD_S_SUCCESS.

Si la función presenta un error, devuelve un código de error. Para obtener más información, consulte Valores devueltos de tarjeta inteligente.

Comentarios

La función SCardUIDlgSelectCard proporciona un método para conectarse a una tarjeta inteligente específica. Cuando se llama a esta función, realiza una búsqueda de tarjetas inteligentes adecuadas que coincidan con el miembro OPENCARD_SEARCH_CRITERIA especificado por el parámetro pDlgStruc . Según el miembro dwFlags de pDlgStruc, esta función realiza las siguientes acciones.

Value Acción
SC_DLG_FORCE_UI Se conecta a la tarjeta seleccionada por el usuario desde el cuadro de diálogo Seleccionar tarjeta inteligente.
SC_DLG_MINIMAL_UI Selecciona la tarjeta inteligente si solo una tarjeta inteligente cumple los criterios o devuelve información sobre la selección del usuario si más de una tarjeta inteligente cumple los criterios.
SC_DLG_NO_UI Selecciona la primera tarjeta disponible.
 

Esta función reemplaza GetOpenCardName. La función GetOpenCardName se mantiene por compatibilidad con versiones anteriores con la versión 1.0 de microsoft Smart Card Base Components.

Ejemplos

En el ejemplo siguiente se muestra cómo mostrar el cuadro de diálogo Seleccionar tarjeta inteligente.

SCARDCONTEXT     hSC;
OPENCARDNAME_EX  dlgStruct;
WCHAR            szReader[256];
WCHAR            szCard[256];
LONG             lReturn;

// Establish a context.
// It will be assigned to the structure's hSCardContext field.
lReturn = SCardEstablishContext(SCARD_SCOPE_USER,
                                NULL,
                                NULL,
                                &hSC );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardEstablishContext\n");
    exit(1);
}

// Initialize the structure.
memset(&dlgStruct, 0, sizeof(dlgStruct));
dlgStruct.dwStructSize = sizeof(dlgStruct);
dlgStruct.hSCardContext = hSC;
dlgStruct.dwFlags = SC_DLG_FORCE_UI;
dlgStruct.lpstrRdr = (LPSTR) szReader;
dlgStruct.nMaxRdr = 256;
dlgStruct.lpstrCard = (LPSTR) szCard;
dlgStruct.nMaxCard = 256;
dlgStruct.lpstrTitle = (LPSTR) "My Select Card Title";

// Display the select card dialog box.
lReturn = SCardUIDlgSelectCard(&dlgStruct);
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardUIDlgSelectCard - %x\n", lReturn );
else
    printf("Reader: %S\nCard: %S\n", szReader, szCard );

// Release the context (by SCardReleaseContext - not shown here).

Nota

El encabezado winscard.h define SCardUIDlgSelectCard como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winscard.h
Library Scarddlg.lib
Archivo DLL Scarddlg.dll

Consulte también

OPENCARDNAME_EX