Partager via


WinBioLockUnit, fonction (winbio.h)

Verrouille une unité biométrique pour une utilisation exclusive par une seule session. À compter de Windows 10, build 1607, cette fonction est disponible pour être utilisée avec une image mobile.

Syntaxe

HRESULT WinBioLockUnit(
  [in] WINBIO_SESSION_HANDLE SessionHandle,
  [in] WINBIO_UNIT_ID        UnitId
);

Paramètres

[in] SessionHandle

Valeur WINBIO_SESSION_HANDLE qui identifie une session biométrique ouverte. Ouvrez un handle de session synchrone en appelant WinBioOpenSession. Ouvrez un handle de session asynchrone en appelant WinBioAsyncOpenSession.

[in] UnitId

Valeur WINBIO_UNIT_ID qui spécifie l’unité biométrique à verrouiller.

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 incluent, mais ne sont pas limitées à celles du tableau suivant. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Code de retour Descriptif
E_HANDLE
Le handle de session n’est pas valide.
E_INVALIDARG
Le paramètre UnitId ne peut pas contenir zéro.
WINBIO_E_ENROLLMENT_IN_PROGRESS
Impossible d’effectuer l’opération, car l’unité biométrique spécifiée est actuellement utilisée pour une transaction d’inscription (pool système uniquement).
WINBIO_E_LOCK_VIOLATION
L’unité biométrique ne peut pas être verrouillée, car la session spécifiée a déjà une autre unité verrouillée.

Remarques

Si l’unité biométrique spécifiée est verrouillée par une autre session, WinBioLockUnit bloque le thread appelant jusqu’à ce que la session propriétaire de l’unité biométrique libère son verrou.

Appelez la fonction WinBioUnlockUnit pour annuler toute demande de verrou en attente et libérer tous les verrous détenus par la session.

Pour utiliser WinBioLockUnit de façon synchrone, appelez la fonction avec un handle de session créé en appelant WinBioOpenSession. La fonction se bloque jusqu’à ce que l’opération se termine ou qu’une erreur soit rencontrée.

Pour utiliser WinBioLockUnit de façon asynchrone, appelez la fonction avec un handle de session créé en appelant WinBioAsyncOpenSession. L’infrastructure alloue une structure WINBIO_ASYNC_RESULT et l’utilise pour retourner des informations sur la réussite ou l’échec de l’opération. La structure WINBIO_ASYNC_RESULT est retournée au rappel d’application ou à la file d’attente des messages de l’application, selon la valeur que vous avez définie dans le paramètre NotificationMethod de la fonction WinBioAsyncOpenSession :

  • Si vous choisissez de recevoir des notifications d’achèvement à l’aide d’un rappel, vous devez implémenter une fonction PWINBIO_ASYNC_COMPLETION_CALLBACK et définir le paramètre NotificationMethod sur WINBIO_ASYNC_NOTIFY_CALLBACK.
  • Si vous choisissez de recevoir des notifications d’achèvement à l’aide de la file d’attente des messages d’application, vous devez définir le paramètre NotificationMethod sur WINBIO_ASYNC_NOTIFY_MESSAGE. L’infrastructure retourne un pointeur WINBIO_ASYNC_RESULT vers le champ LPARAM du message de fenêtre.
Pour éviter les fuites de mémoire, vous devez appeler WinBioFree pour libérer la structure WINBIO_ASYNC_RESULT une fois que vous avez fini de l’utiliser.

Examples

La fonction suivante appelle WinBioLockUnit pour verrouiller l’unité biométrique avant d’appeler WinBioIdentify pour identifier l’utilisateur. 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 LockUnlock( )
{
    // Declare variables.
    HRESULT hr = S_OK;
    WINBIO_IDENTITY identity = {0};
    WINBIO_SESSION_HANDLE sessionHandle = NULL;
    WINBIO_UNIT_ID unitId = 0;
    WINBIO_REJECT_DETAIL rejectDetail = 0;
    WINBIO_BIOMETRIC_SUBTYPE subFactor = WINBIO_SUBTYPE_NO_INFORMATION;
    BOOL lockAcquired = FALSE;

    // 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
            NULL,                       // Database ID
            &sessionHandle              // [out] Session handle
            );
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioEnumBiometricUnits failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Lock the session. The Biometric unit ID (1) is hard coded in
    // this example.
    hr = WinBioLockUnit( sessionHandle, 1 );
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioLockUnit failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }
    wprintf_s(L"\n Biometric unit #1 is locked.\n");
    lockAcquired = TRUE;


    // 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");
    hr = WinBioIdentify( 
            sessionHandle, 
            &unitId, 
            &identity, 
            &subFactor, 
            &rejectDetail
            );
    wprintf_s(L"\n Swipe processed - Unit ID: %d\n", unitId);
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioIdentify failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }


e_Exit:

    // Unlock the biometric unit if it is locked.
    if (lockAcquired == TRUE)
    {
        hr = WinBioUnlockUnit( sessionHandle, 1 );
        if (FAILED(hr))
        {
            wprintf_s(L"\n WinBioUnlockUnit failed. hr = 0x%x\n", hr);
        }
        wprintf_s(L"\n Biometric unit #1 is unlocked.\n");
        lockAcquired = FALSE;
    }

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

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

    return hr;
}


Spécifications

Requirement Valeur
Client minimum requis Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
plateforme cible Fenêtres
Header winbio.h (inclure Winbio.h)
Library Winbio.lib
DLL Winbio.dll

Voir aussi

WinBioUnlockUnit