Поделиться через


Приостановленные состояния

Во время операции подключения может возникать время, когда удаленный сервер не может продолжаться без дополнительных сведений от локального пользователя. Начиная с Windows NT 3.5 функция RasDial поддерживает приостановленные состояния. Приостановленное состояние позволяет диспетчеру подключений удаленного доступа приостановить операцию подключения, чтобы клиентское приложение RAS может собирать сведения от пользователя.

Приостановленные состояния полезны в следующих ситуациях:

  • Когда пользователю необходимо предоставить номер обратного вызова .
  • Если проверка подлинности пользователя завершается ошибкой, пользователь может ввести другое имя пользователя и пароль.
  • После истечения срока действия пароля пользователя пользователь может предоставить новый пароль.

По умолчанию приостановленная поддержка состояния отключена. Клиенты RAS, которые хотят поддерживать приостановленные состояния, должны задать флаг RDEOPTS_PausedStates в структуре RASDIALEXTENSIONS, передаваемой в качестве параметра, для RasDial.

При приостановке состояния диспетчер соединений удаленного доступа вызывает обработчик уведомлений клиента. Если поддержка приостановленного состояния отключена, сообщение уведомления указывает на ошибку, а операция подключения завершается ошибкой. Если он включен, диспетчер соединений приостанавливает операцию подключения, чтобы ждать ответа клиента RAS. Клиент RAS может возобновить операцию подключения вторым вызовом RasDial или завершить его, вызвав функцию RasHangUp.

После получения входных данных пользователя клиент RAS перезапускает операцию подключения, вызвав RasDial снова. Этот второй вызов RasDial должен указать следующие сведения:

  • Дескриптор подключения, возвращенный исходным вызовом RasDial.
  • Тот же обработчик уведомлений, что и исходный вызов RasDial.
  • Входные данные пользователя в соответствующих членах структуры RASDIALPARAMS. Другие члены структуры RASDIALPARAMS должны иметь те же сведения, что и в исходном вызове RasDial.

Второй вызов RasDial нельзя сделать из обработчика уведомлений.