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
SCARD_ATTR_ATR_STRING
Antwort auf die Zurücksetzungszeichenfolge (ATR).
SCARD_ATTR_CHANNEL_ID
DWORD-codiert als 0xDDDDCCCC, wobei DDDD = Datenkanaltyp und CCCC = Kanalnummer:
  • Die folgenden Codierungen werden für DDDD definiert:
  • 0x01 serielle E/A; CCCC ist eine Portnummer.
  • 0x02 parallele E/A; CCCC ist eine Portnummer.
  • 0x04 PS/2-Tastaturanschluss; CCCC ist null.
  • 0x08 SCSI; CCCC ist die SCSI-ID-Nummer.
  • 0x10 IDE; CCCC ist die Gerätenummer.
  • 0x20 USB; CCCC ist die Gerätenummer.
  • 0xF vom Hersteller definiertey-Schnittstelle mit y im Bereich 0 bis 15; CCCC ist vom Anbieter definiert.
SCARD_ATTR_CHARACTERISTICS
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:
  • 0x00000001 Card Schluckmechanismus
  • 0x00000002 Kartenauswurfmechanismus
  • 0x00000004 Kartenerfassungsmechanismus
Alle anderen Werte sind für die zukünftige Verwendung (RFU) reserviert.
SCARD_ATTR_CURRENT_BWT
Aktuelle Blockwartezeit.
SCARD_ATTR_CURRENT_CLK
Aktuelle Taktrate in kHz.
SCARD_ATTR_CURRENT_CWT
Aktuelle Zeichenwartezeit.
SCARD_ATTR_CURRENT_D
Bitratenkonvertierungsfaktor.
SCARD_ATTR_CURRENT_EBC_ENCODING
Aktuelle Fehlerblocksteuerungscodierung.

0 = Längsredundanzprüfung (LRC)

1 = Zyklische Redundanzprüfung (CRC)

SCARD_ATTR_CURRENT_F
Taktkonvertierungsfaktor.
SCARD_ATTR_CURRENT_IFSC
Aktuelle Bytegröße für die Größe des Informationsfelds Karte.
SCARD_ATTR_CURRENT_IFSD
Aktuelle Bytegröße für informationsfeldgroßes Gerät.
SCARD_ATTR_CURRENT_N
Aktuelle Schutzzeit.
SCARD_ATTR_CURRENT_PROTOCOL_TYPE
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.)
SCARD_ATTR_CURRENT_W
Aktuelle Arbeitswartezeit.
SCARD_ATTR_DEFAULT_CLK
Standardtaktrate in kHz.
SCARD_ATTR_DEFAULT_DATA_RATE
Standarddatenrate in bps.
SCARD_ATTR_DEVICE_FRIENDLY_NAME
Anzeigename des Lesers.
SCARD_ATTR_DEVICE_IN_USE
Für die zukünftige Verwendung reserviert.
SCARD_ATTR_DEVICE_SYSTEM_NAME
Der Systemname des Lesers.
SCARD_ATTR_DEVICE_UNIT
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.
SCARD_ATTR_ICC_INTERFACE_STATUS
Einzelnes Byte. Null, wenn intelligenter Karte elektrischer Kontakt nicht aktiv ist; ungleich null, wenn der Kontakt aktiv ist.
SCARD_ATTR_ICC_PRESENCE
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.

SCARD_ATTR_ICC_TYPE_PER_ATR
Einzelnes Byte, das den Typ der intelligenten Karte angibt:

0 = unbekannter Typ

1 = 7816 asynchron

2 = 7816 Synchron

Andere Werte RFU.

SCARD_ATTR_MAX_CLK
Maximale Taktrate in kHz.
SCARD_ATTR_MAX_DATA_RATE
Maximale Datenrate in bps.
SCARD_ATTR_MAX_IFSD
Maximale Byte für das Informationsdateigerät.
SCARD_ATTR_POWER_MGMT_SUPPORT
Null, wenn das Gerät das Herunterschalten nicht unterstützt, während intelligente Karte eingefügt wird. Andernfalls ein Wert ungleich null.
SCARD_ATTR_PROTOCOL_TYPES
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.
SCARD_ATTR_VENDOR_IFD_SERIAL_NO
Vom Hersteller bereitgestellte Schnittstellengeräteseriennummer.
SCARD_ATTR_VENDOR_IFD_TYPE
Vom Hersteller bereitgestellter Schnittstellengerätetyp (Modellbezeichnung des Lesers).
SCARD_ATTR_VENDOR_IFD_VERSION
Vom Hersteller bereitgestellte Schnittstellengeräteversion (DWORD in der Form 0xMMmmbbbb , wobei MM = Hauptversion, mm = Nebenversion und bbbb = Buildnummer) ist.
SCARD_ATTR_VENDOR_NAME
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
Erfolgreich
SCARD_S_SUCCESS.
Attributwert wird nicht unterstützt.
ERROR_NOT_SUPPORTED.
Sonstiger Fehler
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

Weitere Informationen

SCardConnect

SCardFreeMemory

SCardSetAttrib