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


Функция WinBioLogonIdentifiedUser (winbio.h)

Функция WinBioLogonIdentifiedUser вызывает быстрое переключение пользователя на учетную запись, связанную с последней успешной операцией идентификации, выполненной биометрическим сеансом.

Синтаксис

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

Параметры

[in] SessionHandle

Значение WINBIO_SESSION_HANDLE , определяющее биометрический сеанс, который недавно успешно выполнил операцию идентификации. Откройте дескриптор сеанса, вызвав WinBioOpenSession.

Возвращаемое значение

Если функция завершается успешно, она возвращает S_OK. Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_ACCESSDENIED
Вызывающий объект не имеет разрешения на переключение пользователей или биометрический сеанс устарел.
E_HANDLE
Недопустимый дескриптор сеанса.
S_FALSE
Пользователь, определяемый параметром SessionHandle , совпадает с текущим пользователем.
SEC_E_LOGON_DENIED
Не удалось войти в систему.
WINBIO_E_CRED_PROV_DISABLED
Текущая политика администрирования запрещает использование поставщика учетных данных.
WINBIO_E_FAST_USER_SWITCH_DISABLED
Быстрое переключение пользователей не включено.
WINBIO_E_SAS_ENABLED
Не удается выполнить быстрое переключение пользователей, так как сейчас включен безопасный вход (CTRL+ALT+DELETE).

Комментарии

Функция WinBioLogonIdentifiedUser обычно вызывается приложениями, поддерживающими быстрое переключение пользователей, когда они идентифицируют пользователя, отличного от того, кто вошел в систему.

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

Биометрический сеанс, заданный параметром SessionHandle , управляет целевой учетной записью для события быстрого переключения пользователя. Если этот дескриптор недавно использовался для выполнения операции идентификации, полученное удостоверение будет входить в систему после быстрого переключения пользователя.

По соображениям безопасности Платформа биометрических данных Windows требует, чтобы операция идентификации и вызов WinBioLogonIdentifiedUser происходили в течение короткого периода времени. По истечении этого периода идентификация считается устаревшей, и вызов WinBioLogonIdentifiedUser завершится ошибкой. Интервал времени ожидания по умолчанию составляет пять секунд, но администратор может сделать его до 60 секунд.

Вызов этой функции, когда целевой пользователь совпадает с текущим пользователем, возвращает S_FALSE и попытка быстрого переключения пользователя игнорируется.

Примеры

Следующая функция вызывает WinBioLogonIdentifiedUser для входа в систему ранее определенного пользователя. Для правильной работы этой функции не должен быть включен безопасный вход. Ссылка на статическую библиотеку Winbio.lib и включение следующих файлов заголовков:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT LogonIdentifiedUser()
{
    // Declare variables.
    HRESULT hr;
    WINBIO_SESSION_HANDLE sessionHandle = NULL;
    WINBIO_UNIT_ID  UnitId;
    WINBIO_IDENTITY Identity;
    WINBIO_BIOMETRIC_SUBTYPE SubFactor;
    WINBIO_REJECT_DETAIL RejectDetail;
    BOOL    bContinue = TRUE;

    // Connect to the system pool. 
    hr = WinBioOpenSession( 
            WINBIO_TYPE_FINGERPRINT,    // Service provider
            WINBIO_POOL_SYSTEM,         // Pool type
            WINBIO_FLAG_DEFAULT,        // Configuration and access
            NULL,                       // Array of biometric unit IDs
            0,                          // Count of biometric unit IDs
            WINBIO_DB_DEFAULT,                       // Database ID
            &sessionHandle              // [out] Session handle
            );
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioOpenSession failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Locate the biometric sensor and retrieve a WINBIO_IDENTITY object.
    // You must swipe your finger on the sensor.
    wprintf_s(L"\n Calling WinBioIdentify - Swipe finger on sensor...\n");
    while(bContinue)
    {
        hr = WinBioIdentify(
                sessionHandle,          // Session handle    
                &UnitId,                // Biometric unit ID
                &Identity,              // User SID or GUID
                &SubFactor,             // Finger sub factor
                &RejectDetail           // rejection information
                );

        switch(hr)
        {
        case S_OK:
            bContinue = FALSE;
            break;
        default:
            wprintf_s(L"\n WinBioIdentify failed. hr = 0x%x\n", hr);
            break;
        }
    }

    if (SUCCEEDED(hr))
    {
        // Switch to the target after receiving a good identity.
        hr = WinBioLogonIdentifiedUser(sessionHandle);

        switch(hr)
        {
        case S_FALSE:
            printf("\n Target is the logged on user. No action taken.\n");
            break;
        case S_OK:
            printf("\n Fast user switch initiated.\n");
            break;
        default:
            wprintf_s(L"\n WinBioLogonIdentifiedUser failed. hr = 0x%x\n", hr);
            break;
        }
    }

e_Exit:

    if (sessionHandle != NULL)
    {
        WinBioCloseSession(sessionHandle);
        sessionHandle = NULL;
    }

    wprintf_s(L"\n Press any key to exit...");
    _getch();

    return hr;
}


Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winbio.h (включая Winbio.h)
Библиотека Winbio.lib
DLL Winbio.dll

См. также раздел

WinBioIdentify

WinBioIdentifyWithCallback