Função SCardUIDlgSelectCardA (winscard.h)

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

Sintaxe

LONG SCardUIDlgSelectCardA(
  [in] LPOPENCARDNAMEA_EX unnamedParam1
);

Parâmetros

[in] unnamedParam1

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

Retornar valor

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, será exibido um código de erro. Para obter mais informações, consulte Valores retornados do cartão inteligente.

Comentários

A função SCardUIDlgSelectCard fornece um método para se conectar a uma cartão inteligente específica. 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 membro dwFlags do pDlgStruc, essa função executa as seguintes ações.

Valor Ação
SC_DLG_FORCE_UI Conecta-se à cartão selecionada pelo usuário na caixa de diálogo Smart cartão Selecionar Cartão.
SC_DLG_MINIMAL_UI Seleciona a cartão inteligente se apenas uma cartão inteligente atender aos critérios ou retornar 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 do Cartão Inteligente da Microsoft.

Exemplos

O exemplo a seguir mostra como exibir o smart cartão 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).

Observação

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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winscard.h
Biblioteca Scarddlg.lib
DLL Scarddlg.dll

Confira também

OPENCARDNAME_EX