RasEnumDevicesA-Funktion (ras.h)
Die RasEnumDevices Funktion gibt den Namen und Typ aller verfügbaren RAS-fähigen Geräte zurück.
Syntax
DWORD RasEnumDevicesA(
[in] LPRASDEVINFOA unnamedParam1,
[in, out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
Parameter
[in] unnamedParam1
Zeiger auf einen Puffer, der ein Array von RASDEVINFO Strukturen empfängt, eines für jedes RAS-fähige Gerät. Legen Sie vor dem Aufrufen der Funktion den dwSize Member des ersten RASDEVINFO Struktur im Puffer auf "sizeof(RASDEVINFO) fest, um die Version der Struktur zu identifizieren.
[in, out] unnamedParam2
Zeiger auf eine Variable, die bei eingabe die Größe des lpRasDevInfo- Puffers in Byte enthält.
Bei der Ausgabe legt die Funktion diese Variable auf die Anzahl der Bytes fest, die zum Aufzählen der Geräte erforderlich sind.
Um die erforderliche Puffergröße zu ermitteln, rufen Sie RasEnumDevices auf, wobei lpRasDevInfo auf NULL-festgelegt ist. Die Variable, auf die durch lpcb verweist, sollte auf Null festgelegt werden. Die Funktion gibt die erforderliche Puffergröße in lpcb- und einen Fehlercode von ERROR_BUFFER_TOO_SMALLzurück.
[out] unnamedParam3
Zeiger auf eine Variable, die die Anzahl der RASDEVINFO- Strukturen empfängt, die in den lpRasDevInfo Puffer geschrieben wurden.
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 |
---|---|
|
Der lpRasDevInfo Puffer ist nicht groß genug. Der parameter lpcb ist kleiner als der dwSize Member im lpRasDevInfo Parameter, der vor dem Aufrufen der Funktion festgelegt werden soll. Die Funktion gibt die erforderliche Puffergröße in der Variablen zurück, auf die durch lpcbverwiesen wird. |
|
Gibt nicht genügend Arbeitsspeicher an. Der parameter lpRasDevInfo ist nichtNULL, der lpcb Parameter ist nichtNULL- und eine interne Speicherzuweisung fehlgeschlagen. Dies ist möglicherweise auf einen Zustand mit geringem Arbeitsspeicher zurückzuführen. |
|
Gibt einen ungültigen Parameterwert an. Der parameter lpcb ist NULL oder der parameter lpcDevices ist NULL. |
|
Die durch lpRasDevInfo angegebene Adresse oder der Puffer ist ungültig. Das dwSize Member des lpRasDevInfo Parameter entspricht nicht der Größe(RASDEVINFO). |
Bemerkungen
Im folgenden Beispielcode werden die Geräte auf dem aktuellen Computer aufgelistet. Der Code ruft zunächst RasEnumDevices mit einem lpRasDevInfo Parameter von NULL-auf, um die Größe des Puffers abzurufen, der übergeben werden soll. Der Code legt außerdem das dwSize Member des ersten RASDEVINFO Struktur auf größe(RASDEVINFO) fest, um die Version der Struktur anzugeben.
#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "raserror.h"
#pragma comment(lib, "rasapi32.lib")
DWORD __cdecl wmain(){
DWORD dwCb = 0;
DWORD dwRet = ERROR_SUCCESS;
DWORD dwDevices = 0;
LPRASDEVINFO lpRasDevInfo = NULL;
// Call RasEnumDevices with lpRasDevInfo = NULL. dwCb is returned with the required buffer size and
// a return code of ERROR_BUFFER_TOO_SMALL
dwRet = RasEnumDevices(lpRasDevInfo, &dwCb, &dwDevices);
if (dwRet == ERROR_BUFFER_TOO_SMALL){
// Allocate the memory needed for the array of RAS structure(s).
lpRasDevInfo = (LPRASDEVINFO) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
if (lpRasDevInfo == NULL){
wprintf(L"HeapAlloc failed!\n");
return 0;
}
// The first RASDEVINFO structure in the array must contain the structure size
lpRasDevInfo[0].dwSize = sizeof(RASDEVINFO);
// Call RasEnumDevices to enumerate RAS devices
dwRet = RasEnumDevices(lpRasDevInfo, &dwCb, &dwDevices);
// If successful, print the names of the RAS devices
if (ERROR_SUCCESS == dwRet){
wprintf(L"The following RAS devices were found:\n");
for (DWORD i = 0; i < dwDevices; i++){
wprintf(L"%s\n", lpRasDevInfo[i].szDeviceName);
}
}
//Deallocate memory for the connection buffer
HeapFree(GetProcessHeap(), 0, lpRasDevInfo);
lpRasDevInfo = NULL;
return 0;
}
// There was either a problem with RAS or there are no RAS devices to enumerate
if(dwDevices >= 1){
wprintf(L"The operation failed to acquire the buffer size.\n");
}else{
wprintf(L"There were no RAS devices found.\n");
}
return 0;
}
Anmerkung
Der ras.h-Header definiert RasEnumDevices als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch 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
übersicht über Ras(Remote Access Service)