RasEnumAutodialAddressesA-Funktion (ras.h)

Die RasEnumAutodialAddresses-Funktion gibt eine Liste aller Adressen in der AutoDial-Zuordnungsdatenbank zurück.

Syntax

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

Parameter

[in, out] lppRasAutodialAddresses

Zeiger auf ein Array von Zeichenfolgenzeigern mit zusätzlichem Speicherplatz für die Speicherung der Zeichenfolgen selbst am Ende des Puffers.

Bei der Ausgabe empfängt jede Zeichenfolge den Namen einer Adresse in der AutoDial-Zuordnungsdatenbank.

Wenn lppAddresses für die Eingabe NULL ist, legt RasEnumAutodialAddresses die Parameter lpdwcbAddresses und lpdwcAddresses fest, um die erforderliche Größe in Bytes und die Anzahl der Adresseinträge in der Datenbank anzugeben.

[in, out] lpdwcbRasAutodialAddresses

Zeiger auf eine Variable, die bei der Eingabe die Größe des Puffers in Bytes enthält, der durch den Parameter lpRasEnumAutodialAddressespAddressesAddresses angegeben wird .

Hinweis  

Um die erforderliche Puffergröße zu ermitteln, rufen Sie RasEnumAutodialAddresses auf, wobei lppAddresses auf NULL festgelegt ist. Die Variable, auf die von lpdwcbAddresses verwiesen wird, sollte auf 0 festgelegt werden. Die Funktion gibt die erforderliche Puffergröße in lpdwcbAddresses und einen Fehlercode von ERROR_BUFFER_TOO_SMALL zurück.

 

[out] lpdwcRasAutodialAddresses

Zeiger auf eine Variable, die die Anzahl der im Puffer lppAddresses zurückgegebenen Adresszeichenfolgen empfängt.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der folgenden Fehlercodes oder ein Wert aus Routing- und RAS-Fehlercodes oder Winerror.h.

Wert Bedeutung
ERROR_INVALID_PARAMETER
NULL wurde für den Parameter lpdwcbAddresses oder lpdwcAddresses übergeben.
ERROR_BUFFER_TOO_SMALL
Der Puffer lppAddresses war NULL und lpdwcbAddresses war 0. Die Funktion gibt die erforderliche Puffergröße in der Variablen zurück, auf die von lpdwcbAddresses verwiesen wird.

Hinweise

Der folgende Codebeispielcode verwendet RasEnumAutodialAddresses , um die Datenbank für die automatische Zuordnung aufzulisten.

#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;
}

Hinweis

Der ras.h-Header definiert RasEnumAutodialAddresses als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ras.h
Bibliothek Rasapi32.lib
DLL Rasapi32.dll

Weitere Informationen

RASAUTODIALENTRY

RasGetAutodialAddress

RasSetAutodialAddress

Ras-Dienst (Ras) – Übersicht

Funktionen des RAS-Diensts