Compartilhar via


Função RasDialDlgA (rasdlg.h)

A função RasDialDlg estabelece uma conexão RAS usando uma entrada de lista telefônica especificada e as credenciais do usuário conectado. A função exibe um fluxo de caixas de diálogo que indicam o estado da operação de conexão.

Sintaxe

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

Parâmetros

[in] lpszPhonebook

Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o caminho completo e o nome do arquivo de um PBK (lista telefônica). Se esse parâmetro for NULL, a função usará o arquivo de agendamento telefônico padrão atual. O arquivo de lista telefônica padrão é o selecionado pelo usuário na folha de propriedades preferências do usuário da caixa de diálogo rede discada .

[in] lpszEntry

Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome da entrada da lista telefônica a ser discada.

[in] lpszPhoneNumber

Ponteiro para uma cadeia de caracteres terminada em nulo que especifica um número de telefone que substitui os números armazenados na entrada da lista telefônica. Se esse parâmetro for NULL, RasDialDlg usará os números na entrada da lista telefônica.

[in] lpInfo

Ponteiro para uma estrutura RASDIALDLG que especifica parâmetros adicionais de entrada e saída. O dwSize membro dessa estrutura deve especificar sizeof(RASDIALDLG). Se ocorrer um erro, o membro dwError retornará um código de erro; caso contrário, ele retornará zero.

Valor de retorno

Se a função estabelecer uma conexão RAS, o valor retornado será VERDADEIRO. Caso contrário, a função deverá retornar FALSE .

Se ocorrer um erro, RasDialDlg deverá definir o membro dwError da estrutura RASDIALDLG como um valor de códigos de erro de roteamento e acesso remoto ou Winerror.h.

Observações

A função RasDialDlg exibe uma série de caixas de diálogo semelhantes às caixas de diálogo que a caixa de diálogo principal caixa de diálogo de Rede Discada é exibida quando o usuário seleciona o botão Discar. Use a função RasDialDlg para exibir uma interface do usuário padrão para uma operação de conexão sem apresentar a caixa de diálogo principal da lista telefônica. Por exemplo, o serviço RAS AutoDial usa essa função para estabelecer uma conexão usando a entrada do catálogo telefônico associada a um endereço remoto.

A função RasDialDlg exibe caixas de diálogo durante a operação de conexão para fornecer comentários ao usuário sobre o andamento da operação. Por exemplo, as caixas de diálogo podem indicar quando a operação está discando, quando está autenticando as credenciais do usuário no servidor remoto e assim por diante. As caixas de diálogo também fornecem um botão Cancelar para o usuário encerrar a operação.

RasDialDlg retorna quando a conexão é estabelecida ou quando o usuário cancela a operação.

O código de exemplo a seguir disca a entrada na lista telefônica padrão especificada pela variável lpszEntry.

Observação Este exemplo simples destina-se a ser executado no Windows Vista e versões posteriores do Windows. Lembre-se de que a chamada para sizeof (RASENTRY) retornará um valor diferente dependendo de qual versão do sistema operacional o código está sendo executado. Execute as etapas para garantir que isso seja tratado adequadamente.
 
#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

O cabeçalho rasdlg.h define RasDialDlg como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho rasdlg.h
biblioteca Rasdlg.lib
de DLL Rasdlg.dll

Consulte também

RASDIALDLG

RasPhonebookDlg

Visão geral do RAS (Serviço de Acesso Remoto)

Funções do Serviço de Acesso Remoto