Partager via


Fonction WinBioLogonIdentifiedUser (winbio.h)

La fonction WinBioLogonIdentifiedUser entraîne un basculement rapide de l’utilisateur vers le compte associé à la dernière opération d’identification réussie effectuée par la session biométrique.

Syntaxe

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

Paramètres

[in] SessionHandle

Valeur WINBIO_SESSION_HANDLE qui identifie la session biométrique qui a récemment effectué une opération d’identification réussie. Ouvrez le handle de session en appelant WinBioOpenSession.

Valeur retournée

Si la fonction réussit, elle retourne S_OK. Si la fonction échoue, elle retourne une valeur HRESULT qui indique l’erreur. Les valeurs possibles sont notamment celles figurant dans le tableau suivant. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Code de retour Description
E_ACCESSDENIED
L’appelant n’a pas l’autorisation de changer d’utilisateur ou la session biométrique est obsolète.
E_HANDLE
Le handle de session n’est pas valide.
S_FALSE
L’utilisateur identifié par le paramètre SessionHandle est identique à l’utilisateur actuel.
SEC_E_LOGON_DENIED
L’utilisateur n’a pas pu être connecté.
WINBIO_E_CRED_PROV_DISABLED
La stratégie d’administration actuelle interdit l’utilisation du fournisseur d’informations d’identification.
WINBIO_E_FAST_USER_SWITCH_DISABLED
Le changement rapide d’utilisateur n’est pas activé.
WINBIO_E_SAS_ENABLED
Impossible d’effectuer un changement rapide d’utilisateur, car l’ouverture de session sécurisée (CTRL+ALT+SUPPR) est actuellement activée.

Remarques

La fonction WinBioLogonIdentifiedUser est généralement appelée par les applications qui prennent en charge le changement rapide d’utilisateur lorsqu’elles identifient un utilisateur autre que celui qui est actuellement connecté.

La tentative de basculement rapide de l’utilisateur peut laisser un événement d’ouverture de session dans le journal de sécurité, mais l’identité n’est pas stockée automatiquement lorsque le gestionnaire d’informations d’identification se termine.

La session biométrique spécifiée par le paramètre SessionHandle contrôle le compte cible pour l’événement de basculement rapide de l’utilisateur. Si ce handle a été utilisé récemment pour effectuer une opération d’identification, l’identité résultante est connectée après le basculement rapide de l’utilisateur.

Pour des raisons de sécurité, l’infrastructure biométrique Windows exige que l’opération d’identification et l’appel à WinBioLogonIdentifiedUser se produisent dans un court laps de temps. Après cette période, l’identification est considérée comme obsolète et l’appel à WinBioLogonIdentifiedUser échoue. L’intervalle de délai d’expiration par défaut est de cinq secondes, mais un administrateur peut en faire une taille de 60 secondes.

Appel de cette fonction lorsque l’utilisateur cible est le même que l’utilisateur actuel retourne S_FALSE et que la tentative de basculement rapide de l’utilisateur est ignorée.

Exemples

La fonction suivante appelle WinBioLogonIdentifiedUser pour se connecter à un utilisateur précédemment identifié. Pour que cette fonction fonctionne correctement, l’ouverture de session sécurisée ne doit pas être activée. Créez un lien vers la bibliothèque statique Winbio.lib et incluez les fichiers d’en-tête suivants :

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


Configuration requise

   
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbio.h (inclure Winbio.h)
Bibliothèque Winbio.lib
DLL Winbio.dll

Voir aussi

WinBioIdentify

WinBioIdentifyWithCallback