Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft asynchron die ID-Nummer der biometrischen Einheit ab, die von einem Benutzer interaktiv ausgewählt wurde. Die Funktion kehrt sofort an den Aufrufer zurück, verarbeitet in einem separaten Thread und meldet die ausgewählte biometrische Einheit, indem eine anwendungsdefinierte Rückruffunktion aufgerufen wird.
Es wird empfohlen, dass Sie ab Windows 8 diese Funktion nicht mehr verwenden, um einen asynchronen Vorgang zu starten. Gehen Sie stattdessen wie folgt vor:
- Implementieren Sie eine PWINBIO_ASYNC_COMPLETION_CALLBACK-Funktion , um eine Benachrichtigung zu erhalten, wenn der Vorgang abgeschlossen ist.
- Rufen Sie die WinBioAsyncOpenSession-Funktion auf. Übergeben Sie die Adresse Ihres Rückrufs im Parameter CallbackRoutine . Übergeben Sie WINBIO_ASYNC_NOTIFY_CALLBACK im Parameter NotificationMethod . Abrufen eines asynchronen Sitzungshandles.
- Verwenden Sie das asynchrone Sitzungshandle, um WinBioLocateSensor aufzurufen. Nach Abschluss des Vorgangs wird vom Windows Biometrie-Framework eine WINBIO_ASYNC_RESULT Struktur mit den Ergebnissen zugewiesen und initialisiert und ihr Rückruf mit einem Zeiger auf die Ergebnisstruktur aufgerufen.
- Rufen Sie WinBioFree aus Ihrer Rückrufimplementierung auf, um die WINBIO_ASYNC_RESULT Struktur freizugeben, nachdem Sie sie verwendet haben.
Syntax
HRESULT WinBioLocateSensorWithCallback(
[in] WINBIO_SESSION_HANDLE SessionHandle,
[in] PWINBIO_LOCATE_SENSOR_CALLBACK LocateCallback,
[in, optional] PVOID LocateCallbackContext
);
Die Parameter
[in] SessionHandle
Ein WINBIO_SESSION_HANDLE Wert, der eine geöffnete biometrische Sitzung identifiziert.
[in] LocateCallback
Adresse einer Rückruffunktion, die von der WinBioLocateSensorWithCallback-Funktion aufgerufen wird, wenn die Sensorposition erfolgreich ist oder fehlschlägt. Sie müssen den Rückruf erstellen.
[in, optional] LocateCallbackContext
Adresse einer anwendungsdefinierten Datenstruktur, die in seinem LocateCallbackContext-Parameter an die Rückruffunktion übergeben wird. Diese Struktur kann alle Daten enthalten, die von der benutzerdefinierten Rückruffunktion behandelt werden sollen.
Rückgabewert
Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Wenn die Funktion fehlschlägt, wird ein HRESULT-Wert zurückgegeben, der den Fehler angibt. Mögliche Werte sind die Werte in der folgenden Tabelle, sind jedoch nicht beschränkt. Eine Liste allgemeiner Fehlercodes finden Sie unter "Allgemeine HRESULT-Werte".
| Rückgabecode | Description |
|---|---|
|
Das Sitzungshandle ist ungültig. |
|
Die durch den LocateCallback-Parameter angegebene Adresse darf nicht NULL sein. |
Bemerkungen
Sie können diese Funktion auf Systemen mit mehreren Sensoren verwenden, um zu bestimmen, welcher Sensor für die Registrierung durch den Benutzer bevorzugt wird. Von dieser Funktion werden keine Identifikationsinformationen zurückgegeben. Es wird nur bereitgestellt, um die Auswahl des Benutzersensors anzugeben.
Wenn sich der Parameter SessionHandle auf den Systemsensorpool bezieht, wird die Rückruffunktion erst aufgerufen, wenn die Anwendung den Fensterfokus abruft und der Benutzer ein biometrisches Beispiel bereitgestellt hat. Die Art und Weise, wie Sie den Fokus erwerben, hängt von der Art der Anwendung ab, die Sie schreiben. Wenn Sie beispielsweise eine GUI-Anwendung erstellen, können Sie einen Nachrichtenhandler implementieren, der eine WM_ACTIVATE, WM_SETFOCUS oder eine andere geeignete Nachricht erfasst. Wenn Sie eine CUI-Anwendung schreiben, rufen Sie GetConsoleWindow auf, um ein Handle an das Konsolenfenster abzurufen und dieses Handle an die SetForegroundWindow-Funktion zu übergeben, um das Konsolenfenster in den Vordergrund zu erzwingen und ihm den Fokus zuzuweisen. Wenn Ihre Anwendung in einem getrennten Prozess ausgeführt wird und kein Fenster oder ein Windows-Dienst ist, verwenden Sie WinBioAcquireFocus und WinBioReleaseFocus , um den Fokus manuell zu steuern.
Die Rückrufroutine muss die folgende Signatur aufweisen:
VOID CALLBACK LocateCallback(
__in_opt PVOID LocateCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId
);
Examples
Die folgende Funktion ruft WinBioLocateSensorWithCallback auf, um biometrischen Sensor zu finden. Der WinBioLocateSensorWithCallback ist eine asynchrone Funktion, die das biometrische Subsystem konfiguriert, um den Sensor in einem anderen Thread zu finden. Die Ausgabe des biometrischen Subsystems wird an eine benutzerdefinierte Rückruffunktion namens LocateSensorCallback gesendet. Verknüpfen Sie die statische Winbio.lib-Bibliothek, und fügen Sie die folgenden Headerdateien ein:
- Windows.h
- Stdio.h
- Conio.h
- Winbio.h
HRESULT LocateSensorWithCallback(BOOL bCancel)
{
HRESULT hr = S_OK;
WINBIO_SESSION_HANDLE sessionHandle = NULL;
WINBIO_UNIT_ID unitId = 0;
// 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 WinBioOpenSession failed. hr = 0x%x\n", hr);
goto e_Exit;
}
wprintf_s(L"\n Calling WinBioLocateSensorWithCallback.");
hr = WinBioLocateSensorWithCallback(
sessionHandle, // Open biometric session
LocateSensorCallback, // Callback function
NULL // Optional context
);
if (FAILED(hr))
{
wprintf_s(L"\n WinBioLocateSensorWithCallback failed.");
wprintf_s(L"hr = 0x%x\n", hr);
goto e_Exit;
}
wprintf_s(L"\n Swipe the sensor ...\n");
// Cancel the identification if the bCancel flag is set.
if (bCancel)
{
wprintf_s(L"\n Starting CANCEL timer...\n");
Sleep( 7000 );
wprintf_s(L"\n Calling WinBioCancel\n");
hr = WinBioCancel( sessionHandle );
if (FAILED(hr))
{
wprintf_s(L"\n WinBioCancel failed. hr = 0x%x\n", hr);
goto e_Exit;
}
}
// Wait for the asynchronous identification process to complete
// or be canceled.
hr = WinBioWait( sessionHandle );
if (FAILED(hr))
{
wprintf_s(L"\n WinBioWait failed. hr = 0x%x\n", hr);
}
e_Exit:
if (sessionHandle != NULL)
{
wprintf_s(L"\n Closing the session.\n");
hr = WinBioCloseSession(sessionHandle);
if (FAILED(hr))
{
wprintf_s(L"\n WinBioCloseSession failed. hr = 0x%x\n", hr);
}
sessionHandle = NULL;
}
wprintf_s(L"\n Hit any key to exit...");
_getch();
return hr;
}
//------------------------------------------------------------------------
// The following function is the callback for
// WinBioLocateSensorWithCallback. The function filters the response
// from the biometric subsystem and writes a result to the console window.
//
VOID CALLBACK LocateSensorCallback(
__in_opt PVOID LocateCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId
)
{
UNREFERENCED_PARAMETER(LocateCallbackContext);
wprintf_s(L"\n LocateSensorCallback executing.");
// A sensor could not be located.
if (FAILED(OperationStatus))
{
wprintf_s(L"\n LocateSensorCallback failed.");
wprintf_s(L"OperationStatus = 0x%x\n", OperationStatus);
}
// A sensor was located.
else
{
wprintf_s(L"\n Selected unit ID: %d\n", UnitId);
}
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows 7 [nur Desktop-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2008 R2 [nur Desktop-Apps] |
| Zielplattform | Fenster |
| Header | winbio.h (enthalten Winbio.h) |
| Library | Winbio.lib |
| DLL | Winbio.dll |