SCardGetAttrib-Funktion (winscard.h)
Die SCardGetAttrib-Funktion ruft die aktuellen Readerattribute für das angegebene Handle ab. Sie wirkt sich nicht auf den Zustand des Readers, treibers oder Karte aus.
Syntax
LONG SCardGetAttrib(
[in] SCARDHANDLE hCard,
[in] DWORD dwAttrId,
[out] LPBYTE pbAttr,
[in, out] LPDWORD pcbAttrLen
);
Parameter
[in] hCard
Verweiswert, der von SCardConnect zurückgegeben wird.
[in] dwAttrId
Bezeichner für das abzurufende Attribut . In der folgenden Tabelle sind die möglichen Werte für dwAttrId aufgeführt. Diese Werte sind schreibgeschützt. Beachten Sie, dass Anbieter möglicherweise nicht alle Attribute unterstützen.
Wert | Bedeutung |
---|---|
|
Antwort auf die Zurücksetzungszeichenfolge (ATR). |
|
DWORD-codiert als 0xDDDDCCCC, wobei DDDD = Datenkanaltyp und CCCC = Kanalnummer:
|
|
DWORD , das angibt, welche mechanischen Eigenschaften unterstützt werden. Wenn null, werden keine besonderen Merkmale unterstützt. Beachten Sie, dass mehrere Bits festgelegt werden können:
|
|
Aktuelle Blockwartezeit. |
|
Aktuelle Taktrate in kHz. |
|
Aktuelle Zeichenwartezeit. |
|
Bitratenkonvertierungsfaktor. |
|
Aktuelle Fehlerblocksteuerungscodierung.
0 = Längsredundanzprüfung (LRC) 1 = Zyklische Redundanzprüfung (CRC) |
|
Taktkonvertierungsfaktor. |
|
Aktuelle Bytegröße für die Größe des Informationsfelds Karte. |
|
Aktuelle Bytegröße für informationsfeldgroßes Gerät. |
|
Aktuelle Schutzzeit. |
|
DWORD-codiert als 0x0rrrpppp , wobei rrr RFU ist und 0x000 werden sollte. pppp codiert den aktuellen Protokolltyp. Welches Bit festgelegt wurde, gibt an, welches ISO-Protokoll derzeit verwendet wird. (Wenn z. B. Bit null festgelegt ist, ist das T=0-Protokoll in Kraft.) |
|
Aktuelle Arbeitswartezeit. |
|
Standardtaktrate in kHz. |
|
Standarddatenrate in bps. |
|
Anzeigename des Lesers. |
|
Für die zukünftige Verwendung reserviert. |
|
Der Systemname des Lesers. |
|
An den Computer angefügte Instanz des Lesers dieses Anbieters. Die erste instance ist Geräteeinheit 0, die nächste Einheit 1 (wenn es sich um die gleiche Lesermarke handelt) usw. Zwei verschiedene Lesermarken haben jeweils null für diesen Wert. |
|
Einzelnes Byte. Null, wenn intelligenter Karte elektrischer Kontakt nicht aktiv ist; ungleich null, wenn der Kontakt aktiv ist. |
|
Einzelnes Byte, das die Anwesenheit von smart Karte angibt: 0 = nicht vorhanden 1 = Karte vorhanden, aber nicht verschluckt (gilt nur, wenn der Leser intelligente Karte Schlucken unterstützt) 2 = Karte vorhanden (und verschluckt, wenn der Leser intelligente Karte Schlucken unterstützt) 4 = Karte eingezogen. |
|
Einzelnes Byte, das den Typ der intelligenten Karte angibt: 0 = unbekannter Typ 1 = 7816 asynchron 2 = 7816 Synchron Andere Werte RFU. |
|
Maximale Taktrate in kHz. |
|
Maximale Datenrate in bps. |
|
Maximale Byte für das Informationsdateigerät. |
|
Null, wenn das Gerät das Herunterschalten nicht unterstützt, während intelligente Karte eingefügt wird. Andernfalls ein Wert ungleich null. |
|
DWORD codiert als 0x0rrrpppp , wobei rrr RFU ist und 0x000 werden sollte. pppp codiert die unterstützten Protokolltypen. Eine "1" in einer bestimmten Bitposition gibt die Unterstützung für das zugehörige ISO-Protokoll an. Wenn also Bits null und 1 festgelegt sind, werden sowohl T=0 - als auch T=1-Protokolle unterstützt. |
|
Vom Hersteller bereitgestellte Schnittstellengeräteseriennummer. |
|
Vom Hersteller bereitgestellter Schnittstellengerätetyp (Modellbezeichnung des Lesers). |
|
Vom Hersteller bereitgestellte Schnittstellengeräteversion (DWORD in der Form 0xMMmmbbbb , wobei MM = Hauptversion, mm = Nebenversion und bbbb = Buildnummer) ist. |
|
Anbietername. |
[out] pbAttr
Zeiger auf einen Puffer, der das Attribut empfängt, dessen ID in dwAttrId angegeben wird. Wenn dieser Wert NULL ist, ignoriert SCardGetAttrib die in pcbAttrLen angegebene Pufferlänge, schreibt die Länge des Puffers, die zurückgegeben worden wäre, wenn dieser Parameter nicht NULL an pcbAttrLen gewesen wäre, und gibt einen Erfolgscode zurück.
[in, out] pcbAttrLen
Länge des pbAttr-Puffers in Bytes und empfängt die tatsächliche Länge des empfangenen Attributs Wenn die Pufferlänge als SCARD_AUTOALLOCATE angegeben wird, wird pbAttr in einen Zeiger in einen Bytezeiger konvertiert und empfängt die Adresse eines Speicherblocks, der das Attribut enthält. Dieser Speicherblock muss mit SCardFreeMemory verwaltet werden.
Rückgabewert
Diese Funktion gibt unterschiedliche Werte zurück, je nachdem, ob sie erfolgreich ist oder fehlschlägt.
Rückgabecode | BESCHREIBUNG |
---|---|
|
SCARD_S_SUCCESS. |
|
ERROR_NOT_SUPPORTED. |
|
Ein Fehlercode. Weitere Informationen finden Sie unter Smartcard-Rückgabewerte. |
Hinweise
Die SCardGetAttrib-Funktion ist eine direkte Karte-Zugriffsfunktion. Weitere Informationen zu anderen Direktzugriffsfunktionen finden Sie unter Funktionen für den direkten Kartenzugriff.
Beispiele
Im folgenden Beispiel wird gezeigt, wie ein Attribut für einen Karte-Reader abgerufen wird. Im Beispiel wird davon ausgegangen, dass hCardHandle ein gültiges Handle ist, das von einem vorherigen Aufruf der SCardConnect-Funktion abgerufen wurde.
LPBYTE pbAttr = NULL;
DWORD cByte = SCARD_AUTOALLOCATE;
DWORD i;
LONG lReturn;
lReturn = SCardGetAttrib(hCardHandle,
SCARD_ATTR_VENDOR_NAME,
(LPBYTE)&pbAttr,
&cByte);
if ( SCARD_S_SUCCESS != lReturn )
{
if ( ERROR_NOT_SUPPORTED == lReturn )
printf("Value not supported\n");
else
{
// Some other error occurred.
printf("Failed SCardGetAttrib - %x\n", lReturn);
exit(1); // Or other appropriate action
}
}
else
{
// Output the bytes.
for (i = 0; i < cByte; i++)
printf("%c", *(pbAttr+i));
printf("\n");
// Free the memory when done.
// hContext was set earlier by SCardEstablishContext
lReturn = SCardFreeMemory( hContext, pbAttr );
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winscard.h |
Bibliothek | Winscard.lib |
DLL | Winscard.dll |