Funzione SCardStatusA (winscard.h)
La funzione SCardStatus
Sintassi
LONG SCardStatusA(
[in] SCARDHANDLE hCard,
[out] LPSTR mszReaderNames,
[in, out, optional] LPDWORD pcchReaderLen,
[out, optional] LPDWORD pdwState,
[out, optional] LPDWORD pdwProtocol,
[out] LPBYTE pbAtr,
[in, out, optional] LPDWORD pcbAtrLen
);
Parametri
[in] hCard
Valore di riferimento restituito da SCardConnect.
[out] mszReaderNames
Elenco di nomi visualizzati (più stringhe) in base ai quali è noto il lettore attualmente connesso.
[in, out, optional] pcchReaderLen
In caso di input, fornisce la lunghezza del buffer szReaderName.
Nell'output, riceve la lunghezza effettiva (in caratteri) dell'elenco dei nomi del lettore, incluso il carattere NULL finale. Se questa lunghezza del buffer viene specificata come SCARD_AUTOALLOCATE, szReaderName viene convertita in un puntatore a un puntatore a byte e riceve l'indirizzo di un blocco di memoria contenente la struttura a più stringhe.
[out, optional] pdwState
Stato corrente della smart card nel lettore. In caso di esito positivo, riceve uno degli indicatori di stato seguenti.
[out, optional] pdwProtocol
Protocollo corrente, se presente. Il valore restituito è significativo solo se il valore restituito di pdwState è SCARD_SPECIFICMODE.
Valore | Significato |
---|---|
|
Il protocollo di trasferimento non elaborato è in uso. |
|
Il protocollo ISO 7816/3 T=0 è in uso. |
|
Il protocollo ISO 7816/3 T=1 è in uso. |
[out] pbAtr
Puntatore a un buffer a 32 byte che riceve la stringa ATR dalla scheda attualmente inserita, se disponibile.
[in, out, optional] pcbAtrLen
In caso di input, fornisce la lunghezza del buffer di pbAtr. Nell'output riceve il numero di byte nella stringa ATR (massimo 32 byte). Se questa lunghezza del buffer viene specificata come SCARD_AUTOALLOCATE, pbAtr viene convertita in un puntatore a un puntatore a byte e riceve l'indirizzo di un blocco di memoria contenente la struttura a più stringhe.
Valore restituito
Se la funzione fornisce correttamente lo stato corrente di una smart card in un lettore , 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 SCardStatus
Esempi
Nell'esempio seguente viene illustrato come determinare lo stato della smart card.
WCHAR szReader[200];
DWORD cch = 200;
BYTE bAttr[32];
DWORD cByte = 32;
DWORD dwState, dwProtocol;
LONG lReturn;
// Determine the status.
// hCardHandle was set by an earlier call to SCardConnect.
lReturn = SCardStatus(hCardHandle,
szReader,
&cch,
&dwState,
&dwProtocol,
(LPBYTE)&bAttr,
&cByte);
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed SCardStatus\n");
exit(1); // or other appropriate action
}
// Examine retrieved status elements.
// Look at the reader name and card state.
printf("%S\n", szReader );
switch ( dwState )
{
case SCARD_ABSENT:
printf("Card absent.\n");
break;
case SCARD_PRESENT:
printf("Card present.\n");
break;
case SCARD_SWALLOWED:
printf("Card swallowed.\n");
break;
case SCARD_POWERED:
printf("Card has power.\n");
break;
case SCARD_NEGOTIABLE:
printf("Card reset and waiting PTS negotiation.\n");
break;
case SCARD_SPECIFIC:
printf("Card has specific communication protocols set.\n");
break;
default:
printf("Unknown or unexpected card state.\n");
break;
}
Nota
L'intestazione winscard.h definisce SCardStatus 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 |
Winscard.lib |
dll | Winscard.dll |