现在的位置: 首页 > 综合 > 正文

RAS SDK部分翻译

2013年10月09日 ⁄ 综合 ⁄ 共 9171字 ⁄ 字号 评论关闭

Remote Access Service(RAS)
   RAS 让用户能够在远程访问一个或多个RAS服务器,就像直接连到了计算机网络.

About Remote Access Service

   Microsoft Windows 能使RAS客户应用程序执行如下功能:
   1.显示任何RAS通用对话框.包括主要的Dial-Up Networking对话框,Dial-Up Networking Monitor
    属性页,和其他对话框用来创建,编辑,复制,或拨号
   
   2.通过使用对话框或低级拨号函数来开始和停止RAS连接操作。
 
   3.通过通用对话框或低级phone-book函数来创建,编辑,复制 phone-book条目

   4.与RAS自动拨号数据库中的内容一起使用,这个数据库映射了网络地址到phone-book的条目,这些条   目能和一个网络地址建立连接
  
   5.取得RAS信息,包括存在的RAS连接信息,本机上RAS兼容设备的配置信息和当一个RAS连接开始或结   束的通知消息

  Windows NT 版本4.0同时也提供RAS服务器的管理,第三方的对RAS服务器的安全性的扩展和连接管理。
  windows 95  没有提供.

RAS Common Dialog Boxes

Windows NT版本4.0提供了一个函数集合,用来显示系统提供的RAS对话框。这些函数使得应用程序显示一个熟悉的用户接口以便让他们执行RAS任务,如建立和监视连接,或处理phone-book条目。Windows95没有支持。

RasPhonebookDlg函数显示Dial-Up Networking 对话框。使用这个对话框,用户可以拨号,编辑,或删除一个选中的phone-book条目,创建一个新的phone-book条目,或指定用户的选择。这个函数使用RASPBDLG结果作为指定的附加输入输出参数.例如,你能够设置这结构的成员来改变对话框的屏幕上的显示位置,你也可以使用这个结构来指定一个RasPBDlgFunc的回调函数,这个函数来接受用户活动通知消息当对话框打开的时候.例如,RAS调用你的RasPBDlgFunc函数如果你在拨号,编辑,或创建,或删除一个phone-book项目。

你可以使用RasDialDlg函数开始一个RAS连接操作而不通过显示主Dial-Up-Networking 对话框。使用RasDialDlg,你能指定一个电话号码或phone-book中的项目来进行拨号。这个函数显示一串对话框,他们包括连接的状态。RasDialDlg使用RASDIALDLG结构指定附加信息,例如对话框的位置,和phone-book的子项目的调用。

你可以调用RasEntryDlg函数来显示一个属性页,用来创建,编辑,复制一个phone-book 项目.RasEntryDlg使用一个RASENTRYDLG结构作为附加信息的输入输出,例如对话框的位置,和显示在最上面的属性页。

RAS Connection Operations

Windows NT版本4.0使用RasPhonebookDlg 和 RasDialDlg函数来显示内建的用户接口来开始RAS连接操作。多大多数应用程序来说,这是一个使用RAS的好的开始。Windows 95没有支持。

下面的部分来描述使用低级函数建立RAS连接.这些函数在Windows NT 和Windows 95 上都可以使用。

一个RAS客户应用程序使用RasDial函数来建立到服务器的连接。RasDial函数开始连接操作,这个操作然后又由Remote Access Connection Manager来执行。

Remote Access Connection Manager是一个服务,他来处理建立连接的细节。他同时也提供客户在建立连接时的状态。Remote Access Connection Manager 自动开始当应用程序载入RASAPI32.DLL时。

当开始连接时,RasDial指定以下信息:
1.连接信息,他是Remote Access Connection Manager需要的用来建立连接。
2.一个可选的通知消息处理器,他用来接受建立连接中的进程通知消息。如果RasDial指定一个通知消息处理器,那么这个调用是异步的,否则是同步的。
3.一个可选的RASDIALEXTENSIONS结构来激活或禁止对RasDial的扩展.这些扩展让RAS客户直接设置modem的配置,来控制RAS是否使用前缀和后缀在电话本项目中,以及支持暂停在连接操作时.

