Функция RasEnumAutodialAddressesA (ras.h)
Функция RasEnumAutodialAddresses возвращает список всех адресов в базе данных автоматического сопоставления.
Синтаксис
DWORD RasEnumAutodialAddressesA(
[in, out] LPSTR *lppRasAutodialAddresses,
[in, out] LPDWORD lpdwcbRasAutodialAddresses,
[out] LPDWORD lpdwcRasAutodialAddresses
);
Параметры
[in, out] lppRasAutodialAddresses
Указатель на массив строковых указателей с дополнительным пространством для хранения строк в конце буфера.
В выходных данных каждая строка получает имя адреса в базе данных автодиализации сопоставления.
Если lppAddressesNULL во входных данных, Параметр RasEnumAutodialAddresses задает lpdwcbAddresses и lpdwcAddresses параметры, указывающие требуемый размер, в байтах и количество записей адресов в базе данных.
[in, out] lpdwcbRasAutodialAddresses
Указатель на переменную, содержащую размер буфера в байтах, указанный параметром lpRasEnumAutodialAddressespAddresses.
Чтобы определить требуемый размер буфера, вызовите RasEnumAutodialAddresses с lppAddresses значением NULL. Переменная, на которую указывает lpdwcbAddresses, должна иметь значение нулю. Функция возвращает требуемый размер буфера в lpdwcbAddresses и код ошибки ERROR_BUFFER_TOO_SMALL.
[out] lpdwcRasAutodialAddresses
Указатель на переменную, которая получает количество строк адресов, возвращаемых в буфере lppAddresses.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ERROR_SUCCESS.
Если функция завершается ошибкой, возвращаемое значение является одним из следующих кодов ошибок или значения из кодов ошибок маршрутизации и удаленного доступа или Winerror.h.
Ценность | Значение |
---|---|
|
значение NULL было передано для параметра lpdwcbAddresses или lpdwcAddresses. |
|
Буфер |
Замечания
В следующем примере кода для перечисления базы данных автодиализации используется RasEnumAutodialAddresses.
#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;
}
Заметка
Заголовок ras.h определяет RasEnumAutodialAddresses в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | ras.h |
библиотеки |
Rasapi32.lib |
DLL | Rasapi32.dll |
См. также
Обзор службы удаленного доступа (RAS)