WinBioLogonIdentifiedUser-Funktion (winbio.h)

Die WinBioLogonIdentifiedUser-Funktion bewirkt einen schnellen Benutzerwechsel zu dem Konto, das dem letzten erfolgreichen Identifizierungsvorgang der biometrischen Sitzung zugeordnet ist.

Syntax

HRESULT WinBioLogonIdentifiedUser(
  [in] WINBIO_SESSION_HANDLE SessionHandle
);

Parameter

[in] SessionHandle

Ein WINBIO_SESSION_HANDLE Wert, der die biometrische Sitzung identifiziert, die kürzlich einen erfolgreichen Identifizierungsvorgang durchgeführt hat. Öffnen Sie das Sitzungshandle, indem Sie WinBioOpenSession aufrufen.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt sie S_OK zurück. Wenn die Funktion fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

Rückgabecode Beschreibung
E_ACCESSDENIED
Der Aufrufer verfügt nicht über die Berechtigung, benutzer zu wechseln, oder die biometrische Sitzung ist veraltet.
E_HANDLE
Das Sitzungshandle ist ungültig.
S_FALSE
Der durch den SessionHandle-Parameter identifizierte Benutzer ist mit dem aktuellen Benutzer identisch.
SEC_E_LOGON_DENIED
Der Benutzer konnte nicht angemeldet werden.
WINBIO_E_CRED_PROV_DISABLED
Die aktuelle Verwaltungsrichtlinie verbietet die Verwendung des Anmeldeinformationsanbieters.
WINBIO_E_FAST_USER_SWITCH_DISABLED
Der schnelle Benutzerwechsel ist nicht aktiviert.
WINBIO_E_SAS_ENABLED
Ein schneller Benutzerwechsel kann nicht durchgeführt werden, da die sichere Anmeldung (STRG+ALT+ENTF) derzeit aktiviert ist.

Hinweise

Die WinBioLogonIdentifiedUser-Funktion wird in der Regel von Anwendungen aufgerufen, die einen schnellen Benutzerwechsel unterstützen, wenn sie einen anderen Benutzer als den derzeit angemeldeten benutzer identifizieren.

Der schnelle Benutzerwechselversuch kann ein Anmeldeereignis im Sicherheitsprotokoll hinterlassen, aber die Identität wird nicht automatisch gespeichert, wenn der Anmeldeinformations-Manager beendet wird.

Die biometrische Sitzung, die durch den SessionHandle-Parameter angegeben wird, steuert das Zielkonto für das Ereignis des schnellen Benutzerwechsels. Wenn dieses Handle kürzlich zum Ausführen eines Identifizierungsvorgangs verwendet wurde, wird die resultierende Identität nach dem schnellen Benutzerwechsel angemeldet.

Aus Sicherheitsgründen erfordert das Windows Biometric Framework, dass der Identifizierungsvorgang und der Aufruf von WinBioLogonIdentifiedUser innerhalb kurzer Zeit erfolgen. Nach diesem Zeitraum gilt die Identifizierung als veraltet, und der Aufruf von WinBioLogonIdentifiedUser schlägt fehl. Das Standardtimeoutintervall beträgt fünf Sekunden, aber ein Administrator kann es bis zu 60 Sekunden festlegen.

Das Aufrufen dieser Funktion, wenn der Zielbenutzer mit dem aktuellen Benutzer identisch ist , S_FALSE zurückgibt und der Versuch des schnellen Benutzerwechsels ignoriert wird.

Beispiele

Die folgende Funktion ruft WinBioLogonIdentifiedUser auf, um sich bei einem zuvor identifizierten Benutzer anzumelden. Damit diese Funktion ordnungsgemäß funktioniert, muss die sichere Anmeldung nicht aktiviert sein. Verknüpfen Sie die statische Bibliothek Winbio.lib, und fügen Sie die folgenden Headerdateien ein:

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


Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbio.h (einschließlich Winbio.h)
Bibliothek Winbio.lib
DLL Winbio.dll

Weitere Informationen

WinBioIdentify

WinBioIdentifyWithCallback