Compartir a través de


Función RasDialDlgA (rasdlg.h)

La función RasDialDlg establece una conexión RAS mediante una entrada de libreta de teléfono especificada y las credenciales del usuario que ha iniciado sesión. La función muestra una secuencia de cuadros de diálogo que indican el estado de la operación de conexión.

Sintaxis

BOOL RasDialDlgA(
  [in] LPSTR        lpszPhonebook,
  [in] LPSTR        lpszEntry,
  [in] LPSTR        lpszPhoneNumber,
  [in] LPRASDIALDLG lpInfo
);

Parámetros

[in] lpszPhonebook

Puntero a una cadena terminada en NULL que especifica la ruta de acceso completa y el nombre de archivo de un archivo de libreta de teléfonos (PBK). Si este parámetro es NULL, la función usa el archivo de libreta de teléfono predeterminado actual. El archivo de libreta de teléfonos predeterminado es el seleccionado por el usuario en la hoja de propiedades preferencias de usuario de del cuadro de diálogo Redes de acceso telefónico.

[in] lpszEntry

Puntero a una cadena terminada en null que especifica el nombre de la entrada de la libreta de teléfonos que se va a marcar.

[in] lpszPhoneNumber

Puntero a una cadena terminada en null que especifica un número de teléfono que invalida los números almacenados en la entrada de la libreta de teléfonos. Si este parámetro es null, RasDialDlg usa los números de la entrada de la libreta de teléfonos.

[in] lpInfo

Puntero a una estructura de RASDIALDLG que especifica parámetros de entrada y salida adicionales. El miembro dwSize de esta estructura debe especificar sizeof(RASDIALDLG). Si se produce un error, el miembro dwError devuelve un código de error; de lo contrario, devuelve cero.

Valor devuelto

Si la función establece una conexión RAS, el valor devuelto es TRUE. De lo contrario, la función debe devolver FALSE.

Si se produce un error, rasDialDlg debe establecer el miembro dwError del RASDIALDLG en un valor de Códigos de error de enrutamiento y acceso remoto o Winerror.h.

Observaciones

La función RasDialDlg muestra una serie de cuadros de diálogo similares a los cuadros de diálogo que son similares a los cuadros de diálogo principales cuadro de diálogo Redes de acceso telefónico se muestra cuando el usuario selecciona el botón Marcar. Use la función RasDialDlg para mostrar una interfaz de usuario estándar para una operación de conexión sin presentar el cuadro de diálogo de libreta de teléfonos principal. Por ejemplo, el servicio AutoDial ras usa esta función para establecer una conexión mediante la entrada de la libreta de teléfonos asociada a una dirección remota.

La función RasDialDlg muestra cuadros de diálogo durante la operación de conexión para proporcionar comentarios al usuario sobre el progreso de la operación. Por ejemplo, los cuadros de diálogo pueden indicar cuándo está marcando la operación, cuando autentica las credenciales del usuario en el servidor remoto, etc. Los cuadros de diálogo también proporcionan un botón Cancelar para que el usuario finalice la operación.

RasDialDlg devuelve cuando se establece la conexión o cuando el usuario cancela la operación.

El código de ejemplo siguiente marca la entrada en la libreta de teléfono predeterminada especificada por la variable lpszEntry.

Nota Este ejemplo sencillo está diseñado para ejecutarse en Windows Vista y versiones posteriores de Windows. Tenga en cuenta que la llamada a sizeof(RASENTRY) devolverá un valor diferente en función de la versión del sistema operativo que se ejecute el código. Siga los pasos necesarios para asegurarse de que se controla correctamente.
 
#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

El encabezado rasdlg.h define RasDialDlg como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de rasdlg.h
biblioteca de Rasdlg.lib
DLL de Rasdlg.dll

Consulte también

RASDIALDLG

rasPhonebookDlg

información general del servicio de acceso remoto (RAS)

funciones del servicio de acceso remoto