Função RasEnumAutodialAddressesA (ras.h)
A função RasEnumAutodialAddresses retorna uma lista de todos os endereços no banco de dados de mapeamento do AutoDial.
Sintaxe
DWORD RasEnumAutodialAddressesA(
[in, out] LPSTR *lppRasAutodialAddresses,
[in, out] LPDWORD lpdwcbRasAutodialAddresses,
[out] LPDWORD lpdwcRasAutodialAddresses
);
Parâmetros
[in, out] lppRasAutodialAddresses
Ponteiro para uma matriz de ponteiros de cadeia de caracteres, com espaço adicional para o armazenamento das próprias cadeias de caracteres no final do buffer.
Na saída, cada cadeia de caracteres recebe o nome de um endereço no banco de dados de mapeamento do AutoDial.
Se lppAddresses for NULL na entrada, RasEnumAutodialAddresses definirá os parâmetros lpdwcbAddresses e lpdwcAddresses para indicar o tamanho necessário, em bytes e o número de entradas de endereço no banco de dados.
[in, out] lpdwcbRasAutodialAddresses
Ponteiro para uma variável que, na entrada, contém o tamanho, em bytes, do buffer especificado pelo parâmetro lpRasEnumAutodialAddressespAddresses .
Para determinar o tamanho do buffer necessário, chame RasEnumAutodialAddresses com lppAddresses definido como NULL. A variável apontada por lpdwcbAddresses deve ser definida como zero. A função retornará o tamanho do buffer necessário em lpdwcbAddresses e um código de erro de ERROR_BUFFER_TOO_SMALL.
[out] lpdwcRasAutodialAddresses
Ponteiro para uma variável que recebe o número de cadeias de caracteres de endereço retornadas no buffer lppAddresses .
Retornar valor
Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.
Se a função falhar, o valor retornado será um dos seguintes códigos de erro ou um valor de Códigos de Erro de Roteamento e Acesso Remoto ou Winerror.h.
Valor | Significado |
---|---|
|
NULL foi passado para o parâmetro lpdwcbAddresses ou lpdwcAddresses . |
|
O buffer lppAddresses era NULL e lpdwcbAddresses era zero. A função retorna o tamanho do buffer necessário na variável apontada por lpdwcbAddresses. |
Comentários
O código de exemplo a seguir usa RasEnumAutodialAddresses para enumerar o banco de dados de mapeamento automático.
#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;
}
Observação
O cabeçalho ras.h define RasEnumAutodialAddresses como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ras.h |
Biblioteca | Rasapi32.lib |
DLL | Rasapi32.dll |