Freigeben über


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

Zeigen Sie auf ein Array von Zeichenfolgenzeigern, mit zusätzlichem Platz für den Speicher der Zeichenfolgen selbst am Ende des Puffers.

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

Wenn lppAddressesNULL- für eingaben ist, legt RasEnumAutodialAddresses die lpdwcbAddresses und lpdwcAddresses Parameter fest, um die erforderliche Größe, in Byte und die Anzahl der Adresseinträge in der Datenbank anzugeben.

[in, out] lpdwcbRasAutodialAddresses

Zeiger auf eine Variable, die bei eingabe die Größe des durch den lpRasEnumAutodialAddresses Parameter angegebenen Puffers in Byte enthält.

  

Um die erforderliche Puffergröße zu ermitteln, rufen Sie RasEnumAutodialAddresses auf, wobei lppAddresses auf NULL-festgelegt ist. Die Variable, die von lpdwcbAddresses verweist, sollte auf Null festgelegt werden. Die Funktion gibt die erforderliche Puffergröße in lpdwcbAddresses und einen Fehlercode von ERROR_BUFFER_TOO_SMALLzurück.

 

[out] lpdwcRasAutodialAddresses

Zeiger auf eine Variable, die die Anzahl der im lppAddresses Puffer 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 Remotezugriffsfehlercodes oder Winerror.h.

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

Bemerkungen

Der folgende Codebeispielcode verwendet RasEnumAutodialAddresses zum Aufzählen der Autodial-Zuordnungsdatenbank.

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

Anmerkung

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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- ras.h
Library Rasapi32.lib
DLL- Rasapi32.dll

Siehe auch

RASAUTODIALENTRY

RasGetAutodialAddress

RasSetAutodialAddress

übersicht über Ras(Remote Access Service)

Remotezugriffsdienstfunktionen