Synchronous Operations
当RasDial以同步方式调用时,这个函数直到连接建立或错误发生时才返回.同步模式提供了一种简单的方式让RAS客户建立一个连接.客户能简单的调用RASDIAL,等待函数返回,然后调用RasGetConnecStatus函数来决定连接操作是否成功.一旦操作成功,客户程序要决定能否终止而不打断连接.如果错误发生,程序必须关闭连接操作在终止之前.

 同步的缺点是客户不能接受进程通知消息,当没有进程通知消息时,同步客户可以使用一个独立的线程来调用RasGetConnectStatus检测和显示当前状态.然而,对于想接受进程信息的客户来数,最好的技术是异步调用.

Asynchronous Operations
当RasDial被异步调用时,函数立即返回.在异步模式中,RasDial调用必须要指定通知消息处理器,他是由Remote Access Connection Manager使用来通知客户什么时候连接操作改变状态,什么时候错误发生.

通知消息处理器能使一个窗口来接受消息,或是一个RasDialFunc,RasDialFunc1,或RasDialFunc2回调函数,Remote Access Connection Manager在调用RadDial的线程的上下文中产生消息.由于这个原因,调用线程不能终止直到连接操作完成,或错误产生.当在异步模式下时,应用程序能安全的终止当连接一旦建立,但是他必须关闭连接操作如果有错误时.

 

Phonebook Files and Connection Information

一个RasDial调用必须指定由Remote Access Connection Manager使用的信息.一般来说,RasDial通过使用指定的 phone-book项目来提供连接信息.连接信息在phonebook项目中,包含有电话号,bps速率,用户认证信息和其他连接信息.

一个RAS客户使用RasDial函数的参数来指定一个电话本文件和在文件中的项目.lpszPhonebookPath参数能指定电话本文件的名字,或者是NULL用来包含默认的电话本文件.lpRasDialParams参数指向RASDIALPARAMS结构,他用来指定电话本的项目的名字.

为了显示电话本项目的列表,并从中选择一个连接,RAS 客户调用RasEnumEntries函数来枚举在电话本文件中的项目.

为了建立一个连接而不使用电话本项目,RasDial指定一个空的字符串为RASDIALPARAMS:szEntryName。 RASDIALPARAMS.szPhoneNumber 必须包含拨号的电话。在这种情况下,Remote Access Connection Manager 使用第一个可用的猫端口和默认值为其他设置。

User Authentication Information

Remote Access Connection Manager 服务发送一个用户名和密码到RAS服务器上。在这之前他要建立一个连接,远程服务器使用这个信息来认证用户。默认的,Remote Access Connection Manager发送用户名和当前登录的用户密码。RAS客户使用RASDIALPARAMS结构来指定RasDial的不同用户名和密码.

如果远程服务器不能认证,他允许连接操作今人暂停状态来激活RAS 客户收集不同的认证信息.

Other Connection Information

RASDIALPARAMS的成员也能指定如下连接信息:
1.能覆盖在电话本中的电话号码
2.一个回调电话号码,用来让远程服务器调用建立连接
3.远程网络的域名

例如回调号码和域名,RASDIALPARAMS成员或者指示RAS 使用电话本中的信息或者使用数据覆盖电话本中的数据.

一个RAS客户能使用RasDial函数的lpRasDialExtension 参数控制RAS是否使用电话前缀或后缀.

Connection States

在处理连接到远程服务器中,Remote Access Connection Manager 和RAS服务器执行不同的步骤来建立连接.每一步被标志为连接状态.RASCONNSTATE枚举值是相应连接状态的值得集合.

 

Running states   The running states are the parts of the connection operation that RAS handles        automatically, such as connecting to the necessary devices, authenticating the user,       and waiting for a callback from the remote server. Unless an error occurs, the RAS       client need take no action other than to pass the notification on to the user.

Paused states   The paused states occur when the remote server pauses the connection operation to get additional     input from the user. During a paused state, the user can type a callback number, a different user     name and password if the user authentication fails, or a new password if the old one has expired.

Terminal states  The terminal states occur when the connection has been successfully established, the connection     operation has failed, or the connection has been broken by a RasHangUp call.

