Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die funktion SCardStatus stellt den aktuellen Status einer Smartcard- in einem Reader-bereit. Sie können ihn jederzeit nach einem erfolgreichen Aufruf von SCardConnect- und vor einem erfolgreichen Aufruf von SCardDisconnect-aufrufen. Es wirkt sich nicht auf den Zustand des Lese- oder Lesetreibersaus.
Syntax
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
);
Parameter
[in] hCard
Von SCardConnectzurückgegebener Verweiswert.
[out] mszReaderNames
Liste der Anzeigenamen (mehrere Zeichenfolgen), mit denen der aktuell verbundene Reader bekannt ist.
[in, out, optional] pcchReaderLen
Gibt bei eingaben die Länge des szReaderName Puffers an.
Empfängt bei der Ausgabe die tatsächliche Länge (in Zeichen) der Lesernamenliste, einschließlich des nachfolgenden NULL- Zeichens. Wenn diese Pufferlänge als SCARD_AUTOALLOCATE angegeben wird, wird szReaderName in einen Zeiger in einen Bytezeiger konvertiert und empfängt die Adresse eines Speicherblocks, der die Struktur mit mehreren Zeichenfolgen enthält.
[out, optional] pdwState
Aktueller Status der Smartcard im Lesegerät. Nach Erfolg erhält sie einen der folgenden Statusindikatoren.
| Wert | Bedeutung |
|---|---|
|
Es gibt keine Karte im Lesegerät. |
|
Es gibt eine Karte im Lesegerät, aber sie wurde nicht zur Verwendung in die Position verschoben. |
|
Es gibt eine Karte in der Leseposition zur Verwendung. Die Karte wird nicht unterstützt. |
|
Die Stromversorgung wird auf der Karte bereitgestellt, der Lesertreiber weiß jedoch nicht über den Modus der Karte. |
|
Die Karte wurde zurückgesetzt und wartet auf die PTS-Aushandlung. |
|
Die Karte wurde zurückgesetzt und spezifische Kommunikationsprotokolle eingerichtet. |
[out, optional] pdwProtocol
Aktuelles Protokoll, falls vorhanden. Der zurückgegebene Wert ist nur dann sinnvoll, wenn der zurückgegebene Wert pdwState SCARD_SPECIFICMODE ist.
| Wert | Bedeutung |
|---|---|
|
Das Raw Transfer-Protokoll wird verwendet. |
|
Das ISO 7816/3 T=0 Protokoll wird verwendet. |
|
Das ISO 7816/3 T=1 Protokoll wird verwendet. |
[out] pbAtr
Zeigen Sie auf einen 32-Byte-Puffer, der die ATR-Zeichenfolge von der aktuell eingefügten Karte empfängt, sofern verfügbar.
[in, out, optional] pcbAtrLen
Gibt bei eingaben die Länge des pbAtr- Puffers an. Empfängt bei der Ausgabe die Anzahl der Bytes in der ATR-Zeichenfolge (maximal 32 Bytes). Wenn diese Pufferlänge als SCARD_AUTOALLOCATE angegeben wird, wird pbAtr- in einen Zeiger auf einen Bytezeiger konvertiert und empfängt die Adresse eines Speicherblocks, der die Mehrzeichenfolgenstruktur enthält.
Rückgabewert
Wenn die Funktion erfolgreich den aktuellen Status einer Smartcard- in einem Reader-bereitstellt, wird der Rückgabewert SCARD_S_SUCCESS.
Wenn die Funktion fehlschlägt, wird ein Fehlercode zurückgegeben. Weitere Informationen finden Sie unter Smartcard-Rückgabewerte.
Bemerkungen
Die -Funktion SCardStatus ist eine Smartcard- und Lesefunktion Zugriffsfunktion. Informationen zu anderen Zugriffsfunktionen finden Sie unter Smartcard- und Lesezugriffsfunktionen.
Beispiele
Das folgende Beispiel zeigt, wie der Zustand der Smartcard bestimmt wird.
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;
}
Anmerkung
Der winscard.h-Header definiert SCardStatus als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
| mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
| Zielplattform- | Fenster |
| Header- | winscard.h |
| Library | Winscard.lib |
| DLL- | Winscard.dll |