다음을 통해 공유


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 함수는 일반적으로 현재 로그온한 사용자가 아닌 다른 사용자를 식별할 때 빠른 사용자 전환을 지원하는 애플리케이션에서 호출됩니다.

빠른 사용자 전환 시도는 보안 로그에 로그온 이벤트를 남길 수 있지만 자격 증명 관리자가 종료될 때 ID가 자동으로 저장되지 않습니다.

SessionHandle 매개 변수로 지정된 생체 인식 세션은 빠른 사용자 스위치 이벤트에 대한 대상 계정을 제어합니다. 최근에 해당 핸들을 사용하여 식별 작업을 수행한 경우 빠른 사용자 전환 후에 결과 ID가 로그인됩니다.

보안상의 이유로 Windows 생체 인식 프레임워크는 식별 작업과 WinBioLogonIdentifiedUser 호출이 짧은 기간 내에 발생하도록 요구합니다. 해당 기간이 지나면 ID가 만료된 것으로 간주되고 WinBioLogonIdentifiedUser 에 대한 호출이 실패합니다. 기본 시간 제한 간격은 5초이지만 관리자는 최대 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
헤더 winbio.h(Winbio.h 포함)
라이브러리 Winbio.lib
DLL Winbio.dll

추가 정보

WinBioIdentify

WinBioIdentifyWithCallback