Я занимаюсь разработкой пользовательского поставщика учетных данных для смарт-карт на основе примеров Microsoft http://www.microsoft.com/en-us/download/details.aspx?id=5372. В частности, я использую пример с упакованным провайдером, поэтому мне нужно только добавить некоторые новые функции к существующим.
После нажатия кнопки «Отправить» провайдер должен отправить запрос на аутентификацию на мой сервер, и в случае положительного ответа он должен продолжить работу со стандартным механизмом Windows.
Я успешно сделал это, поместив свой запрашивающий код в начало метода GetSerialization. Но так как эта операция может занять много времени, мне нужно информировать пользователя о текущем прогрессе.
Поскольку разработчику не разрешено рисовать пользовательские элементы управления на экране входа в систему (например, индикатор выполнения), я решил создать небольшое верхнее окно, содержащее текущее состояние операции, и отобразить его в правом верхнем углу. При этом мне нужно отключить поле ПИН-код и отправить кнопку до завершения операции. Но как я заметил здесь Отключение областей на провайдере учетных данных, это невозможно из GetSerialization.
Второй вопрос Каким образом вы бы порекомендовали мне эту функциональность?
И третий. Как я могу использовать метод Credentials :: Advice, чтобы определить, что именно произошло? Потому что я получаю только ICredentialProviderCredentialEvents * pcpce в качестве параметра, который я могу использовать для вызова его методов, но я до сих пор не знаю, каков источник этого события. Клавиша нажата или кнопка отправки или что-то еще?
Любая помощь будет оценена)
GetSerialisation
— это нормально работает. Задержка от нажатия кнопки отправки до входа примерно 2 секунды.
'. '
' . '
' . '
' . '
' . '
' .'
LogonUI
, Например установить текстовые поля с обновленными значениями.