Funzione SCardListReadersWithDeviceInstanceIdW (winscard.h)
La funzione SCardListReadersWithDeviceInstanceId ottiene l'elenco dei lettori che hanno fornito un identificatore di istanza del dispositivo. Questa funzione non influisce sullo stato del lettore.
Sintassi
LONG SCardListReadersWithDeviceInstanceIdW(
[in] SCARDCONTEXT hContext,
[in] LPCWSTR szDeviceInstanceId,
[out, optional] LPWSTR mszReaders,
[in, out] LPDWORD pcchReaders
);
Parametri
[in] hContext
Handle che identifica il contesto di Resource Manager per la query. È possibile impostare il contesto di Resource Manager tramite una chiamata precedente alla funzione SCardEstablishContext . Questo parametro non può essere NULL.
[in] szDeviceInstanceId
ID istanza del dispositivo del lettore. È possibile ottenere questo valore chiamando la funzione SCardGetReaderDeviceInstanceId con il nome del lettore o chiamando la funzione SetupDiGetDeviceInstanceId da DDK.
[out, optional] mszReaders
Stringa multipla che contiene i lettori di smart card all'interno dell'identificatore di istanza del dispositivo fornito. Se questo valore è NULL, la funzione ignora la lunghezza del buffer specificata nel parametro pcchReaders , scrive la lunghezza del buffer che sarebbe stato restituito se questo parametro non fosse stato NULL in pcchReaders e restituisce un codice di operazione riuscita.
[in, out] pcchReaders
Lunghezza, in caratteri, del buffer mszReaders . Questo parametro riceve la lunghezza effettiva della struttura a più stringhe, inclusi tutti i caratteri Null di terminazione. Se la lunghezza del buffer viene specificata come SCARD_AUTOALLOCATE, mszReaders viene convertita in un puntatore a un puntatore a byte e riceve l'indirizzo di un blocco di memoria contenente la struttura a più stringhe. Al termine dell'uso di questa memoria, deallocata tramite la funzione SCardFreeMemory .
Valore restituito
Questa funzione restituisce valori diversi a seconda che abbia esito positivo o negativo.
Codice restituito | Descrizione |
---|---|
|
SCARD_S_SUCCESS. |
|
Codice di errore. Per altre informazioni, vedere Valori restituiti della smart card. |
Commenti
Questa funzione non viene reindirizzata. La chiamata alla funzione SCardListReadersWithDeviceInstanceId quando all'interno di una sessione desktop remoto ha esito negativo con il codice di errore SCARD_E_READER_UNAVAILABLE.
Esempi
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
L'intestazione winscard.h definisce SCardListReadersWithDeviceInstanceId come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winscard.h |