Функция RasEnumAutodialAddressesA (ras.h)
Функция RasEnumAutodialAddresses возвращает список всех адресов в базе данных сопоставления AutoDial.
Синтаксис
DWORD RasEnumAutodialAddressesA(
[in, out] LPSTR *lppRasAutodialAddresses,
[in, out] LPDWORD lpdwcbRasAutodialAddresses,
[out] LPDWORD lpdwcRasAutodialAddresses
);
Параметры
[in, out] lppRasAutodialAddresses
Указатель на массив строковых указателей с дополнительным пространством для хранения самих строк в конце буфера.
В выходных данных каждая строка получает имя адреса в базе данных сопоставления autoDial.
Если для входных данных lppAddresses имеет значение NULL , 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. |
|
Буфер lppAddresses имеет значение NULL , а lpdwcbAddresses — ноль. Функция возвращает требуемый размер буфера в переменной, на которую указывает lpdwcbAddresses. |
Комментарии
В следующем примере кода используется 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 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ras.h |
Библиотека | Rasapi32.lib |
DLL | Rasapi32.dll |