Compartir a través de


Función SCardGetCardTypeProviderNameA (winscard.h)

La función SCardGetCardTypeProviderName devuelve el nombre del módulo (biblioteca de vínculos dinámicos) que contiene el proveedor para un nombre de tarjeta determinado y tipo de proveedor.

Sintaxis

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

Parámetros

[in] hContext

Identificador que identifica el contexto del administrador de recursos de . El contexto del administrador de recursos se puede establecer mediante una llamada anterior a SCardEstablishContext. Este valor puede ser null si la llamada a SCardGetCardTypeProviderName no se dirige a un contexto de específico.

[in] szCardName

Nombre del tipo de tarjeta con el que está asociado este nombre de proveedor.

[in] dwProviderId

Identificador del proveedor asociado a este tipo de tarjeta.

Valor Significado
SCARD_PROVIDER_PRIMARY
1
La función recupera el nombre del proveedor de servicios principal de la tarjeta inteligente como una cadena GUID.
SCARD_PROVIDER_CSP
2
La función recupera el nombre del proveedor de servicios criptográficos .
SCARD_PROVIDER_KSP
3
La función recupera el nombre de la tarjeta inteligente proveedor de almacenamiento de claves (KSP).
SCARD_PROVIDER_CARD_MODULE
0x80000001
La función recupera el nombre del módulo de tarjeta.

[out] szProvider

Variable de cadena para recibir el nombre del proveedor de tras la finalización correcta de esta función.

[in, out] pcchProvider

Puntero al valor DWORD de . En la entrada, pcchProvider proporciona la longitud del búfer de szProvider en caracteres. Si este valor es SCARD_AUTOALLOCATE, szProvider se convierte en un puntero a un puntero de bytes y recibe la dirección de un bloque de memoria que contiene la cadena. Este bloque de memoria debe desasignarse llamando a SCardFreeMemory.

En la salida, este valor representa el número real de caracteres, incluida la terminador de null, en la variable szProvider szProvider.

Valor devuelto

Esta función devuelve valores diferentes en función de si se realiza correctamente o no.

Código devuelto Descripción
correcto
SCARD_S_SUCCESS.
error de
Un código de error. Para obtener más información, consulte valores devueltos de tarjeta inteligente.

Observaciones

Esta función no se redirige, pero llamar a la función cuando se encuentra dentro de una sesión de Escritorio remoto no producirá un error. Solo significa que el resultado será del equipo remoto en lugar del equipo local.

Tras completar correctamente esta función, el valor de szProvider se puede usar como tercer parámetro en una llamada a CryptAcquireContext.

Ejemplos

En el ejemplo siguiente se muestra cómo recuperar el nombre del proveedor para el contexto de lector especificado. En el ejemplo se supone que hContext es un identificador válido obtenido de una llamada anterior a la función SCardEstablishContext.

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);
}

Nota

El encabezado winscard.h define SCardGetCardTypeProviderName como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winscard.h
biblioteca de Winscard.lib
DLL de Winscard.dll

Consulte también

SCardEstablishContext

SCardFreeMemory

SCardSetCardTypeProviderName