RAS 상세 정보


1. RAS란 무엇인가?답: 마이크로소프트의 모든 Win d o ws 플랫폼에는 RAS 클라이언트가 있습니다. 이것은 우리가 자신의 컴퓨터를 다른 지역의 원격 컴퓨터(특색은 원격 액세스 서버 구성 요소)와 연결할 수 있도록 합니다. 일반적인 상황에서 RAS 클라이언트는 전화선에 연결된 모뎀을 이용하여 전화를 거는 방식으로 원격 컴퓨터를 호출합니다.그래서 때때로 RAS 클라이언트는'다이얼 네트워크 (DUN) 클라이언트'라고 부른다.서버는 DUN 연결을 기다리는 서비스가 있어야 한다. RAS 클라이언트와 서버 간의 연결이 구축된 후에 네트워크 프로토콜 창고(사용된 프레임 프로토콜과 관련)는 이 RAS를 통해 연결되고 원격 컴퓨터와 통신한다. 마치 LAN을 통해 연결된 것과 같다.물론 오늘날 많은 모뎀의 데이터 통신 속도는 직접적인 LAN 연결보다 현저히 느리다.RAS는 전화번호부 항목에서 사용할 수 있는 옵션을 연결하여 검증을 거친 후에 RAS는 자동으로 한 기계에 들어가 한 도메인에 로그인할 수 있다.2.RAS 오류 인쇄?Raserror.h는 상당히 많은 미리 정의된 오류 코드를 열거했다.이 파일에서 오류 설명 문자열을 발견할 수 있습니다. 이 문자열은 RAS에 사용되는 각 오류 코드와 연결되어 있습니다.RasGetErrorString 3.플랫폼 호환성?RAS 함수에 사용되는 일부 데이터 구조에서는 WINVER가 정의한 값에 따라 별도의 데이터 필드를 사용하거나 사용하지 않습니다.그래서 반드시 현재의 WINVER를 정의해야 한다. 그렇지 않으면 실패해서 632로 돌아가 targetver로 바로 가야 한다.예를 들어 XP:/없음 #define WINVER 0x0501
#ifndef WINVER
#define WINVER 0x0501
#endif 

 
4. 구체적인 함수 소개: (1)
DWORD RasDial(
  __in          LPRASDIALEXTENSIONS lpRasDialExtensions,
  __in          LPCTSTR lpszPhonebook,
  __in          LPRASDIALPARAMS lpRasDialParams,
  __in          DWORD dwNotifierType,
  __in          LPVOID lpvNotifier,
  __in          LPHRASCONN lphRasConn
);

 
lpRasDialExtensions: 매개 변수는 선택할 수 있는 바늘로 RASDIALEXTENSIONS 구조를 가리킨다. 이 구조가 있으면 응용 프로그램은RasDial 함수의 확장 기능을 사용할 수 있다. 무시할 수 있다. NULLpszPhonebook으로 설정한다. 전화번호부 파일을 식별하는 데 사용된다.NULL로 설정하면 현재 기본 전화번호부 파일인 lpRasDialParams를 사용합니다. 다이얼과 사용자 인증 매개 변수인 dwNotifier Type, lpvNotifier: 동기화 가능합니까 비동기화 가능합니까?lphRasConn:
다음은 이 함수에 대한 내부 구조 해석을 계속합니다. 첫 번째 매개 변수인 lpRasDialExtensions에 대응하는 구조체:
typedef struct tagRASDIALEXTENSIONS { 
  DWORD     dwSize;
  DWORD     dwfOptions;
  HWND      hwndParent;
  ULONG_PTR reserved;
#if (WINVER >= 0x500)
  ULONG_PTR reserved1;
  RASEAPINFO RasEapInfo;
#endif
} RASDIALEXTENSIONS

 
dwSize: RASDIALEXTENSIONS 구조의 길이(바이트로 계산)로 설정해야 합니다.dwfOptions: RasDial 확장 기능을 사용하기 위해 비트 플래그를 설정할 수 있습니다. 다음과 같습니다: RDEOPT_UsePrefixSuffix: RasDial에 지정된 전화 접속 장치와 연관된 접두사 및 접두사 RDEOPT_ 사용PausedStates: RasDial이 일시 중지 상태로 들어갈 수 있도록 하여 사용자는 로그인을 다시 시도하고 비밀번호를 변경하며 다이얼 백 번호를 설정할 수 있습니다 RDEOPT_IgnoreModemSpeaker: RasDial로 하여금 RAS 전화번호부의 모뎀 스피커 설정 RDEOPT_ 무시SetModemSpeaker: RDEOPT_가 설정된 경우IgnoreModemSpeaker 로고, 그러면 이 로고를 이용하여 Modem 스피커 RDEOPT_IgnoreSoftwareCompression: RasDial 소프트웨어 압축 설정 무시 RDEOPT_SetSoftwareCompression: RDEOPT_ 설정IgnoreSoftwareCompression 플래그를 사용하면 소프트웨어 압축 RDEOPT_PauseOnScript: RasDialDlg 내부용으로 제공됩니다.이 플래그를 설정할 수 없습니다. RDEOPT_UseCustomScripting:2000/NT는 RDEOPT_를 지원하지 않습니다.CustomDial: NT는 hwndParent: 아니요, NULL reserved로 설정해야 합니다: 아니요, 0 reserved1: 아니요, 0 RasEap Info: NT는 지원되지 않습니다.
두 번째 파라미터: 전화번호부 파일: 전화번호부는 RASENTRY 구조의 집합에 불과하다. 이런 구조에는 전화번호, 데이터 속도, 사용자 신분 검증 정보와 다른 연결 정보가 포함되어 있다. 2000/NT 플랫폼에서 전화번호부의 확장명은 일반적이다.PBK 파일의 구체적인 구조는 윈도우 네트워크 프로그래밍 16장을 참조하십시오.
세 번째 매개변수:
typedef struct _RASDIALPARAMS { 
  DWORD     dwSize; 
  TCHAR     szEntryName[RAS_MaxEntryName + 1]; 
  TCHAR     szPhoneNumber[RAS_MaxPhoneNumber + 1]; 
  TCHAR     szCallbackNumber[RAS_MaxCallbackNumber + 1]; 
  TCHAR     szUserName[UNLEN + 1]; 
  TCHAR     szPassword[PWLEN + 1]; 
  TCHAR     szDomain[DNLEN + 1] ; 
#if (WINVER >= 0x401)
  DWORD     dwSubEntry;
  ULONG_PTR dwCallbackId;
#endif
} RASDIALPARAMS;

 
dwSize: RASDIALPARAMS로 설정해야 합니다.구조의 길이(바이트로 계산).szEntryName: 전화번호부 항목을 표시할 수 있는 문자열
그리고 다음 매개 변수인 szPhoneNumber에 따라 szPhoneNumber를 연결합니다. 하나의 문자열은 하나의 전화번호를 대표합니다. 이 번호는 szEntryName 필드에 지정한 전화번호부 항목에 포함된 전화번호 szCallbackNumber보다 우선합니다. 전화번호를 지정할 수 있습니다. RAS 서버는 이 번호에 따라 다시 전화를 걸 수 있습니다.만약 RAS 서버가 다이얼 백 번호를 허용한다면, 그것은 원래의 연결을 끊고, 당신이 지정한 다이얼 백 번호를 이용해서 다이얼 백 한다.이 특성은 매우 좋다. 왜냐하면 그것이 있기 때문이다
서버에서 연결된 사용자가 어디에서 왔는지 알 수 있습니다.szUserName: 하나의 문자열, RAS 서버에 있는 사용자가 인증을 할 때 사용하는 로그인 이름 szPassword: 하나의 문자열, R A S 서버에 있는 사용자가 인증을 할 때 사용하는 비밀번호 szDomain: 선택할 수 있습니다.최초의 전화번호부 항목을 지정하여 RAS 다중 링크 연결dwCallbackId를 호출할 수 있습니다. 프로그램이 정의한 값을 R a s D i a l F u n c 2 다이얼 함수에 전송할 수 있습니다.
네 번째 다섯 번째 매개 변수: lpvNotifier 매개 변수가 NULL로 설정되면 RasDial은 동기화 모드로 설정됩니다.dwNotifierType 매개변수는 무시됩니다.RasDial을 동기화하는 것은 이 함수를 사용하는 가장 간단한 작용이다.동기화 모드에서는 연결을 감시할 수 없습니다. 만약 lpvNotifier가
매개 변수가 NULL이 아니면 비동기 모드로 들어가서 연결을 하는 동시에 함수 호출이 바로 되돌아온다는 것을 의미합니다.연결 프로세스를 모니터링할 수 있는 dwNotifierType: 0: lpvNotifier 매개 변수는 RasDialFunc 함수 바늘을 사용하여 연결 이벤트 관리 1: lpvNotifier 매개 변수는 RasDialFunc1 함수 바늘을 이용하여 연결 이벤트 관리 2: lpvNotifier 매개 변수는 RasDialFunc2 함수 바늘을 이용하여 연결 이벤트 관리 0xFFFFFFF: lpvNotifier 매개 변수는 RasDial을 연결 이벤트 기간 동안다음 세 가지 함수로 창 메시지를 보냅니다.
void CALLBACK RasDialFunc(
  [in]                 UINT unMsg,
  [in]                 RASCONNSTATE rasconnstate,
  [in]                 DWORD dwError
);