有好几种机制能让RAS客户决定当前的状态.当RAS 客户异步执行RASDial函数时, 当连接状态变化时,Remote Access Connection Manager 发送进程通知信息给客户的通知消息处理器.另外,客户使用RasGerConnectStatus函数来取得当前连接状态.

 

注:客户进程向RAS服务进程提供信息,然后 RAS服务发送信息给我.连接由RAS完成

Notification Handlers

异步调用RasDial必须使用通知消息处理器.在异步连接操作中,Remote Access Connection Manager 使用通知来给RAS客户提供当前连接状态是否发生了变化或错务发生.

通知消息处理器的动作被分成以下的种类:
1.处理错误
2.提供反馈给用户党连接操作完成时
3.处理暂停状态(注:认证信息不对产生)
4.通知RAS 客户程序连接建立完成

这里有三种通知消息处理器的类型,每种接受同样的基本信息:当前状态,错误代码,他是非0的数

RasDialFunc   A callback function prototype that receives only the current connection state and error code      information.

RasDialFunc1   A callback function prototype that receives the HRASCONN connection handle and extended error      information in addition to the basic information. The connection handle parameter makes RasDialFunc1    useful for client applications that support multiple simultaneous connection operations. This allows    the client to specify the same callback function for all operations, and enables the       callback function to determine which connection is changing states.

Window handle   A window handle to which RAS sends WM_RASDIALEVENT messages containing the current connection state     and error code information. Use this method if your source code must be compale with 16-bit      Windows, because 16-bit Windows does not support either of the callback functions.

Remote Access Connection Manager 挂起连接操作直到处理器返回.所以处理器必须尽快返回除非有错误发生.

RasDial函数不应在处理器中调用,但其他可以(RasGetConnectStatus, RasEnumEntries, RasEnumConnections, RasGetErrorString, and RasHangUp)

Handling RAS Errors

当错误发生时,
Remote Access Connection Manager 调用客户程序的处理器.处理器指示连接状态当错误发生时,一个代码表示一个错误.在这种情况下,处理器调用RasHangUp来结束RAS连接.

RAS 客户程序使用RasGetErrorString 函数来显示错误描述

 

Informational Notifications

连接状态被认为是运行时状态,只有错误发生时才要处理器的行动。运行状态在连接操作中发生,就像连接到必要的设备,认证用户和等待服务器的回调。通知是一个简单的处理报告给客户程序。

客户程序能有选择的将一些信息传给用户。在一些运行时状态,客户程序可能要显示附加信息。例如一个收到RASCS_ConnectDevice通知的处理器通过调用RasGetConncetStatus来取得名字和已连接的设备类型.另一个是当客户收到RASCS_Projected时,当RAS连接工程解析完成时发出这个消息。客户程序调用RasGetPrjectinInfo函数来取得关于工程的附加信息。客户程序使用这些信息来通知用户当网络协议可用时。

你应该避免写一些依靠于特定消息发生顺序的代码,应为可能在不同的平台上。

Completion Notifications

Remote Access Connection Manager 继续处理通知直到连接被完成。这个发生在以下情况:
1.连接建立。处理器收到RASCS_Connected通知.RAS 客户程序能退出而不中断连接.
2.错误发生.处理器收到一个指示错误的消息和连接状态.
3.连接操作中断使用RasHangUp。

Paused States

.......

Callback Connections

.......

Disconnecting
当RAS客户程序开始连接操作 ,RasDial收到HRASCONN句柄来标志连接。如果句柄不是NULL,客户调用RasHangUp来结束连接。如果在连接操作中因错误中断,客户程序必须调用RasHangUp尽管连接没有建立。

应用程序调用RasHangUp后不要立即退出,因为Remote Access Connection Manager需要时间终止连接。的却,应用程序等待直到RasGetConnectStatus函数返回ERROR_INVALID_HANDLE,指示连接已经删除.

RAS客户程序可能需要结束一个连接即使他没有RasDial返回的句柄.例如,调用RasDial的应用程序可能退出了当连接成功建立.
在这种情况下,将要结束连接的程序使用RasEnumConnections 来得到所有的当前连接.对每个连接,RasEnumConnections返回一个RASCONN结构
,其中包含HRASCONN 句柄和电话项目的名字或当连接时指定的电话号码.这些信息来给用户提供一个列表让他们选择要结束的连接.

 

