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 .
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 |
---|---|
|
Se pasó NULL para el parámetro lpdwcbAddresses o lpdwcAddresses . |
|
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
Información general sobre el servicio de acceso remoto (RAS)