Compartilhar via


Função SCardUIDlgSelectCardA (winscard.h)

A função SCardUIDlgSelectCard exibe a caixa de diálogo cartão inteligente Selecionar Cartão.

Sintaxe

LONG SCardUIDlgSelectCardA(
  [in] LPOPENCARDNAMEA_EX unnamedParam1
);

Parâmetros

[in] unnamedParam1

Ponteiro para a estrutura de OPENCARDNAME_EX da caixa de diálogo Selecionar Cartão.

Valor de retorno

Se a função exibir com êxito a caixa de diálogo Selecionar Cartão, o valor retornado será SCARD_S_SUCCESS.

Se a função falhar, ela retornará um código de erro. Para obter mais informações, consulte valores de retorno de cartão inteligente.

Observações

A função SCardUIDlgSelectCard fornece um método para se conectar a um cartão inteligente específico. Quando chamada, essa função executa uma pesquisa por cartões inteligentes apropriados que correspondem ao membro OPENCARD_SEARCH_CRITERIA especificado pelo parâmetro pDlgStruc. Dependendo do dwFlags membro dopDlgStruc, essa função executa as seguintes ações.

Valor Ação
SC_DLG_FORCE_UI Conecta-se ao cartão selecionado pelo usuário na caixa de diálogo Selecionar Cartão.
SC_DLG_MINIMAL_UI Seleciona o cartão inteligente se apenas um cartão inteligente atender aos critérios ou retorna informações sobre a seleção do usuário se mais de um cartão inteligente atender aos critérios.
SC_DLG_NO_UI Seleciona o primeiro cartão disponível.
 

Essa função substitui GetOpenCardName. A função GetOpenCardName é mantida para compatibilidade com versões anteriores com a versão 1.0 dos Componentes Base de Cartão Inteligente da Microsoft.

Exemplos

O exemplo a seguir mostra como exibir o cartão inteligente caixa de diálogo Selecionar Cartão.

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

O cabeçalho winscard.h define SCardUIDlgSelectCard como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winscard.h
biblioteca Scarddlg.lib
de DLL Scarddlg.dll

Consulte também

OPENCARDNAME_EX