SCardGetCardTypeProviderNameA-Funktion (winscard.h)

Die SCardGetCardTypeProviderName-Funktion gibt den Namen des Moduls (Dynamic Link Library) zurück, das den Anbieter für einen angegebenen Karte Namen und Anbietertyp enthält.

Syntax

LONG SCardGetCardTypeProviderNameA(
  [in]      SCARDCONTEXT hContext,
  [in]      LPCSTR       szCardName,
  [in]      DWORD        dwProviderId,
  [out]     CHAR         *szProvider,
  [in, out] LPDWORD      pcchProvider
);

Parameter

[in] hContext

Handle, das den Ressourcen-Manager-Kontext identifiziert. Der Ressourcen-Manager-Kontext kann durch einen vorherigen Aufruf von SCardEstablishContext festgelegt werden. Dieser Wert kann NULL sein, wenn der Aufruf von SCardGetCardTypeProviderName nicht an einen bestimmten Kontext weitergeleitet wird.

[in] szCardName

Name des Karte Typs, dem dieser Anbietername zugeordnet ist.

[in] dwProviderId

Bezeichner für den Anbieter, der diesem Karte Typ zugeordnet ist.

Wert Bedeutung
SCARD_PROVIDER_PRIMARY
1
Die Funktion ruft den Namen des primären Dienstanbieters des intelligenten Karte als GUID-Zeichenfolge ab.
SCARD_PROVIDER_CSP
2
Die Funktion ruft den Namen des Kryptografiedienstanbieters ab.
SCARD_PROVIDER_KSP
3
Die Funktion ruft den Namen des Smart Karte Schlüsselspeicheranbieters (KSP) ab.
SCARD_PROVIDER_CARD_MODULE
0x80000001
Die Funktion ruft den Namen des Karte Moduls ab.

[out] szProvider

Zeichenfolgenvariable, um den Anbieternamen nach erfolgreichem Abschluss dieser Funktion zu erhalten.

[in, out] pcchProvider

Zeiger auf den DWORD-Wert . Bei der Eingabe stellt pcchProvider die Länge des szProvider-Puffers in Zeichen bereit. Wenn dieser Wert SCARD_AUTOALLOCATE ist, wird szProvider in einen Zeiger auf einen Bytezeiger konvertiert und empfängt die Adresse eines Speicherblocks, der die Zeichenfolge enthält. Dieser Speicherblock muss durch Aufrufen von SCardFreeMemory aufgehoben werden.

Bei der Ausgabe stellt dieser Wert die tatsächliche Anzahl von Zeichen dar, einschließlich des NULL-Abschlusszeichens , in der Variablen szProvider .

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.

Nach erfolgreicher Ausführung dieser Funktion kann der Wert in szProvider als dritter Parameter in einem Aufruf von CryptAcquireContext verwendet werden.

Beispiele

Im folgenden Beispiel wird gezeigt, wie der Anbietername für den angegebenen Leserkontext abgerufen wird. Im Beispiel wird davon ausgegangen, dass hContext ein gültiges Handle ist, das aus einem vorherigen Aufruf der SCardEstablishContext-Funktion abgerufen wurde.

LPTSTR szProvider = NULL;
LPTSTR szCardName = _T("WindowsCard");
DWORD  chProvider = SCARD_AUTOALLOCATE;
LONG   lReturn = SCARD_S_SUCCESS;

// Retrieve the provider name.
// hContext was set by SCardEstablishContext.
lReturn = SCardGetCardTypeProviderName(hContext,
                                       szCardName,
                                       SCARD_PROVIDER_CSP,
                                       (LPTSTR)&szProvider,
                                       &chProvider);
if (SCARD_S_SUCCESS == lReturn)
{
    BOOL fSts = TRUE;
    HCRYPTPROV hProv = NULL;
  
  // Acquire a Cryptographic operation context.
    fSts = CryptAcquireContext(&hProv,
                               NULL,
                               szProvider,
                               PROV_RSA_FULL,
                               0);
    // Perform Cryptographic operations with smart card
    // ...

    // Free memory allocated by SCardGetCardTypeProviderName.
    lReturn = SCardFreeMemory(hContext, szProvider);
}

Hinweis

Der winscard.h-Header definiert SCardGetCardTypeProviderName als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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

SCardSetCardTypeProviderName