unMsg: WM일 수 있음_RASDIALEVENT rasconnstate: RasDial 함수를 수신하면 발생할 연결 활동: 실행, 일시 중지 및 중단dwError: RAS 오류 코드
void CALLBACK RasDialFunc1(
  [in]                 HRASCONN hrasconn,
  [in]                 UINT unMsg,
  [in]                 RASCONNSTATE rascs,
  [in]                 DWORD dwError,
  [in]                 DWORD dwExtendedError
);

 
hrasconn: 연결을 가리키는 핸들 dwExtendedError: 확장 오류 정보
DWORD CALLBACK RasDialFunc2(
  [in]                 DWORD dwCallbackId,
  [in]                 DWORD dwSubEntry,
  [in]                 HRASCONN hrasconn,
  [in]                 UINT unMsg,
  [in]                 RASCONNSTATE rascs,
  [in]                 DWORD dwError,
  [in]                 DWORD dwExtendedError
);

dwCallbackId: 프로그램이 정의한 값을 포함하고 있습니다. 이 값은 처음에 RASDIALPARAMS에 설치되었습니다.구조의dwCallbackId 필드의dwSubEntry: 하위 항목 전화번호부 인덱스를 수신합니다. 이 인덱스는RasDialFunc2 함수를 다시 조정합니다.
(2) 이벤트 알림 함수
DWORD RasConnectionNotification(
  __in          HRASCONN hrasconn,
  __in          HANDLE hEvent,
  __in          DWORD dwFlags
);


