Share via


Fonction SCardListReaderGroupsA (winscard.h)

La fonction SCardListReaderGroups fournit la liste des groupes de lecteurs qui ont déjà été introduits dans le système.

Syntaxe

LONG SCardListReaderGroupsA(
  [in]      SCARDCONTEXT hContext,
  [out]     LPSTR        mszGroups,
  [in, out] LPDWORD      pcchGroups
);

Paramètres

[in] hContext

Handle qui identifie le contexte resource manager pour la requête. Le contexte resource manager peut être défini par un appel précédent à SCardEstablishContext.

Si ce paramètre a la valeur NULL, la recherche de groupes de lecteurs n’est limitée à aucun contexte.

[out] mszGroups

Multi-chaîne qui répertorie les groupes de lecteurs définis pour le système et disponibles pour l’utilisateur actuel sur le terminal actuel. Si cette valeur a la valeur NULL, SCardListReaderGroups ignore la longueur de la mémoire tampon fournie dans pcchGroups, écrit la longueur de la mémoire tampon qui aurait été retournée si ce paramètre n’avait pas été NULL pour pcchGroups et retourne un code de réussite.

Valeur Signification
SCARD_ALL_READERS
TEXT(« SCard$AllReaders\000 »)
Groupe utilisé lorsqu’aucun nom de groupe n’est fourni lors de la liste des lecteurs. Retourne une liste de tous les lecteurs, quel que soit le groupe ou les groupes dans lequel les lecteurs se trouvent.
SCARD_DEFAULT_READERS
TEXT(« SCard$DefaultReaders\000 »)
Groupe par défaut auquel tous les lecteurs sont ajoutés lorsqu’ils sont introduits dans le système.
SCARD_LOCAL_READERS
TEXT(« SCard$LocalReaders\000 »)
Valeur héritée inutilisée. Il s’agit d’un groupe géré en interne qui ne peut pas être modifié à l’aide d’API de groupe de lecteurs. Il est destiné à être utilisé uniquement pour l’énumération.
SCARD_SYSTEM_READERS
TEXT(« SCard$SystemReaders\000 »)
Valeur héritée inutilisée. Il s’agit d’un groupe géré en interne qui ne peut pas être modifié à l’aide d’API de groupe de lecteurs. Il est destiné à être utilisé uniquement pour l’énumération.

[in, out] pcchGroups

Longueur de la mémoire tampon mszGroups en caractères et reçoit la longueur réelle de la structure multi-chaîne, y compris tous les caractères null de fin. Si la longueur de la mémoire tampon est spécifiée en tant que SCARD_AUTOALLOCATE, mszGroups est converti en pointeur vers un pointeur d’octet et reçoit l’adresse d’un bloc de mémoire contenant la structure multi-chaîne. Ce bloc de mémoire doit être libéré avec SCardFreeMemory.

Valeur retournée

Cette fonction retourne des valeurs différentes selon qu’elle réussit ou échoue.

Code de retour Description
Success
SCARD_S_SUCCESS.
Échec
Code d'erreur. Pour plus d’informations, consultez Valeurs de retour de carte à puce.

Remarques

Un groupe est retourné uniquement s’il contient au moins un lecteur. Cela inclut le groupe SCard$DefaultReaders. Le groupe SCard$AllReaders ne peut pas être retourné, car il existe uniquement implicitement.

La fonction SCardListReaderGroups est une fonction de requête de base de données. Pour plus d’informations sur d’autres fonctions de requête de base de données, consultez Fonctions de requête de base de données de carte à puce.

Exemples

L’exemple suivant montre la liste des groupes de lecteurs.

LPTSTR          pmszReaderGroups = NULL;
LPTSTR          pReaderGroup;
LONG            lReturn;
DWORD           cch = SCARD_AUTOALLOCATE;
    
// Retrieve the list the reader groups.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaderGroups(hSC,
                                (LPTSTR)&pmszReaderGroups,
                                &cch );
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardListReaderGroups\n");
else
{
    // Do something with the multi string of reader groups.
    // Output the values.
    // A double-null terminates the list of values.
    pReaderGroup = pmszReaderGroups;
    while ( '\0' != *pReaderGroup )
    {
        // Display the value.
        printf("%S\n", pReaderGroup );
        // Advance to the next value.
        pReaderGroup = pReaderGroup + wcslen((wchar_t *) pReaderGroup) + 1;
    }

    // Remember to free pmszReaderGroups by a call to SCardFreeMemory.
    // ...
}

Notes

L’en-tête winscard.h définit SCardListReaderGroups comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winscard.h
Bibliothèque Winscard.lib
DLL Winscard.dll

Voir aussi

SCardEstablishContext

SCardFreeMemory

SCardGetProviderId

SCardListCards

SCardListInterfaces

SCardListReaders