RasDialDlgA 함수(rasdlg.h)

RasDialDlg 함수는 지정된 전화 번호부 항목과 로그온한 사용자의 자격 증명을 사용하여 RAS 연결을 설정합니다. 함수는 연결 작업의 상태를 나타내는 대화 상자 스트림을 표시합니다.

구문

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

매개 변수

[in] lpszPhonebook

전화 번호부(PBK) 파일의 전체 경로 및 파일 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL인 경우 함수는 현재 기본 전화 번호부 파일을 사용합니다. 기본 전화 번호부 파일은 전화 접속 네트워킹 대화 상자의 사용자 기본 설정 속성 시트에서 사용자가 선택한 파일입니다.

[in] lpszEntry

전화를 걸 전화 번호부 항목의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

[in] lpszPhoneNumber

전화 번호 매기기 항목에 저장된 번호를 재정의하는 전화 번호를 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL인 경우 RasDialDlg 는 전화 번호부 항목의 숫자를 사용합니다.

[in] lpInfo

추가 입력 및 출력 매개 변수를 지정하는 RASDIALDLG 구조체에 대한 포인터입니다. 이 구조체의 dwSize 멤버는 sizeof(RASDIALDLG)를 지정해야 합니다. 오류가 발생하면 dwError 멤버는 오류 코드를 반환합니다. 그렇지 않으면 0을 반환합니다.

반환 값

함수가 RAS 연결을 설정하는 경우 반환 값은 TRUE입니다. 그렇지 않으면 함수는 FALSE를 반환해야 합니다.

오류가 발생하면 RasDialDlgRASDIALDLG 구조체의 dwError 멤버를 라우팅 및 원격 액세스 오류 코드 또는 Winerror.h의 값으로 설정해야 합니다.

설명

RasDialDlg 함수는 사용자가 다이얼 단추를 선택할 때 기본 전화 접속 네트워킹 대화 상자가 표시되는 대화 상자와 유사한 일련의 대화 상자를 표시합니다. RasDialDlg 함수를 사용하여 기본 전화 번호부 대화 상자를 표시하지 않고 연결 작업에 대한 표준 사용자 인터페이스를 표시합니다. 예를 들어 RAS AutoDial 서비스는 이 함수를 사용하여 원격 주소와 연결된 전화 번호부 항목을 사용하여 연결을 설정합니다.

RasDialDlg 함수는 연결 작업 중에 대화 상자를 표시하여 작업 진행률에 대한 피드백을 사용자에게 제공합니다. 예를 들어 대화 상자는 작업이 전화를 걸 때, 원격 서버에서 사용자의 자격 증명을 인증하는 경우 등을 나타낼 수 있습니다. 대화 상자는 사용자가 작업을 종료할 수 있도록 취소 단추도 제공합니다.

RasDialDlg 는 연결이 설정되거나 사용자가 작업을 취소할 때 를 반환합니다.

다음 샘플 코드는 lpszEntry 변수로 지정된 기본 전화 번호부의 항목에 전화를 겁니다.

참고 이 간단한 샘플은 Windows Vista 이상 버전의 Windows에서 실행하기 위한 것입니다. sizeof(RASENTRY)에 대한 호출은 코드가 실행 중인 운영 체제의 버전에 따라 다른 값을 반환합니다. 이 작업이 적절하게 처리되도록 조치를 취하세요.
 
#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;
}

참고

rasdlg.h 헤더는 RAsDialDlg를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 rasdlg.h
라이브러리 Rasdlg.lib
DLL Rasdlg.dll

추가 정보

RASDIALDLG

RasPhonebookDlg

RAS(원격 액세스 서비스) 개요

원격 액세스 서비스 함수