Freigeben über


SCardGetCardTypeProviderNameA-Funktion (winscard.h)

Die SCardCardTypeProviderName-Funktion gibt den Namen des Moduls (Dynamic Link Library) zurück, das den Anbieter für einen bestimmten Kartennamen und Anbietertypenthält.

Syntax

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

Parameter

[in] hContext

Behandeln Sie das Ressourcen-Manager-Kontext. Der Ressourcen-Manager-Kontext kann durch einen vorherigen Aufruf von SCardEstablishContextfestgelegt werden. Dieser Wert kann NULL- werden, wenn der Aufruf von SCardCardTypeProviderName nicht an einen bestimmten Kontextweitergeleitet wird.

[in] szCardName

Name des Kartentyps, dem dieser Anbietername zugeordnet ist.

[in] dwProviderId

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

Wert Bedeutung
SCARD_PROVIDER_PRIMARY
1
Die Funktion ruft den Namen der smartcardsprimären Dienstanbieters als GUID-Zeichenfolge ab.
SCARD_PROVIDER_CSP
2
Die Funktion ruft den Namen des kryptografischen Dienstanbietersab.
SCARD_PROVIDER_KSP
3
Die Funktion ruft den Namen der Smartcard Schlüsselspeicheranbieters (KSP) ab.
SCARD_PROVIDER_CARD_MODULE
0x80000001
Die Funktion ruft den Namen des Kartenmoduls ab.

[out] szProvider

Zeichenfolgenvariable zum Empfangen des Anbieternamens nach erfolgreichem Abschluss dieser Funktion.

[in, out] pcchProvider

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

Bei der Ausgabe stellt dieser Wert die tatsächliche Anzahl von Zeichen dar, einschließlich des null Terminator, in der szProvider Variable.

Rückgabewert

Diese Funktion gibt unterschiedliche Werte zurück, je nachdem, ob sie erfolgreich ist oder fehlschlägt.

Rückgabecode Beschreibung
Erfolg
SCARD_S_SUCCESS.
Fehler
Fehlercode. Weitere Informationen finden Sie unter Smartcard-Rückgabewerte.

Bemerkungen

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 erfolgreichem Abschluss dieser Funktion kann der Wert in szProvider als dritten Parameter in einem Aufruf von CryptAcquireContextverwendet werden.

Beispiele

Das folgende Beispiel zeigt, wie der Anbietername für den angegebenen Lesekontext 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);
}

Anmerkung

Der winscard.h-Header definiert SCardCardTypeProviderName 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 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

Siehe auch

SCardEstablishContext-

SCardFreeMemory-

SCardSetCardTypeProviderName