RAS安全性DLL验证事务

【勇芳软件工作室】汉化HomePreviousNext

Windows NT RAS服务器调用安全性DLL的RasSecurityDialogBegin功能开始远程用户的身份验证。RAS服务器被阻止,并且在RasSecurityDialogBegin返回之前不能接受任何其他呼叫。因此,RasSecurityDialogBegin应该复制输入参数,创建一个线程来执行身份验证,并尽可能快地返回。

由安全性DLL创建的线程使用RasSecurityDialogSendRasSecurityDialogReceive功能与远程计算机进行通信。这些功能不适用于任何库的静态导入。相反,安全性DLL必须使用LoadLibraryGetProcAddress功能来动态链接到RASMAN.DLL中的这些功能。

在认证事务期间,远程计算机上的RAS连接管理器显示终端窗口。安全DLL的线程调用RasSecurityDialogSend发送消息以在终端窗口中显示。线程然后调用RasSecurityDialogReceive接收远程用户在终端窗口中键入的输入。线程可以进行任何数量的RasSecurityDialogSend呼叫,每个呼叫后跟一个RasSecurityDialogReceive呼叫。每次调用RasSecurityDialogReceive后,线程必须调用其中一个等待功能,例如WaitForSingleObject等待异步发送和接收操作完成。RAS服务器在接收操作完成时或当可选的超时间隔过去时发出事件对象信号。

当线程完成对远程用户的身份验证后,它调用RasSecurityDialogComplete功能。此调用将包含认证事务结果的SECURITY_MESSAGE结构传递给RAS服务器。然后,RAS服务器执行一个清除序列,其中包含对DLL的RasSecurityDialogEnd函数的调用。这给安全DLL提供了执行任何必要的清理的机会。

安全性DLL可以调用RasSecurityDialogGetInfo函数来检索与认证事务关联的端口的信息。RasSecurityDialogGetInfo填写一个RAS_SECURITY_INFO结构,指示端口上次RasSecurityDialogReceive呼叫的状态