Condividi tramite


Funzione WinBioLogonIdentifiedUser (winbio.h)

La funzione WinBioLogonIdentifiedUser causa un passaggio rapido dell'utente all'account associato all'ultima operazione di identificazione eseguita dalla sessione biometrica.

Sintassi

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

Parametri

[in] SessionHandle

Valore WINBIO_SESSION_HANDLE che identifica la sessione biometrica che ha eseguito di recente un'operazione di identificazione riuscita. Aprire l'handle di sessione chiamando WinBioOpenSession.

Valore restituito

Se la funzione ha esito positivo, restituisce S_OK. Se la funzione ha esito negativo, restituisce un valore HRESULT che indica l'errore. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.

Codice restituito Descrizione
E_ACCESSDENIED
Il chiamante non dispone dell'autorizzazione per cambiare utenti o la sessione biometrica non è aggiornata.
E_HANDLE
L'handle di sessione non è valido.
S_FALSE
L'utente identificato dal parametro SessionHandle corrisponde all'utente corrente.
SEC_E_LOGON_DENIED
Non è stato possibile accedere all'utente.
WINBIO_E_CRED_PROV_DISABLED
I criteri amministrativi correnti impediscono l'uso del provider di credenziali.
WINBIO_E_FAST_USER_SWITCH_DISABLED
Il passaggio rapido dell'utente non è abilitato.
WINBIO_E_SAS_ENABLED
Non è possibile eseguire il passaggio rapido dell'utente perché l'accesso sicuro (CTRL+ALT+CANC) è attualmente abilitato.

Commenti

La funzione WinBioLogonIdentifiedUser viene in genere chiamata dalle applicazioni che supportano il passaggio rapido degli utenti quando identificano un utente diverso da quello attualmente connesso.

Il tentativo di cambio utente rapido può lasciare un evento di accesso nel log di sicurezza, ma l'identità non viene archiviata automaticamente al termine del gestore delle credenziali.

La sessione biometrica specificata dal parametro SessionHandle controlla l'account di destinazione per l'evento di cambio rapido dell'utente. Se tale handle è stato usato di recente per eseguire un'operazione di identificazione, l'identità risultante verrà registrata dopo il passaggio rapido dell'utente.

Per motivi di sicurezza, Windows Biometric Framework richiede che l'operazione di identificazione e la chiamata a WinBioLogonIdentifiedUser vengano eseguite entro un breve periodo di tempo. Dopo tale periodo, l'identificazione viene considerata non aggiornata e la chiamata a WinBioLogonIdentifiedUser avrà esito negativo. L'intervallo di timeout predefinito è di cinque secondi, ma un amministratore può renderlo di dimensioni pari a 60 secondi.

La chiamata a questa funzione quando l'utente di destinazione è uguale a quello dell'utente corrente restituisce S_FALSE e il tentativo di cambio utente rapido viene ignorato.

Esempio

La funzione seguente chiama WinBioLogonIdentifiedUser per accedere a un utente identificato in precedenza. Affinché questa funzione funzioni correttamente, non è necessario abilitare l'accesso sicuro. Collegarsi alla libreria statica Winbio.lib e includere i file di intestazione seguenti:

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


Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbio.h (include Winbio.h)
Libreria Winbio.lib
DLL Winbio.dll

Vedi anche

WinBioIdentify

WinBioIdentifyWithCallback