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


Интерактивный пользовательский интерфейс

Поставщик, реализующий протокол проверки подлинности, также может предоставить интерактивный пользовательский интерфейс для протокола. Интерактивный пользовательский интерфейс позволяет протоколу проверки подлинности получать дополнительные сведения от пользователя по мере необходимости во время сеанса проверки подлинности.

Интерактивный пользовательский интерфейс можно реализовать в той же библиотеке DLL, что и протокол проверки подлинности или в отдельной библиотеке DLL. Кроме того, библиотека DLL, реализующая интерактивный пользовательский интерфейс, может поддерживать несколько протоколов проверки подлинности. Путь к библиотеке DLL для интерактивного пользовательского интерфейса хранится в значении реестра RAS_EAP_VALUENAME_INTERACTIVEUI в разделе ключа протокола проверки подлинности. Дополнительные сведения о создании этого значения реестра см. в разделе "Установка EAP".

Библиотека DLL для интерактивного пользовательского интерфейса должна экспортировать точки входа для следующих функций:

RasEapInvokeInteractiveUI
RasEapFreeMemory

Интерактивный пользовательский интерфейс должен поддерживать WM_COMMAND сообщения, в которых LOWORD (wParam) равно IDCANCEL.

Чтобы отобразить интерактивный пользовательский интерфейс, протокол проверки подлинности должен задать для элемента fInvokeInteractiveUI структуры PPP_EAP_OUTPUT значение TRUE. Протокол проверки подлинности может также задать для членов pUIContextData и dwSizeOfUIContextData значение TRUE. Служба проверки подлинности использует значения этих членов для передачи данных контекста в интерактивный пользовательский интерфейс. Протокол проверки подлинности возвращает структуру PPP_EAP_OUTPUT в качестве параметра в функции RasEapMakeMessage.

Служба проверки подлинности вызывает интерактивный пользовательский интерфейс, вызвав RasEapInvokeInteractiveUI. Затем служба передает протокол проверки подлинности указатель на данные, возвращаемые интерактивным пользовательским интерфейсом в последующем вызове RasEapMakeMessage. Указатель передается как член структуры PPP_EAP_INPUT. После возврата RasEapMakeMessage служба вызывает RasEapFreeMemory , чтобы освободить память, занятую информацией. Поэтому протокол проверки подлинности должен скопировать сведения в частный буфер памяти во время вызова RasEapMakeMessage.