Freigeben über


WinBioCaptureSample-Funktion (winbio.h)

Erfasst eine biometrische Probe und füllt einen biometrischen Informationsdatensatz (BIR) mit den rohen oder verarbeiteten Daten aus.

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
);

Die Parameter

[in] SessionHandle

Ein WINBIO_SESSION_HANDLE Wert, der eine geöffnete 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 bisschen ODER 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 Typ der Verarbeitung angibt, die auf das erfasste Beispiel angewendet werden soll. Dies kann ein bitweiser 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 Kennzeichen 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 das Beispiel genau so zurück, wie es vom Sensor erfasst wurde.

  • WINBIO_DATA_FLAG_INTERMEDIATE

Geben Sie das Beispiel zurück, nachdem es bereinigt und gefiltert wurde.

  • WINBIO_DATA_FLAG_PROCESSED

Geben Sie das Beispiel zurück, nachdem es für den vom Parameter Purpose 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 das Beispiel 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 Speicher 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 Byte enthält.

[out, optional] RejectDetail

Ein Zeiger auf einen WINBIO_REJECT_DETAIL Wert, der zusätzliche Informationen zum Fehler beim Erfassen einer biometrischen Stichprobe enthält. Wenn die Aufnahme erfolgreich war, wird dieser Parameter auf Null festgelegt. Die folgenden Werte sind 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ö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
E_ACCESSDENIED
Der Aufrufer verfügt nicht über die Berechtigung zum Erfassen von Rohbeispielen, oder die Sitzung wurde nicht mithilfe des WINBIO_FLAG_RAW Flags geöffnet.
E_HANDLE
Das Sitzungshandle ist ungültig.
E_NOTIMPL
Die biometrische Einheit unterstützt den angeforderten Vorgang nicht.
E_POINTER
Die Zeiger "UnitId", " Sample", " SampleSize" und "RejectDetail " dürfen nicht NULL sein.
WINBIO_E_ENROLLMENT_IN_PROGRESS
Der Vorgang konnte nicht abgeschlossen werden, da die biometrische Einheit derzeit für eine Registrierungstransaktion verwendet wird (nur Systempool).
WINBIO_E_INVALID_OPERATION
Der Vorgang konnte nicht abgeschlossen werden, da ein sicherer Sensor im Sensorpool vorhanden ist.

Bemerkungen

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 Administratoren und lokalen Systemkonten ausgeführt werden, über die erforderlichen Berechtigungen.

Gültige Kombinationen der Parameter "Zweck" und "Kennzeichen" hängen von den Funktionen der verwendeten biometrischen Einheit ab. In der Sensordokumentation des Herstellers können Sie ermitteln, welche Kombinationen gültiger Zweck - und Flagswerte unterstützt werden und wie sie sich auf die erfassten Daten auswirken. Nachdem Sie das Beispiel verwendet haben, muss Ihre Anwendung WinBioFree aufrufen, um den von der WinBioCaptureSample-Funktion zugewiesenen Speicher freizugeben.

Um WinBioCaptureSample synchron zu verwenden, rufen Sie die Funktion mit einem Sitzungshandle auf, das durch Aufrufen von WinBioOpenSession erstellt wurde. Die Funktionsblöcke, bis ein Beispiel 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 wurde. Das Framework weist eine WINBIO_ASYNC_RESULT Struktur zu und verwendet es, um Informationen zum Erfolg oder Fehler des Vorgangs 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 an die Anwendungsnachrichtenwarteschlange zurückgegeben, abhängig vom Wert, den Sie im Parameter NotificationMethod der WinBioAsyncOpenSession-Funktion festgelegt haben:

  • Wenn Sie sich für den Empfang von Abschlussbenachrichtigungen mithilfe eines Rückrufs entscheiden, müssen Sie eine PWINBIO_ASYNC_COMPLETION_CALLBACK-Funktion implementieren und den Parameter NotificationMethod auf WINBIO_ASYNC_NOTIFY_CALLBACK festlegen.
  • Wenn Sie mithilfe der Anwendungsnachrichtenwarteschlange Abschlussbenachrichtigungen empfangen möchten, müssen Sie den Parameter NotificationMethod auf WINBIO_ASYNC_NOTIFY_MESSAGE festlegen. Das Framework gibt einen WINBIO_ASYNC_RESULT Zeiger auf das LPARAM-Feld der Fenstermeldung zurück.
Um Speicherverluste zu verhindern, müssen Sie WinBioFree aufrufen, um die WINBIO_ASYNC_RESULT Struktur freizugeben, nachdem Sie sie verwendet haben.

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 Der Anwendung implementierte PWINBIO_CAPTURE_CALLBACK-Funktion .

Examples

Die folgende Funktion ruft WinBioCaptureSample auf, um ein biometrisches Beispiel von einem Benutzer zu erfassen. 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 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

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

Siehe auch

WinBioCaptureSampleWithCallback