RasDialDlgA-Funktion (rasdlg.h)
Die RasDialDlg Funktion stellt eine RAS-Verbindung mithilfe eines angegebenen Telefonbucheintrags und der Anmeldeinformationen des angemeldeten Benutzers her. Die Funktion zeigt einen Datenstrom von Dialogfeldern an, die den Status des Verbindungsvorgangs angeben.
Syntax
BOOL RasDialDlgA(
[in] LPSTR lpszPhonebook,
[in] LPSTR lpszEntry,
[in] LPSTR lpszPhoneNumber,
[in] LPRASDIALDLG lpInfo
);
Parameter
[in] lpszPhonebook
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den vollständigen Pfad und Dateinamen einer PbK-Datei (Phone-Book) angibt. Wenn dieser Parameter NULL-ist, verwendet die Funktion die aktuelle Standarddatei des Telefonbuchs. Die Standardmäßige Telefonbuchdatei ist die vom Benutzer im Eigenschaftenblatt Benutzereinstellungen Eigenschaftenblatt des Dialogfelds DFÜ-Netzwerk ausgewählt.
[in] lpszEntry
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den Namen des zu wählenden Telefonbucheintrags angibt.
[in] lpszPhoneNumber
Zeiger auf eine mit Null beendete Zeichenfolge, die eine Telefonnummer angibt, die die im Telefonbucheintrag gespeicherten Nummern überschreibt. Wenn dieser Parameter NULL-ist, verwendet RasDialDlg die Nummern im Telefonbucheintrag.
[in] lpInfo
Zeiger auf eine RASDIALDLG- Struktur, die zusätzliche Eingabe- und Ausgabeparameter angibt. Das dwSize Mitglied dieser Struktur muss die Größe angeben(RASDIALDLG). Wenn ein Fehler auftritt, gibt das dwError Member einen Fehlercode zurück. andernfalls wird Null zurückgegeben.
Rückgabewert
Wenn die Funktion eine RAS-Verbindung herstellt, ist der Rückgabewert TRUE. Andernfalls sollte die Funktion FALSE-zurückgeben.
Wenn ein Fehler auftritt, sollte RasDialDlg das dwError- Mitglied der RASDIALDLG- Struktur auf einen Wert aus Routing- und Remotezugriffsfehlercodes oder Winerror.h festlegen.
Bemerkungen
Die RasDialDlg--Funktion zeigt eine Reihe von Dialogfeldern an, die den Dialogfeldern ähnlich sind, die das Hauptdialogfeld DFÜ-Netzwerk angezeigt wird, wenn der Benutzer die Schaltfläche Dial auswählt. Verwenden Sie die RasDialDlg--Funktion, um eine Standardbenutzeroberfläche für einen Verbindungsvorgang anzuzeigen, ohne das Hauptdialogfeld des Telefonbuchs darzustellen. Beispielsweise verwendet der RAS-AutoDialdienst diese Funktion, um eine Verbindung mithilfe des Telefonbucheintrags herzustellen, der einer Remoteadresse zugeordnet ist.
Die RasDialDlg Funktion zeigt Dialogfelder während des Verbindungsvorgangs an, um dem Benutzer Feedback zum Fortschritt des Vorgangs zu geben. Beispielsweise können die Dialogfelder angeben, wann der Vorgang gewählt wird, wenn die Anmeldeinformationen des Benutzers auf dem Remoteserver authentifiziert werden usw. Die Dialogfelder stellen außerdem eine schaltfläche Abbrechen bereit, mit der der Benutzer den Vorgang beenden kann.
RasDialDlg gibt zurück, wenn die Verbindung hergestellt wird, oder wenn der Benutzer den Vorgang abbricht.
Der folgende Beispielcode wählt den Eintrag im Standardtelefonbuch, das durch die Variable lpszEntryangegeben wird.
#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "rasdlg.h"
#include <tchar.h>
#include "strsafe.h"
#define PHONE_NUMBER_LENGTH 7
#define DEVICE_NAME_LENGTH 5
#define DEVICE_TYPE_LENGTH 5
DWORD __cdecl wmain(){
DWORD dwError = ERROR_SUCCESS;
BOOL nRet = TRUE;
LPTSTR lpszEntry = L"EntryName";
LPTSTR lpszphonenumber = L"5555555";
LPTSTR lpszdevicename = L"Modem";
LPTSTR lpszdevicetype = RASDT_Modem;
// Allocate heap memory and initialize RASENTRY structure
LPRASENTRY lpentry = (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASENTRY));
// Allocate heap memory and initialize RASDIALDLG structure
LPRASDIALDLG lpInfo = (LPRASDIALDLG) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RASDIALDLG));
if (lpentry == NULL || lpInfo == NULL){
wprintf(L"HeapAlloc failed");
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// The RASDIALDLG and RASENTRY dwSize members have to be initialized or the RasDialDlg()
// RasSetEntryProperties() APIs will fail below.
lpInfo->dwSize = sizeof(RASDIALDLG);
lpentry->dwSize = sizeof(RASENTRY);
lpentry->dwFramingProtocol = RASFP_Ppp;
lpentry->dwfOptions = 0;
lpentry->dwType = RASFP_Ppp;
dwError |= StringCchCopyN(lpentry->szLocalPhoneNumber, RAS_MaxPhoneNumber, lpszphonenumber, PHONE_NUMBER_LENGTH);
dwError |= StringCchCopyN(lpentry->szDeviceName, RAS_MaxDeviceName, lpszdevicename, DEVICE_NAME_LENGTH);
dwError |= StringCchCopyN(lpentry->szDeviceType, RAS_MaxDeviceType, lpszdevicetype, DEVICE_TYPE_LENGTH);
if (dwError != S_OK){
wprintf(L"Structure initialization failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Validate the new entry's name
dwError = RasValidateEntryName(NULL, lpszEntry);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasValidateEntryName failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Create and set the new entry's properties
dwError = RasSetEntryProperties(NULL, lpszEntry, lpentry, lpentry->dwSize, NULL, 0);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasSetEntryProperties failed: Error = %d\n", dwError);
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
// Connect using the new entry
nRet = RasDialDlg(NULL, lpszEntry, NULL, lpInfo);
if (nRet != TRUE){
wprintf(L"RasDialDlg failed: Error = %d\n", lpInfo->dwError);
}
// Clean up: delete the new entry
dwError = RasDeleteEntry(NULL, lpszEntry);
if (dwError != ERROR_SUCCESS){
wprintf(L"RasDeleteEntry failed: Error = %d\n", dwError);
}
HeapFree(GetProcessHeap(), 0, lpentry);
HeapFree(GetProcessHeap(), 0, lpInfo);
return 0;
}
Anmerkung
Der rasdlg.h-Header definiert RasDialDlg 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- | rasdlg.h |
Library | Rasdlg.lib |
DLL- | Rasdlg.dll |
Siehe auch
übersicht über Ras(Remote Access Service)