Función RasEnumAutodialAddressesA (ras.h)

La función RasEnumAutodialAddresses devuelve una lista de todas las direcciones de la base de datos de asignación automática.

Sintaxis

DWORD RasEnumAutodialAddressesA(
  [in, out] LPSTR   *lppRasAutodialAddresses,
  [in, out] LPDWORD lpdwcbRasAutodialAddresses,
  [out]     LPDWORD lpdwcRasAutodialAddresses
);

Parámetros

[in, out] lppRasAutodialAddresses

Puntero a una matriz de punteros de cadena, con espacio adicional para el almacenamiento de las propias cadenas al final del búfer.

En la salida, cada cadena recibe el nombre de una dirección en la base de datos de asignación automática.

Si lppAddresses es NULL en la entrada, RasEnumAutodialAddresses establece los parámetros lpdwcbAddresses y lpdwcAddresses para indicar el tamaño necesario, en bytes y el número de entradas de dirección de la base de datos.

[in, out] lpdwcbRasAutodialAddresses

Puntero a una variable que, en la entrada, contiene el tamaño, en bytes, del búfer especificado por el parámetro lpRasEnumAutodialAddressespAddresses .

Nota  

Para determinar el tamaño de búfer necesario, llame a RasEnumAutodialAddresses con lppAddresses establecido en NULL. La variable a la que apunta lpdwcbAddresses debe establecerse en cero. La función devolverá el tamaño de búfer necesario en lpdwcbAddresses y un código de error de ERROR_BUFFER_TOO_SMALL.

 

[out] lpdwcRasAutodialAddresses

Puntero a una variable que recibe el número de cadenas de dirección devueltas en el búfer lppAddresses .

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error o un valor de Enrutamiento y códigos de error de acceso remoto o Winerror.h.

Valor Significado
ERROR_INVALID_PARAMETER
Se pasó NULL para el parámetro lpdwcbAddresses o lpdwcAddresses .
ERROR_BUFFER_TOO_SMALL
El búfer lppAddresses era NULL y lpdwcbAddresses era cero. La función devuelve el tamaño de búfer necesario en la variable a la que apunta lpdwcbAddresses.

Comentarios

El código de ejemplo de código siguiente usa RasEnumAutodialAddresses para enumerar la base de datos de asignación automática.

#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

El encabezado ras.h define RasEnumAutodialAddresses como un alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ras.h
Library Rasapi32.lib
Archivo DLL Rasapi32.dll

Consulte también

RASAUTODIALENTRY

RasGetAutodialAddress

RasSetAutodialAddress

Información general sobre el servicio de acceso remoto (RAS)

Funciones del Servicio de acceso remoto