Funzione RasDialDlgA (rasdlg.h)
La funzione RasDialDlg stabilisce una connessione RAS usando una voce della rubrica telefonica specificata e le credenziali dell'utente connesso. La funzione visualizza un flusso di finestre di dialogo che indicano lo stato dell'operazione di connessione.
Sintassi
BOOL RasDialDlgA(
[in] LPSTR lpszPhonebook,
[in] LPSTR lpszEntry,
[in] LPSTR lpszPhoneNumber,
[in] LPRASDIALDLG lpInfo
);
Parametri
[in] lpszPhonebook
Puntatore a una stringa con terminazione null che specifica il percorso completo e il nome file di un file PBK (Phone Book). Se questo parametro è NULL, la funzione usa il file di rubrica telefonico predefinito corrente. Il file di rubrica telefonico predefinito è quello selezionato dall'utente nella finestra di proprietà Preferenze utente della finestra di dialogo Rete remota .
[in] lpszEntry
Puntatore a una stringa con terminazione null che specifica il nome della voce della rubrica telefonica da comporre.
[in] lpszPhoneNumber
Puntatore a una stringa con terminazione null che specifica un numero di telefono che esegue l'override dei numeri archiviati nella voce della rubrica telefonica. Se questo parametro è NULL, RasDialDlg usa i numeri nella voce della rubrica telefonica.
[in] lpInfo
Puntatore a una struttura RASDIALDLG che specifica parametri di input e output aggiuntivi. Il membro dwSize di questa struttura deve specificare sizeof(RASDIALDLG). Se si verifica un errore, il membro dwError restituisce un codice di errore; in caso contrario, restituisce zero.
Valore restituito
Se la funzione stabilisce una connessione RAS, il valore restituito è TRUE. In caso contrario, la funzione deve restituire FALSE.
Se si verifica un errore, RasDialDlg deve impostare il membro dwError della struttura RASDIALDLG su un valore da Routing e Codici di errore di accesso remoto o Winerror.h.
Commenti
La funzione RasDialDlg visualizza una serie di finestre di dialogo simili alle finestre di dialogo nella finestra di dialogo della finestra di dialogo Rete remota principale visualizzata quando l'utente seleziona il pulsante Dial . Usare la funzione RasDialDlg per visualizzare un'interfaccia utente standard per un'operazione di connessione senza presentare la finestra di dialogo principale della rubrica telefonica. Ad esempio, il servizio AutoDial RAS usa questa funzione per stabilire una connessione usando la voce della rubrica telefonica associata a un indirizzo remoto.
La funzione RasDialDlg visualizza le finestre di dialogo durante l'operazione di connessione per fornire commenti e suggerimenti all'utente sullo stato di avanzamento dell'operazione. Ad esempio, le finestre di dialogo potrebbero indicare quando l'operazione è chiamata, quando esegue l'autenticazione delle credenziali dell'utente nel server remoto e così via. Le finestre di dialogo forniscono anche un pulsante Annulla per l'utente per terminare l'operazione.
RasDialDlg restituisce quando viene stabilita la connessione o quando l'utente annulla l'operazione.
Il codice di esempio seguente chiama la voce nella rubrica telefonica predefinita specificata dalla variabile lpszEntry.
#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;
}
Nota
L'intestazione rasdlg.h definisce RasDialDlg come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | rasdlg.h |
Libreria | Rasdlg.lib |
DLL | Rasdlg.dll |