Compartir a través de


Función SCardUIDlgSelectCardA (winscard.h)

La función SCardUIDlgSelectCard muestra la tarjeta inteligente cuadro de diálogo Seleccionar tarjeta.

Sintaxis

LONG SCardUIDlgSelectCardA(
  [in] LPOPENCARDNAMEA_EX unnamedParam1
);

Parámetros

[in] unnamedParam1

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

Valor devuelto

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

Si se produce un error en la función, devuelve un código de error. Para obtener más información, consulte valores devueltos de tarjeta inteligente.

Observaciones

La función SCardUIDlgSelectCard proporciona un método para conectarse a una tarjeta inteligente específica. Cuando se llama, 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. En función del miembro dwFlags de pDlgStruc, esta función realiza las siguientes acciones.

Valor Acción
SC_DLG_FORCE_UI Se conecta a la tarjeta seleccionada por el usuario de la tarjeta inteligente cuadro de diálogo Seleccionar tarjeta.
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 de se mantiene por compatibilidad con versiones anteriores con la versión 1.0 de los componentes base de tarjeta inteligente de Microsoft.

Ejemplos

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

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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winscard.h
biblioteca de Scarddlg.lib
DLL de Scarddlg.dll

Consulte también

OPENCARDNAME_EX