Función SCardGetReaderDeviceInstanceIdA (winscard.h)

La función SCardGetReaderDeviceInstanceId obtiene el identificador de instancia de dispositivo del lector de tarjetas para el nombre de lector especificado. Esta función no afecta al estado del lector.

Sintaxis

LONG SCardGetReaderDeviceInstanceIdA(
  [in]            SCARDCONTEXT hContext,
  [in]            LPCSTR       szReaderName,
  [out, optional] LPSTR        szDeviceInstanceId,
  [in, out]       LPDWORD      pcchDeviceInstanceId
);

Parámetros

[in] hContext

Identificador que identifica el contexto del administrador de recursos para la consulta. Puede establecer el contexto del administrador de recursos mediante una llamada anterior a la función SCardEstablishContext . Este parámetro no puede ser NULL.

[in] szReaderName

Nombre del lector. Puede obtener este valor llamando a la función SCardListReaders .

[out, optional] szDeviceInstanceId

Búfer que recibe el identificador de instancia de dispositivo del lector. Si este valor es NULL, la función omite la longitud del búfer proporcionada en el parámetro cchDeviceInstanceId , escribe la longitud del búfer que se habría devuelto si este parámetro no hubiera sido NULL en cchDeviceInstanceId y devuelve un código correcto.

[in, out] pcchDeviceInstanceId

Longitud, en caracteres, del búfer szDeviceInstanceId , incluido el terminador NULL . Si la longitud del búfer se especifica como SCARD_AUTOALLOCATE, el parámetro szDeviceInstanceId se convierte en un puntero a un puntero de byte y recibe la dirección de un bloque de memoria que contiene el identificador de instancia. Este bloque de memoria debe desasignarse con la función SCardFreeMemory .

Valor devuelto

Esta función devuelve valores diferentes en función de si se realiza correctamente o se produce un error.

Código devuelto Descripción
Success
SCARD_S_SUCCESS.
Error
Código de error. Para obtener más información, consulte Valores devueltos de tarjeta inteligente.

Comentarios

Esta función no se redirige. Al llamar a la función SCardGetReaderDeviceInstanceId cuando dentro de una sesión de Escritorio remoto se produce un error con el código de error SCARD_E_READER_UNAVAILABLE.

Ejemplos


LONG     lReturn;
LPTSTR   szReaderName = "USB Smart Card Reader 0";
WCHAR    szDeviceInstanceId[256];
DWORD    cchDeviceInstanceId = 256;

// Retrieve the reader's device instance ID.
// hContext was set by a previous call to SCardEstablishContext.
lReturn = SCardGetReaderDeviceInstanceId (hContext,
                         szReaderName,
                         szDeviceInstanceId,
                         &cchDeviceInstanceId);

if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardGetReaderDeviceInstanceId - %x\n", lReturn);
    // Take appropriate action.
}



Nota:

El encabezado winscard.h define SCardGetReaderDeviceInstanceId 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 Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winscard.h