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 .

Nota  

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
ERROR_INVALID_PARAMETER
NULL è stato passato per il parametro lpdwcbAddresses o lpdwcAddresses.
ERROR_BUFFER_TOO_SMALL
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

Vedi anche

RASAUTODIALENTRY

RasGetAutodialAddress

RasSetAutodialAddress

Panoramica del servizio di accesso remoto (RAS)

Funzioni del Servizio di accesso remoto