SCardStatusA-Funktion (winscard.h)
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 |