RasEnumAutodialAddressesA, fonction (ras.h)
La fonction RasEnumAutodialAddresses retourne une liste de toutes les adresses dans la base de données de mappage AutoDial.
Syntaxe
DWORD RasEnumAutodialAddressesA(
[in, out] LPSTR *lppRasAutodialAddresses,
[in, out] LPDWORD lpdwcbRasAutodialAddresses,
[out] LPDWORD lpdwcRasAutodialAddresses
);
Paramètres
[in, out] lppRasAutodialAddresses
Pointeur vers un tableau de pointeurs de chaîne, avec un espace supplémentaire pour le stockage des chaînes elles-mêmes à la fin de la mémoire tampon.
Lors de la sortie, chaque chaîne reçoit le nom d’une adresse dans la base de données de mappage autoDial.
Si lppAddresses a la valeur NULL lors de l’entrée, RasEnumAutodialAddresses définit les paramètres lpdwcbAddresses et lpdwcAddresses pour indiquer la taille requise, en octets, et le nombre d’entrées d’adresse dans la base de données.
[in, out] lpdwcbRasAutodialAddresses
Pointeur vers une variable qui, à l’entrée, contient la taille, en octets, de la mémoire tampon spécifiée par le paramètre lpRasEnumAutodialAddressespAddresses .
Pour déterminer la taille de mémoire tampon requise, appelez RasEnumAutodialAddresses avec lppAddresses défini sur NULL. La variable pointée par lpdwcbAddresses doit être définie sur zéro. La fonction retourne la taille de mémoire tampon requise dans lpdwcbAddresses et un code d’erreur de ERROR_BUFFER_TOO_SMALL.
[out] lpdwcRasAutodialAddresses
Pointeur vers une variable qui reçoit le nombre de chaînes d’adresse retournées dans la mémoire tampon lppAddresses .
Valeur retournée
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 provenant des codes d’erreur de routage et d’accès à distance ou winerror.h.
Valeur | Signification |
---|---|
|
Null a été passé pour le paramètre lpdwcbAddresses ou lpdwcAddresses . |
|
La mémoire tampon lppAddresses était NULL et lpdwcbAddresses était zéro. La fonction retourne la taille de mémoire tampon requise dans la variable pointée par lpdwcbAddresses. |
Remarques
L’exemple de code suivant utilise RasEnumAutodialAddresses pour énumérer la base de données de mappage automatique.
#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "raserror.h"
#include <tchar.h>
DWORD __cdecl wmain(){
DWORD dwBytes = 0;
DWORD dwRet = ERROR_SUCCESS;
DWORD dwAddresses = 0;
LPTSTR * lppAddresses = NULL;
LPCTSTR lpEntryAddress = L"www.microsoft.com";
// Allocate memory for a new Autodial address to add to the mapping database
LPRASAUTODIALENTRY lpentry = (LPRASAUTODIALENTRY) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASAUTODIALENTRY));
lpentry->dwSize = sizeof(RASAUTODIALENTRY);
// Add a (non-functional) address to the Autodial mapping database
// (this ensures RasEnumAutodialAddresses() has something to return)
dwRet = RasSetAutodialAddress(lpEntryAddress, 0, lpentry, lpentry->dwSize, 1);
// Call RasEnumAutodialAddresses() with lppAddresses = NULL. dwBytes is returned with the
// required buffer size and a return code of ERROR_BUFFER_TOO_SMALL
dwRet = RasEnumAutodialAddresses(lppAddresses, &dwBytes, &dwAddresses);
if (dwRet == ERROR_BUFFER_TOO_SMALL){
// Allocate the memory needed for the array of RAS Autodial addresses.
lppAddresses = (LPTSTR *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwBytes);
if (lppAddresses == NULL){
wprintf(L"HeapAlloc failed!\n");
return 0;
}
// Call RasEnumAutodialAddresses() to enumerate all RAS Autodial addresses
dwRet = RasEnumAutodialAddresses(lppAddresses, &dwBytes, &dwAddresses);
// If successful, print the RAS Autodial addresses
if (dwRet == ERROR_SUCCESS){
wprintf(L"The following RAS Autodial addresses were found:\n");
for (DWORD i = 0; i < dwAddresses; i++){
wprintf(L"%s\n", lppAddresses[i]);
}
}
// Remove the address
dwRet = RasSetAutodialAddress(lpEntryAddress, 0, NULL, 0, 0);
//Deallocate memory for the address buffers
HeapFree(GetProcessHeap(), 0, lppAddresses);
HeapFree(GetProcessHeap(), 0, lpentry);
lppAddresses = NULL;
return 0;
}
// There was either a problem with RAS or there are no RAS Autodial addresses to enumerate
if(dwAddresses >= 1){
wprintf(L"The operation failed to acquire the buffer size.\n");
}else{
wprintf(L"There were no RAS Autodial addresses found.\n");
}
// Remove the address
dwRet = RasSetAutodialAddress(lpEntryAddress, 0, NULL, 0, 0);
HeapFree(GetProcessHeap(), 0, lpentry);
return 0;
}
Notes
L’en-tête ras.h définit RasEnumAutodialAddresses en tant qu’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. La combinaison 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 |