WinBioCaptureSample-Funktion (winbio.h)
Erfasst eine biometrische Probe und füllt einen biometrischen Datensatz (BIR) mit den Rohdaten oder verarbeiteten Daten.
Syntax
HRESULT WinBioCaptureSample(
[in] WINBIO_SESSION_HANDLE SessionHandle,
[in] WINBIO_BIR_PURPOSE Purpose,
[in] WINBIO_BIR_DATA_FLAGS Flags,
[out, optional] WINBIO_UNIT_ID *UnitId,
PWINBIO_BIR *Sample,
[out, optional] SIZE_T *SampleSize,
[out, optional] WINBIO_REJECT_DETAIL *RejectDetail
);
Parameter
[in] SessionHandle
Ein WINBIO_SESSION_HANDLE Wert, der eine offene biometrische Sitzung identifiziert. Öffnen Sie ein synchrones Sitzungshandle, indem Sie WinBioOpenSession aufrufen. Öffnen Sie ein asynchrones Sitzungshandle, indem Sie WinBioAsyncOpenSession aufrufen.
[in] Purpose
Eine WINBIO_BIR_PURPOSE Bitmaske, die die beabsichtigte Verwendung des Beispiels angibt. Dies kann ein bitweises OR der folgenden Werte sein:
- WINBIO_PURPOSE_VERIFY
- WINBIO_PURPOSE_IDENTIFY
- WINBIO_PURPOSE_ENROLL
- WINBIO_PURPOSE_ENROLL_FOR_VERIFICATION
- WINBIO_PURPOSE_ENROLL_FOR_IDENTIFICATION
[in] Flags
Ein -Wert, der den Verarbeitungstyp angibt, der auf das erfasste Beispiel angewendet werden soll. Dies kann ein bitweises OR der folgenden Flags auf Sicherheits- und Verarbeitungsebene sein:
- WINBIO_DATA_FLAG_PRIVACY
Verschlüsseln Sie das Beispiel.
- WINBIO_DATA_FLAG_INTEGRITY
Signieren sie das Beispiel oder schützen Sie es mithilfe eines Nachrichtenauthentifizierungscodes (MAC)
- WINBIO_DATA_FLAG_SIGNED
Wenn dieses Flag und das WINBIO_DATA_FLAG_INTEGRITY-Flag festgelegt sind, signieren Sie das Beispiel. Wenn dieses Flag nicht festgelegt ist, aber das WINBIO_DATA_FLAG_INTEGRITY-Flag festgelegt ist, berechnen Sie einen MAC.
- WINBIO_DATA_FLAG_RAW
Geben Sie die Stichprobe genau so zurück, wie sie vom Sensor erfasst wurde.
- WINBIO_DATA_FLAG_INTERMEDIATE
Gibt das Beispiel zurück, nachdem es bereinigt und gefiltert wurde.
- WINBIO_DATA_FLAG_PROCESSED
Gibt das Beispiel zurück, nachdem es für den vom Purpose-Parameter angegebenen Zweck verwendet werden kann.
[out, optional] UnitId
Ein Zeiger auf einen WINBIO_UNIT_ID Wert, der die ID der biometrischen Einheit enthält, die die Stichprobe generiert hat.
Sample
Adresse einer Variablen, die einen Zeiger auf eine WINBIO_BIR Struktur empfängt, die das Beispiel enthält. Wenn Sie die Verwendung der -Struktur abgeschlossen haben, müssen Sie den Zeiger an WinBioFree übergeben, um den für das Beispiel zugewiesenen Arbeitsspeicher freizugeben.
[out, optional] SampleSize
Ein Zeiger auf einen SIZE_T Wert, der die Größe der im Sample-Parameter zurückgegebenen WINBIO_BIR-Struktur in Bytes enthält.
[out, optional] RejectDetail
Ein Zeiger auf einen WINBIO_REJECT_DETAIL Wert, der zusätzliche Informationen über den Fehler beim Erfassen einer biometrischen Stichprobe enthält. Wenn die Erfassung erfolgreich war, wird dieser Parameter auf 0 (null) festgelegt. Die folgenden Werte werden für die Fingerabdruckerfassung definiert:
- WINBIO_FP_TOO_HIGH
- WINBIO_FP_TOO_LOW
- WINBIO_FP_TOO_LEFT
- WINBIO_FP_TOO_RIGHT
- WINBIO_FP_TOO_FAST
- WINBIO_FP_TOO_SLOW
- WINBIO_FP_POOR_QUALITY
- WINBIO_FP_TOO_SKEWED
- WINBIO_FP_TOO_SHORT
- WINBIO_FP_MERGE_FAILURE
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ö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 |
---|---|
|
Der Aufrufer verfügt nicht über die Berechtigung zum Erfassen von Rohbeispielen, oder die Sitzung wurde nicht mit dem flag WINBIO_FLAG_RAW geöffnet. |
|
Das Sitzungshandle ist ungültig. |
|
Die biometrische Einheit unterstützt den angeforderten Vorgang nicht. |
|
Die Zeiger UnitId, Sample, SampleSize und RejectDetail dürfen nicht NULL sein. |
|
Der Vorgang konnte nicht abgeschlossen werden, da die biometrische Einheit derzeit für eine Registrierungstransaktion (nur Systempool) verwendet wird. |
|
Der Vorgang konnte nicht abgeschlossen werden, da im Sensorpool ein sicherer Sensor vorhanden ist. |
Hinweise
Um diese Funktion erfolgreich aufzurufen, müssen Sie das Sitzungshandle öffnen, indem Sie WINBIO_FLAG_RAW im Flags-Parameter der WinBioOpenSession - oder WinBioAsyncOpenSession-Funktionen angeben. Derzeit verfügen nur Anwendungen, die unter den Konten "Administratoren" und "Lokales System" ausgeführt werden, über die erforderlichen Berechtigungen.
Gültige Kombinationen der Parameter Purpose und Flags hängen von den Funktionen der verwendeten biometrischen Einheit ab. Lesen Sie die Sensordokumentation des Herstellers, um zu ermitteln, welche Kombinationen aus gültigen Zweck - und Flagwerten unterstützt werden und wie sie sich auf die erfassten Daten auswirken. Nachdem Sie mit der Verwendung des Beispiels fertig sind, muss Ihre Anwendung WinBioFree aufrufen, um den von der WinBioCaptureSample-Funktion dafür zugewiesenen Arbeitsspeicher freizugeben.
Um WinBioCaptureSample synchron zu verwenden, rufen Sie die Funktion mit einem Sitzungshandle auf, das durch Aufrufen von WinBioOpenSession erstellt wird. Die Funktion blockiert, bis eine Stichprobe erfasst wurde oder ein Fehler auftritt. Aufrufe von WinBioCaptureSample mithilfe des Systempools werden blockiert, bis die aufrufende Anwendung den Fensterfokus hat und der Benutzer ein Beispiel für einen der Sensoren im Pool bereitstellt. Wenn der vom Benutzer ausgewählte Sensor bereits für eine Registrierungstransaktion verwendet wird, schlägt die Funktion fehl und gibt WINBIO_E_ENROLLMENT_IN_PROGRESS zurück.
Um WinBioCaptureSample asynchron zu verwenden, rufen Sie die Funktion mit einem Sitzungshandle auf, das durch Aufrufen von WinBioAsyncOpenSession erstellt wird. Das Framework ordnet eine WINBIO_ASYNC_RESULT-Struktur zu und verwendet sie, um Informationen über erfolgreiche oder fehlgeschlagene Vorgänge zurückzugeben. Wenn der Erfassungsvorgang erfolgreich ist, gibt das Framework Informationen zum Beispiel in einer geschachtelten CaptureSample-Struktur zurück. Wenn der Vorgang nicht erfolgreich ist, gibt das Framework Fehlerinformationen zurück. Die WINBIO_ASYNC_RESULT-Struktur wird an den Anwendungsrückruf oder die Anwendungsnachrichtenwarteschlange zurückgegeben, je nachdem, welche Werte Sie im NotificationMethod-Parameter der WinBioAsyncOpenSession-Funktion festgelegt haben:
- Wenn Sie Vervollständigungsbenachrichtigungen mithilfe eines Rückrufs erhalten möchten, müssen Sie eine PWINBIO_ASYNC_COMPLETION_CALLBACK-Funktion implementieren und den NotificationMethod-Parameter auf WINBIO_ASYNC_NOTIFY_CALLBACK festlegen.
- Wenn Sie Vervollständigungsbenachrichtigungen mithilfe der Anwendungsnachrichtenwarteschlange empfangen möchten, müssen Sie den NotificationMethod-Parameter auf WINBIO_ASYNC_NOTIFY_MESSAGE festlegen. Das Framework gibt einen WINBIO_ASYNC_RESULT Zeiger auf das LPARAM-Feld der Fenstermeldung zurück.
Windows 7: Sie können diesen Vorgang asynchron ausführen, indem Sie die WinBioCaptureSampleWithCallback-Funktion verwenden. Die Funktion überprüft die Eingabeargumente und gibt sofort zurück. Wenn die Eingabeargumente ungültig sind, gibt die Funktion einen Fehlercode zurück. Andernfalls startet das Framework den Vorgang in einem anderen Thread. Wenn der asynchrone Vorgang abgeschlossen ist oder ein Fehler auftritt, sendet das Framework die Ergebnisse an die von Ihrer Anwendung implementierte PWINBIO_CAPTURE_CALLBACK-Funktion .
Beispiele
Die folgende Funktion ruft WinBioCaptureSample auf, um eine biometrische Stichprobe von einem Benutzer zu erfassen. Verknüpfen Sie die statische Winbio.lib-Bibliothek, und schließen Sie die folgenden Headerdateien ein:
- Windows.h
- Stdio.h
- Conio.h
- Winbio.h
HRESULT CaptureSample()
{
HRESULT hr = S_OK;
WINBIO_SESSION_HANDLE sessionHandle = NULL;
WINBIO_UNIT_ID unitId = 0;
WINBIO_REJECT_DETAIL rejectDetail = 0;
PWINBIO_BIR sample = NULL;
SIZE_T sampleSize = 0;
// Connect to the system pool.
hr = WinBioOpenSession(
WINBIO_TYPE_FINGERPRINT, // Service provider
WINBIO_POOL_SYSTEM, // Pool type
WINBIO_FLAG_RAW, // Access: Capture raw data
NULL, // Array of biometric unit IDs
0, // Count of biometric unit IDs
WINBIO_DB_DEFAULT, // Default database
&sessionHandle // [out] Session handle
);
if (FAILED(hr))
{
wprintf_s(L"\n WinBioOpenSession failed. hr = 0x%x\n", hr);
goto e_Exit;
}
// Capture a biometric sample.
wprintf_s(L"\n Calling WinBioCaptureSample - Swipe sensor...\n");
hr = WinBioCaptureSample(
sessionHandle,
WINBIO_NO_PURPOSE_AVAILABLE,
WINBIO_DATA_FLAG_RAW,
&unitId,
&sample,
&sampleSize,
&rejectDetail
);
if (FAILED(hr))
{
if (hr == WINBIO_E_BAD_CAPTURE)
{
wprintf_s(L"\n Bad capture; reason: %d\n", rejectDetail);
}
else
{
wprintf_s(L"\n WinBioCaptureSample failed. hr = 0x%x\n", hr);
}
goto e_Exit;
}
wprintf_s(L"\n Swipe processed - Unit ID: %d\n", unitId);
wprintf_s(L"\n Captured %d bytes.\n", sampleSize);
e_Exit:
if (sample != NULL)
{
WinBioFree(sample);
sample = NULL;
}
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 (winbio.h einschließen) |
Bibliothek | Winbio.lib |
DLL | Winbio.dll |