Share via


Función WinBioLogonIdentifiedUser (winbio.h)

La función WinBioLogon IdentificationUser hace que un usuario rápido cambie a la cuenta asociada a la última operación de identificación correcta realizada por la sesión biométrica.

Sintaxis

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

Parámetros

[in] SessionHandle

Valor de WINBIO_SESSION_HANDLE que identifica la sesión biométrica que ha realizado recientemente una operación de identificación correcta. Abra el identificador de sesión mediante una llamada a WinBioOpenSession.

Valor devuelto

Si la función se realiza correctamente, devuelve S_OK. Si se produce un error en la función, devuelve un valor HRESULT que indica el error. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Código devuelto Descripción
E_ACCESSDENIED
El autor de la llamada no tiene permiso para cambiar de usuario o la sesión biométrica no está actualizada.
E_HANDLE
El identificador de sesión no es válido.
S_FALSE
El usuario identificado por el parámetro SessionHandle es el mismo que el usuario actual.
SEC_E_LOGON_DENIED
No se pudo iniciar sesión el usuario.
WINBIO_E_CRED_PROV_DISABLED
La directiva administrativa actual prohíbe el uso del proveedor de credenciales.
WINBIO_E_FAST_USER_SWITCH_DISABLED
El cambio rápido de usuario no está habilitado.
WINBIO_E_SAS_ENABLED
No se puede realizar un cambio rápido de usuario porque el inicio de sesión seguro (CTRL+ALT+DELETE) está habilitado actualmente.

Comentarios

Normalmente, las aplicaciones que admiten el cambio rápido de usuario llaman a la función WinBioLogonIdentifiedUser cuando identifican a un usuario distinto del que ha iniciado sesión actualmente.

El intento de cambio de usuario rápido puede dejar un evento de inicio de sesión en el registro de seguridad, pero la identidad no se almacena automáticamente cuando finaliza el administrador de credenciales.

La sesión biométrica especificada por el parámetro SessionHandle controla la cuenta de destino para el evento de cambio de usuario rápido. Si ese identificador se ha usado recientemente para realizar una operación de identificación, la identidad resultante se registrará después del cambio de usuario rápido.

Por motivos de seguridad, Windows Biometric Framework requiere que la operación de identificación y la llamada a WinBioLogon IdentificationUser se produzcan en un breve período de tiempo. Después de ese período, la identificación se considera obsoleta y se producirá un error en la llamada a WinBioLogon IdentificationUser . El intervalo de tiempo de espera predeterminado es de cinco segundos, pero un administrador puede hacerlo tan grande como 60 segundos.

Llamar a esta función cuando el usuario de destino es el mismo que el usuario actual devuelve S_FALSE y se omite el intento de cambio de usuario rápido.

Ejemplos

La siguiente función llama a WinBioLogon IdentifiedUser para iniciar sesión en un usuario identificado previamente. Para que esta función funcione correctamente, no se debe habilitar el inicio de sesión seguro. Vincule a la biblioteca estática Winbio.lib e incluya los siguientes archivos de encabezado:

  • 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;
}


Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbio.h (incluye Winbio.h)
Library Winbio.lib
Archivo DLL Winbio.dll

Consulte también

WinBioIdentify

WinBioIdentifyWithCallback