Condividi tramite


Funzione SCardUIDlgSelectCardW (winscard.h)

La funzione SCardUIDlgSelectCard visualizza la finestra di dialogo Seleziona scheda.

Sintassi

LONG SCardUIDlgSelectCardW(
  [in] LPOPENCARDNAMEW_EX unnamedParam1
);

Parametri

[in] unnamedParam1

Puntatore alla struttura OPENCARDNAME_EX per la finestra di dialogo Seleziona scheda.

Valore restituito

Se la funzione visualizza correttamente il finestra di dialogo Seleziona scheda, il valore restituito è SCARD_S_SUCCESS.

Se la funzione ha esito negativo, restituisce un codice di errore. Per altre informazioni, vedere valori restituiti della smart card.

Osservazioni

La funzione SCardUIDlgSelectCard fornisce un metodo per la connessione a una smart card specifica. Quando viene chiamato, questa funzione esegue una ricerca delle smart card appropriate corrispondenti al membro OPENCARD_SEARCH_CRITERIA specificato dal parametro pDlgStruc. A seconda del dwFlags membro di pDlgStruc, questa funzione esegue le azioni seguenti.

Valore Azione
SC_DLG_FORCE_UI Si connette alla scheda selezionata dall'utente dalla finestra di dialogo Seleziona scheda.
SC_DLG_MINIMAL_UI Seleziona la smart card se una sola smart card soddisfa i criteri o restituisce informazioni sulla selezione dell'utente se più smart card soddisfano i criteri.
SC_DLG_NO_UI Seleziona la prima scheda disponibile.
 

Questa funzione sostituisce GetOpenCardName. La funzione GetOpenCardName viene mantenuta per garantire la compatibilità con le versioni precedenti con la versione 1.0 dei componenti di base della smart card Microsoft.

Esempi

Nell'esempio seguente viene illustrato come visualizzare la smart card finestra di dialogo Seleziona scheda.

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

L'intestazione winscard.h definisce SCardUIDlgSelectCard come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione winscard.h
libreria Scarddlg.lib
dll Scarddlg.dll

Vedere anche

OPENCARDNAME_EX