hrasconn:RasDial이 반환하는 연결 핸들, 예를 들어 INVALID_HANDLE_VALUE(HRASCONN으로 강제 변환) hEvent:CreateEvent 생성 dwFlags: RASCN_연결: hrasconn이 INVALID인 경우 _HANDLE_VALUE, 모든 RAS 연결에서 발생하는 이벤트 RASCN_분리: hrasconn이 INVALID인 경우 _HANDLE_VALUE, RAS 중단이 발생하면 RASCN_BandwidthAdded: 다중 링크 연결에서 하위 항목 연결이 이벤트를 발생시킵니다. RASCN_BandwidthRemoved: 다중 링크 연결에서 하위 항목이 연결을 취소할 때 이 이벤트를 촉발합니다
(3)
DWORD RasHangUp(
  __in          HRASCONN hrasconn
);

hrasconn:RasDial이 되돌아오는 연결 핸들 주의: 연결은 모뎀 포트를 사용할 때 연결이 꺼지면 이 포트를 다시 설정하는 데 시간이 걸립니다.따라서 포트 연결이 완전히 꺼질 때까지 계속 기다려야 한다.이렇게 하려면 자신의 연결을 다시 설정할 때 R asGetConnectionStatus를 호출하여 연결이 완전히 닫혔는지 판단할 수 있습니다.
(4)
DWORD RasGetConnectStatus(
  __in          HRASCONN hrasconn,
  __in_out      LPRASCONNSTATUS lprasconnstatus
);

 
hrasconn:RasDial 되돌아오는 연결 핸들 lprasconnstatus: 현재 연결 상태 얻기
typedef struct _RASCONNSTATUS { 
  DWORD         dwSize; 
  RASCONNSTATE  rasconnstate; 
  DWORD         dwError; 
  TCHAR         szDeviceType[RAS_MaxDeviceType + 1]; 
  TCHAR         szDeviceName[RAS_MaxDeviceName + 1];
#if (WINVER >= 0x401)
  TCHAR        szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
#endif // (WINVER >= 0x401)
} RASCONNSTATUS;

 
dwSize: RASCONNSTATUS 구조의 길이(바이트로 계산)로 설정해야 합니다.rasconnstate: RAS 연결 활성 상태dwError: RasGetConnectStatus가 0으로 되돌아오지 않으면 구체적인 R A S 오류 코드를 가져옵니다szDeviceType: 연결에 사용되는 장치 형식을 나타내는 문자열을 가져옵니다szDeviceName: 현재 장치 이름을 가져옵니다szPhoneNumber: 전화번호, 예를 들어 *99# 같은 문자열
(5) R A S 기능이 있는 모든 장치 이름 및 유형 얻기
DWORD RasEnumDevices(
  __in          LPRASDEVINFO lpRasDevInfo,
  __in_out      LPDWORD lpcb,
  __out         LPDWORD lpcDevices
);

 
(6) 이름의 형식이 정확한지 전화번호부에 포함되었는지 판단
DWORD RasValidateEntryName(
  __in          LPCTSTR lpszPhonebook,
  __in          LPCTSTR lpszEntry
);

lpszPhonebook: 전화번호부 파일의 경로를 식별하는 데 사용됩니다.NULL로 설정하면 현재 기본 전화번호부 파일 lpszEntry: 전화번호부에 이 이름이 없지만 형식이 틀리지 않을 때 ERROR_SUCCESS.이름 형식이 틀리면 이 함수는 실패합니다. ERROR_INVALIDNAME; 전화번호부에 이 이름이 있으면 ERROR_ALREAD_YEXIST
(7) RAS는 프로그램을 통해 전화번호부 RASENTRY 구조를 관리할 수 있는 네 가지 함수가 있다.그것들은 RasSet Entry, RasGet Entry Properties, RasRename Entry, Ras Delete Entry입니다.새 항목을 만들거나 기존 항목을 수정하려면 RasSetEntryProperties 함수를 사용합니다
(8) RasGetEntryDialParams와 RasSetEntryDialParams 함수로 구체적인 전화번호부 항목과 관련된 사용자 안전 증빙서류를 관리할 수 있다
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기