Freigeben über


SCardListCardsA-Funktion (winscard.h)

Die SCardListCards-Funktion durchsucht die Smart Karte-Datenbank und stellt eine Liste der benannten Karten bereit, die zuvor vom Benutzer in das System eingeführt wurden.

Der Aufrufer gibt eine ATR-Zeichenfolge, einen Satz von GuiDs (Interface Identifiers) oder beides an. Wenn sowohl eine ATR-Zeichenfolge als auch ein Bezeichnerarray angegeben werden, stimmen die zurückgegebenen Karten mit der angegebenen ATR-Zeichenfolge überein und unterstützen die angegebenen Schnittstellen.

Syntax

LONG SCardListCardsA(
  [in]           SCARDCONTEXT hContext,
  [in, optional] LPCBYTE      pbAtr,
  [in]           LPCGUID      rgquidInterfaces,
  [in]           DWORD        cguidInterfaceCount,
  [out]          CHAR         *mszCards,
  [in, out]      LPDWORD      pcchCards
);

Parameter

[in] hContext

Handle, das den Ressourcen-Manager-Kontext für die Abfrage identifiziert. Der Ressourcen-Manager-Kontext kann durch einen vorherigen Aufruf von SCardEstablishContext festgelegt werden.

Wenn dieser Parameter auf NULL festgelegt ist, ist die Suche nach Karten nicht auf einen beliebigen Kontext beschränkt.

[in, optional] pbAtr

Adresse einer ATR-Zeichenfolge zum Vergleich mit bekannten Karten oder NULL , wenn kein ATR-Abgleich durchgeführt werden soll.

[in] rgquidInterfaces

Array of Identifiers (GUIDs) oder NULL , wenn kein Schnittstellenabgleich durchgeführt werden soll. Wenn ein Array angegeben wird, wird ein Karte Name nur zurückgegeben, wenn alle angegebenen Bezeichner vom Karte unterstützt werden.

[in] cguidInterfaceCount

Anzahl der Einträge im Array rgguidInterfaces . Wenn rgguidInterfacesNULL ist, wird dieser Wert ignoriert.

[out] mszCards

Mehrere Zeichenfolgen, die die gefundenen Smartcards auflistet. Wenn dieser Wert NULL ist, ignoriert SCardListCards die in pcchCards angegebene Pufferlänge und gibt die Länge des Puffers zurück, die zurückgegeben worden wäre, wenn dieser Parameter nicht NULL für pcchCards und einen Erfolgscode gewesen wäre.

[in, out] pcchCards

Länge des mszCards-Puffers in Zeichen. Empfängt die tatsächliche Länge der Struktur mit mehreren Zeichenfolgen, einschließlich aller nachfolgenden NULL-Zeichen . Wenn die Pufferlänge als SCARD_AUTOALLOCATE angegeben wird, wird mszCards in einen Zeiger auf einen Bytezeiger konvertiert und empfängt die Adresse eines Speicherblocks, der die Mehrzeichenfolgenstruktur 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.
Fehler
Ein Fehlercode. Weitere Informationen finden Sie unter Smartcard-Rückgabewerte.

Hinweise

Diese Funktion wird nicht umgeleitet, aber das Aufrufen der Funktion in einer Remotedesktopsitzung führt nicht zu einem Fehler. Dies bedeutet nur, dass das Ergebnis vom Remotecomputer statt vom lokalen Computer stammt.

Um alle Smartcards zurückzugeben, die in das Subsystem eingeführt wurden, legen Sie pbAtr und rgguidInterfaces auf NULL fest.

Die SCardListCards-Funktion ist eine Datenbankabfragefunktion. Weitere Informationen zu anderen Datenbankabfragefunktionen finden Sie unter Abfragefunktionen für SmartCard-Datenbanken.

Das Aufrufen dieser Funktion sollte außerhalb einer Transaktion erfolgen. Wenn eine Anwendung eine Transaktion mit der SCardBeginTransaction-Funktion beginnt und dann diese Funktion aufruft, setzt sie den hCard-Parameter (vom Typ SCARDHANDLE) der SCardBeginTransaction-Funktion zurück.

Windows Server 2008 R2 und Windows 7: Das Aufrufen dieser Funktion innerhalb einer Transaktion kann dazu führen, dass Ihr Computer nicht mehr reagiert.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Nicht zutreffend.

Beispiele

Das folgende Beispiel zeigt eine Auflistung der Smartcards.

LPTSTR pmszCards = NULL;
LPTSTR pCard;
LONG lReturn;
DWORD cch = SCARD_AUTOALLOCATE;

// Retrieve the list of cards.
lReturn = SCardListCards(NULL,
                         NULL,
                         NULL,
                         NULL,
                         (LPTSTR)&pmszCards,
                         &cch );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardListCards\n");
    exit(1); // Or other appropriate error action
}
// Do something with the multi string of cards.
// Output the values.
// A double-null terminates the list of values.
pCard = pmszCards;
while ( '\0' != *pCard )
{
    // Display the value.
    printf("%S\n", pCard );
    // Advance to the next value.
    pCard = pCard + wcslen(pCard) + 1;
}

// Remember to free pmszCards (by calling SCardFreeMemory).
// ...

Hinweis

Der winscard.h-Header definiert SCardListCards 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 nicht codierungsneutralem Code 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
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

SCardEstablishContext

SCardFreeMemory

SCardGetProviderId

SCardListInterfaces

SCardListReaderGroups

SCardListReaders