RAS Phone Books
电话本提供了一种标准的方式来收集和指定Remote Access Connection Manager建立连接需要的信息。电话本将一些信息和项目名字关联起来,信息象电话号码,COM端口,和modem设置。每个电话本项目包含建立RAS连接的必要信息。WindowsNT:电话本存在电话本文件中,他们是文本文件,包含项目名和相关信息。RAS创建一个电话本叫做RASPHONE.PBK。用户使用主要的Dial-Up Networking对话框来建立私人的电话本文件。Win32 挡墙不支持创建电话本的函数。一些RAS函数,想RadDial要有一个参数指定电话本文件。如果调用者必指定一个电话本文件,函数使用默认的电话本文件,那是一个由有用户在User Preferences属性页中设置的值。

Windows NT 4.0使用RasPhonebookDlg和RasEntryDlg函数来显示内建的RAS用户接口,他们是用户能处理电话本和电话本项目

Windows 95: Dial-up networking stores phonebook entries in the registry rather than in a phonebook file. Windows 95 does not support personal phone-book files. Windows 95 does not support the functions that display the built-in RAS dialog boxes.

Phone-book Entries
电话本项目包含建立连接的必要信息。用户或管理员能使用Dial-Up Networking对话框来建立和编辑电话本项目。
Windows 95: Windows 95 supports a limited set of the Win32 functions for working with phone-book entries. You can use the RasCreatePhonebookEntry and RasEditPhonebookEntry functions to create or edit a phone-book entry. These functions display a dialog box in which the user can specify information about the phone-book entry. You can use the RasGetEntryDialParams and RasSetEntryDialParams functions to set or retrieve the connection parameters for a phone-book entry. The RasEnumEntries function retrieves an array of RASENTRYNAME structures that contain the phone-book entry names.

Windows NT 4.0支持Windows 95这些函数,同时也增加了一些函数。
RasEntryDlg函数显示一个属性页,它使用户建立,编辑或复制电话本项目。RasCreatePhonebookEntry和RasEditPhonebookEntry 调用RasEntryDlg函数。你使用RasRenameEntry函数来重名命项目或使用RasDeleteEntry来删除项目。RasValidateEntryName决定指定的字符串能否被用作项目名。

你使用RasGetEntryProperties和RasSetEntryProperties来取得和设置关于电话本项目的附加信息.这些函数使用RASENTRY结构.

RasGetCredentials和RasSetCredential取得和设置用户认证信息.使用RASCREDENTIALS结构.

RasGetCountryInfo 取得指定国家的拨号信息.这些函数使用RASCTRYINFO结构.

Subentries and Multilink Connections

.........

RAS AutoDial
Windows NT版本4支持一个自动拨号的特点.Windows NT 3.51和Windows 95不支持.

当企图连接一个网络地址失败时因为主机不能到达,自动拨号的特点是能自动的开始拨号连接.要做到这一点,自动拨号查找查找自己的网络地址数据库来找到建立连接的地址.

自动拨号映射数据到RAS电话本项目.数据库包含ip地址,域名,或NetBIOS名.相关的每个地址在自动拨号的数据库里是一个或多个RASAUTODIALENTR项目.每个项目指定一个电话本项目,他们能被拨号到的地址从TAPI中开始.

自动拨号创建项目在自动拨号数据库里有两种情况:
1.当连接到一个网络地址失败
如果没有地址项目在映射数据库里,计算机不能连接到网络,自动拨号提示用户指定必须的信息来建立一个连接.如果用户提供信息,
并拨号成功,自动拨号保存信息在映射数据库里.

2.当电脑被连到了网络通过RAS
无论什么时候,用户连接到网络地址,自动拨号在数据库里创建一个项目.这个项目映射网络地址到电话本中的项目,他们是被用过的RAS连接

你能使用RasSetAutodialAddress函数来增加一个地址到自动拨号数据库里,删除一个地址,或改变一个地址.
你能使用RasGetAutodialAddress函数来取得与指定网络地址相应的自动拨号项目在自动拨号数据库里。RasEnumAutodialAddress函数返回所有自动拨号数据中的地址.

 

 

 

 

 

抱歉!评论已关闭.