Função SCardListReadersWithDeviceInstanceIdA (winscard.h)
A função
Sintaxe
LONG SCardListReadersWithDeviceInstanceIdA(
[in] SCARDCONTEXT hContext,
[in] LPCSTR szDeviceInstanceId,
[out, optional] LPSTR mszReaders,
[in, out] LPDWORD pcchReaders
);
Parâmetros
[in] hContext
Identificador que identifica o contexto do gerenciador de recursos para a consulta. Você pode definir o contexto do gerenciador de recursos por uma chamada anterior para a função SCardEstablishContext. Esse parâmetro não pode ser NULL.
[in] szDeviceInstanceId
ID da instância do dispositivo do leitor. Você pode obter esse valor chamando a função SCardGetReaderDeviceInstanceId com o nome do leitor ou chamando a função SetupDiGetDeviceInstanceId do DDK.
[out, optional] mszReaders
Uma cadeia de caracteres múltipla que contém os leitores de cartão inteligente dentro do identificador de instância do dispositivo fornecido. Se esse valor for
[in, out] pcchReaders
O comprimento, em caracteres, do buffer mszReaders. Esse parâmetro recebe o comprimento real da estrutura de várias cadeias de caracteres, incluindo todos os caracteres nulos de terminação. Se o comprimento do buffer for especificado como SCARD_AUTOALLOCATE, mszReaders será convertido em um ponteiro para um ponteiro de bytes e receberá o endereço de um bloco de memória que contém a estrutura de várias cadeias de caracteres. Quando terminar de usar essa memória, desaloque-a usando a função SCardFreeMemory.
Valor de retorno
Essa função retorna valores diferentes dependendo se ela é bem-sucedida ou falha.
Código de retorno | Descrição |
---|---|
|
SCARD_S_SUCCESS. |
|
Um código de erro. Para obter mais informações, consulte valores de retorno de cartão inteligente. |
Observações
Essa função não é redirecionada. Chamar a função SCardListReadersWithDeviceInstanceId quando dentro de uma sessão de Área de Trabalho Remota falha com o código de erro SCARD_E_READER_UNAVAILABLE.
Exemplos
szDeviceInstanceIdcchReaderNameLONG lReturn, lReturn2;
LPTSTR pmszReaders = NULL;
LPTSTR pReader = NULL;WCHAR
DWORD cchReaderName = SCARD_AUTOALLOCATE;
// Retrieve the reader’s name from it’s device instance ID
// hContext was set by a previous call to SCardEstablishContext.
// szDeviceInstanceId was obtained by calling SetupDiGetDeviceInstanceId
lReturn = SCardListReadersWithDeviceInstanceId (hContext,
szDeviceInstanceId,
(LPTSTR)&pmszReaders,
&cchReaderName);
switch( lReturn )
{
case SCARD_E_NO_READERS_AVAILABLE:
printf("No readers have the provided device instance ID.\n");
// Take appropriate action.
// ...
break;
case SCARD_S_SUCCESS:
// Do something with the multi string of readers.
// Output the values.
// A double-null terminates the list of values.
pReader = pmszReaders;
while ( '\0' != *pReader )
{
// Display the value.
printf("Reader: %S\n", pReader );
// Advance to the next value.
pReader = pReader + wcslen((wchar_t *)pReader) + 1;
}
// Free the memory.
lReturn2 = SCardFreeMemory( hContext,
pmszReaders );
if ( SCARD_S_SUCCESS != lReturn2 )
printf("Failed SCardFreeMemory\n");
break;
default:
printf("Failed SCardListReaders\n");
// Take appropriate action.
// ...
break;
Nota
O cabeçalho winscard.h define SCardListReadersWithDeviceInstanceId como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 8 [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2012 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winscard.h |