Partager via


RasEnumEntriesA, fonction (ras.h)

La fonction RasEnumEntries répertorie tous les noms d’entrée dans un carnet téléphonique d’accès à distance.

Syntaxe

DWORD RasEnumEntriesA(
  [in]      LPCSTR          unnamedParam1,
  [in]      LPCSTR          unnamedParam2,
  [in, out] LPRASENTRYNAMEA unnamedParam3,
  [in, out] LPDWORD         unnamedParam4,
  [out]     LPDWORD         unnamedParam5
);

Paramètres

[in] unnamedParam1

Réservé; doit être NULL .

[in] unnamedParam2

Pointeur vers une chaîne terminée par null qui spécifie le chemin d’accès complet et le nom de fichier d’un fichier PBK (Phone-Book). Si ce paramètre est NULL, la fonction utilise le fichier de livre téléphonique par défaut actuel. Le fichier de carnet téléphonique par défaut est celui sélectionné par l’utilisateur dans la feuille de propriétés Préférences utilisateur de la boîte de dialogue Mise en réseau rendez-vous.

Si ce paramètre est NULL, les entrées sont énumérées à partir de tous les fichiers de livres téléphoniques d’accès à distance dans le profil AllUsers et le profil de l’utilisateur.

[in, out] unnamedParam3

Pointeur vers une mémoire tampon qui, en sortie, reçoit un tableau de structures RASENTRYNAME, une pour chaque entrée de livre téléphonique.

Lors de l’entrée, une application doit définir la dwSize membre du premier RASENTRYNAME structure dans la mémoire tampon sur sizeof(RASENTRYNAME) afin d’identifier la version de la structure passée.

[in, out] unnamedParam4

Pointeur vers une variable qui, en entrée, contient la taille, en octets, de la mémoire tampon spécifiée par lprasentryname.

Pointeur vers une variable qui, en sortie, contient la taille, en octets, du tableau de RASENTRYNAME structures requises pour les entrées de carnet téléphonique.

Windows Vista ou version ultérieure : Pour déterminer la taille de mémoire tampon requise, appelez RasEnumEntries avec lprasentryname défini sur NULL. La variable pointée par lpcb doit être définie sur zéro. La fonction retourne la taille de mémoire tampon requise dans lpcb et un code d’erreur de ERROR_BUFFER_TOO_SMALL.

[out] unnamedParam5

Pointeur vers une variable qui reçoit le nombre d’entrées de carnet téléphonique écrites dans la mémoire tampon spécifiée par lprasentryname.

Valeur de retour

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour est l’un des codes d’erreur suivants ou une valeur de Codes d’erreur d’acheminement et d’accès à distance ou Winerror.h.

Valeur Signification
ERROR_BUFFER_TOO_SMALL
La mémoire tampon lprasentryname n’est pas suffisamment grande. Le paramètre lpcb est inférieur au membre dwSize dans le paramètre lprasentryname qui doit être défini avant d’appeler la fonction. La fonction retourne la taille de mémoire tampon requise dans la variable pointée par lpcb.

Windows Vista ou version ultérieure : La mémoire tampon lprasentryname peut être définie sur NULL et la variable pointée par lpcb peut être définie sur zéro. La fonction retourne la taille de mémoire tampon requise dans la variable pointée par lpcb.

ERROR_INVALID_SIZE
La valeur de dwSize dans la structure RASENTRYNAME pointée par lprasentryname, spécifie une version de la structure qui n’est pas prise en charge sur la plateforme actuelle. Par exemple, sur Windows 95, RasEnumEntries retourne cette erreur si dwSize indique que RASENTRYNAME inclut les dwFlags et szPhonebookPath membres, car ces membres ne sont pas pris en charge sur Windows 95 (ils ne sont pris en charge que sur Windows 2000 et versions ultérieures).
ERROR_NOT_ENOUGH_MEMORY
La fonction n’a pas pu allouer suffisamment de mémoire pour terminer l’opération.

Remarques

L’exemple de code suivant énumère les entrées de livres téléphoniques RAS sur Windows Vista et les versions ultérieures de Windows. Le code appelle initialement RasEnumEntries pour obtenir la taille de la mémoire tampon à transmettre. Le code appelle ensuite RasEnumEntries à nouveau, pour énumérer les entrées. Notez que pour le deuxième appel, le code définit la dwSize membre du premier RASENTRYNAME structure dans la mémoire tampon sur sizeof(RASENTRYNAME) pour spécifier la version de la structure.

#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "raserror.h"
#pragma comment(lib, "rasapi32.lib")

DWORD __cdecl wmain(){

    DWORD dwCb = 0;
    DWORD dwRet = ERROR_SUCCESS;
    DWORD dwEntries = 0;
    LPRASENTRYNAME lpRasEntryName = NULL;
    
    // Call RasEnumEntries with lpRasEntryName = NULL. dwCb is returned with the required buffer size and 
    // a return code of ERROR_BUFFER_TOO_SMALL
    dwRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &dwCb, &dwEntries);

    if (dwRet == ERROR_BUFFER_TOO_SMALL){
        // Allocate the memory needed for the array of RAS entry names.
        lpRasEntryName = (LPRASENTRYNAME) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
        if (lpRasEntryName == NULL){
            wprintf(L"HeapAlloc failed!\n");
            return 0;
        }
        // The first RASENTRYNAME structure in the array must contain the structure size
        lpRasEntryName[0].dwSize = sizeof(RASENTRYNAME);
        
        // Call RasEnumEntries to enumerate all RAS entry names
        dwRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &dwCb, &dwEntries);

        // If successful, print the RAS entry names 
        if (ERROR_SUCCESS == dwRet){
            wprintf(L"The following RAS entry names were found:\n");
            for (DWORD i = 0; i < dwEntries; i++){
                wprintf(L"%s\n", lpRasEntryName[i].szEntryName);
            }
        }
        //Deallocate memory for the connection buffer
        HeapFree(GetProcessHeap(), 0, lpRasEntryName);
        lpRasEntryName = NULL;
        return 0;
    }

    // There was either a problem with RAS or there are RAS entry names to enumerate    
    if(dwEntries >= 1){
        wprintf(L"The operation failed to acquire the buffer size.\n");
    }else{
        wprintf(L"There were no RAS entry names found:.\n");
    }

    return 0;
}

Note

L’en-tête ras.h définit RasEnumEntries 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête ras.h
bibliothèque Rasapi32.lib
DLL Rasapi32.dll

Voir aussi

RASENTRYNAME

RasEnumConnections

Vue d’ensemble service d’accès à distance (RAS)

fonctions de service d’accès à distance