Funzione RasEnumAutodialAddressesA (ras.h)
La funzione RasEnumAutodialAddresses restituisce un elenco di tutti gli indirizzi nel database di mapping automatico.
Sintassi
DWORD RasEnumAutodialAddressesA(
[in, out] LPSTR *lppRasAutodialAddresses,
[in, out] LPDWORD lpdwcbRasAutodialAddresses,
[out] LPDWORD lpdwcRasAutodialAddresses
);
Parametri
[in, out] lppRasAutodialAddresses
Puntatore a una matrice di puntatori di stringa, con spazio aggiuntivo per l'archiviazione delle stringhe stesse alla fine del buffer.
Nell'output, ogni stringa riceve il nome di un indirizzo nel database di mapping automatico.
Se lppAddresses è NULL in input, RasEnumAutodialAddresses imposta i parametri lpdwcbAddresses e lpdwcAddresses per indicare le dimensioni necessarie, in byte e il numero di voci di indirizzo nel database.
[in, out] lpdwcbRasAutodialAddresses
Puntatore a una variabile che, in input, contiene le dimensioni, in byte, del buffer specificato dal parametro lpRasEnumAutodialAddressespAddresses .
Per determinare le dimensioni del buffer necessarie, chiamare RasEnumAutodialAddresses con lppAddresses impostato su NULL. La variabile a cui punta lpdwcbAddresses deve essere impostata su zero. La funzione restituirà le dimensioni del buffer necessarie in lpdwcbAddresses e un codice di errore di ERROR_BUFFER_TOO_SMALL.
[out] lpdwcRasAutodialAddresses
Puntatore a una variabile che riceve il numero di stringhe di indirizzi restituite nel buffer lppAddresses .
Valore restituito
Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore seguenti o un valore da Routing e codici di errore di accesso remoto o Winerror.h.
Valore | Significato |
---|---|
|
NULL è stato passato per il parametro lpdwcbAddresses o lpdwcAddresses. |
|
Il buffer lppAddresses era NULL e lpdwcbAddresses era zero. La funzione restituisce le dimensioni del buffer necessarie nella variabile a cui punta lpdwcbAddresses. |
Commenti
Il codice di esempio di codice seguente usa RasEnumAutodialAddresses per enumerare il database di mapping automatico.
#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;
}
Nota
L'intestazione ras.h definisce RasEnumAutodialAddresses come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ras.h |
Libreria | Rasapi32.lib |
DLL | Rasapi32.dll |