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 |
---|---|
|
Il chiamante non dispone dell'autorizzazione per cambiare utenti o la sessione biometrica non è aggiornata. |
|
L'handle di sessione non è valido. |
|
L'utente identificato dal parametro SessionHandle corrisponde all'utente corrente. |
|
Non è stato possibile accedere all'utente. |
|
I criteri amministrativi correnti impediscono l'uso del provider di credenziali. |
|
Il passaggio rapido dell'utente non è abilitato. |
|
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 |