Fonction RasEnumConnectionsA (ras.h)

La fonction RasEnumConnections répertorie toutes les connexions RAS actives. Il retourne le handle de chaque connexion et le nom d’entrée de l’annuaire téléphonique.

Syntaxe

DWORD RasEnumConnectionsA(
  [in, out] LPRASCONNA unnamedParam1,
  [in, out] LPDWORD    unnamedParam2,
  [out]     LPDWORD    unnamedParam3
);

Paramètres

[in, out] unnamedParam1

Pointeur vers une mémoire tampon qui reçoit, en sortie, un tableau de structures RASCONN , une pour chaque connexion RAS.

Lors de l’entrée, une application doit définir le membre dwSize de la première structure RASCONN de la mémoire tampon sur sizeof(RASCONN) afin d’identifier la version de la structure transmise.

[in, out] unnamedParam2

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

À la sortie, la fonction définit cette variable sur le nombre d’octets requis pour énumérer les connexions RAS.

Remarque  

Pour déterminer la taille de mémoire tampon requise, appelez RasEnumConnections avec lprasconn défini sur NULL. La variable pointée vers 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] unnamedParam3

Pointeur vers une variable qui reçoit le nombre de structures RASCONN écrites dans la mémoire tampon spécifiée par lprasconn.

Valeur retournée

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

Si la fonction échoue, la valeur de retour provient des codes d’erreur de routage et d’accès à distance ou winerror.h.

Code de retour Description
ERROR_BUFFER_TOO_SMALL
La mémoire tampon lprasconn n’est pas assez grande. Le paramètre lpcb est inférieur au membre dwSize dans le paramètre lprasconn 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.

Remarques

Si une connexion a été établie sans spécifier de nom d’entrée d’annuaire téléphonique, les informations retournées pour cette connexion indiquent le numéro de téléphone de connexion précédé de « ».

L’exemple de code suivant utilise RasEnumConnections pour énumérer les connexions RAS actives.

#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 dwConnections = 0;
    LPRASCONN lpRasConn = NULL;
    
    // Call RasEnumConnections with lpRasConn = NULL. dwCb is returned with the required buffer size and 
    // a return code of ERROR_BUFFER_TOO_SMALL
    dwRet = RasEnumConnections(lpRasConn, &dwCb, &dwConnections);

    if (dwRet == ERROR_BUFFER_TOO_SMALL){
        // Allocate the memory needed for the array of RAS structure(s).
        lpRasConn = (LPRASCONN) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
        if (lpRasConn == NULL){
            wprintf(L"HeapAlloc failed!\n");
            return 0;
        }
        // The first RASCONN structure in the array must contain the RASCONN structure size
        lpRasConn[0].dwSize = sizeof(RASCONN);
        
        // Call RasEnumConnections to enumerate active connections
        dwRet = RasEnumConnections(lpRasConn, &dwCb, &dwConnections);

        // If successful, print the names of the active connections.
        if (ERROR_SUCCESS == dwRet){
            wprintf(L"The following RAS connections are currently active:\n");
            for (DWORD i = 0; i < dwConnections; i++){
                         wprintf(L"%s\n", lpRasConn[i].szEntryName);
                  }
        }
        //Deallocate memory for the connection buffer
        HeapFree(GetProcessHeap(), 0, lpRasConn);
        lpRasConn = NULL;
        return 0;
    }

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

    return 0;
}

RasEnumConnections ne peut pas énumérer une connexion comme étant active tant que RAS n’a pas réussi à se connecter.

Windows Me/98/95 : RasEnumConnections énumère une connexion active dès qu’elle commence à composer.

Le moyen le plus fiable d’énumérer et de case activée pour une connexion active consiste à appeler RasEnumConnections ou RasDial pour obtenir un handle de connexion, puis à appeler RasGetConnectStatus pour déterminer l’état réel de la connexion.

Notes

L’en-tête ras.h définit RasEnumConnections comme un 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 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ras.h
Bibliothèque Rasapi32.lib
DLL Rasapi32.dll

Voir aussi

RASCONN

RasEnumEntries

RasGetConnectStatus

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

Fonctions du service d’accès à distance