PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN Rückruffunktion (winbio_adapter.h)
Wird vom Windows Biometric Framework aufgerufen, um den aktuellen Inhalt des Beispielpuffers für den Moduladapter verfügbar zu machen.
Syntax
PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN PibioSensorPushDataToEngineFn;
HRESULT PibioSensorPushDataToEngineFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[in] WINBIO_BIR_PURPOSE Purpose,
[in] WINBIO_BIR_DATA_FLAGS Flags,
[out] PWINBIO_REJECT_DETAIL RejectDetail
)
{...}
Parameter
[in, out] Pipeline
Zeiger auf die WINBIO_PIPELINE Struktur, die der biometrischen Einheit zugeordnet ist, die den Vorgang ausführt.
[in] Purpose
Ein Wert, der die Eigenschaften der WINBIO_BIR-Struktur angibt, die an die Engine übergeben wird. Dies kann ein bitweiser OR der folgenden Flags für Sicherheits- und Verarbeitungsebene 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 das Format des Beispiels angibt. Dies kann ein bitweiser OR der folgenden Flags für Sicherheits- und Verarbeitungsebene sein:
- WINBIO_DATA_FLAG_PRIVACY
Das Beispiel sollte verschlüsselt sein.
- WINBIO_DATA_FLAG_INTEGRITY
Das Beispiel sollte digital signiert oder durch einen Nachrichtenauthentifizierungscode (MAC) geschützt werden.
- WINBIO_DATA_FLAG_SIGNED
Wenn dieses Flag und das WINBIO_DATA_FLAG_INTEGRITY-Flag festgelegt sind, sollte das Beispiel signiert werden. Wenn dieses Flag nicht festgelegt ist, aber das WINBIO_DATA_FLAG_INTEGRITY-Flag festgelegt ist, sollte ein MAC berechnet werden.
- WINBIO_DATA_FLAG_RAW
Das Beispiel sollte im WINBIO_BIR -Objekt in dem Format platziert werden, in dem es erfasst wurde.
[out] RejectDetail
Ein Zeiger auf einen WINBIO_REJECT_DETAIL Wert, der Informationen über den vorherigen Fehler bei der Erfassung einer biometrischen Stichprobe und damit den Grund enthält, warum der Stichprobenpuffer leer ist. Wenn eine frühere Erfassung erfolgreich war, wird dieser Parameter auf 0 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, gibt sie S_OK zurück. Wenn die Funktion fehlschlägt, muss sie einen der folgenden HRESULT-Werte zurückgeben, um den Fehler anzugeben.
Rückgabecode | Beschreibung |
---|---|
|
Ein obligatorisches Zeigerargument ist NULL. |
|
Die Beispieldaten sind nicht für die Verwendung geeignet. Wenn Sie diesen Fehlercode zurückgeben, müssen Sie auch einen Wert im RejectDetail-Parameter angeben, um die Art des Problems anzugeben. |
|
Das SensorContext-Element der WINBIO_PIPELINE Struktur, auf die das Pipelineargument verweist, ist NULL. |
|
Es sind keine Erfassungsdaten vorhanden. |
Hinweise
Ihre Implementierung dieser Funktion sollte Rohdaten, die im Beispielpuffer enthalten sind, in eine Standardstruktur WINBIO_BIR konvertieren und diese Struktur mithilfe der EngineAdapterAcceptSampleData-Funktion pushen . Dazu rufen Sie die in Winbio_adapter.h-Headerdatei definierte Hilfsfunktion WbioEngineAcceptSampleData auf.
Wenn die EngineAdapterAcceptSampleData-Funktion WINBIO_E_BAD_CAPTURE zurückgibt, sollte Ihre Implementierung von SensorAdapterPushDataToEngine den RejectDetail-Wert zurückgeben, der vom Engineadapter weitergegeben wird.
Der Sensoradapter behält den Besitz des An EngineAdapterAcceptSampleData übergebenen Beispielpuffers. Der Sensoradapter ist dafür verantwortlich, diesen Puffer irgendwann nach der Rückgabe von EngineAdapterAcceptSampleData freizugeben.
Beispiele
Der folgende Pseudocode zeigt eine mögliche Implementierung dieser Funktion. Das Beispiel wird nicht kompiliert. Sie müssen es an Ihren Zweck anpassen.
//////////////////////////////////////////////////////////////////////////////////////////
//
// SensorAdapterPushDataToEngine
//
// Purpose:
// Makes the current contents of the sample buffer available to the
// engine adapter.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated with
// the biometric unit.
// Purpose - Specifies the properties of the WINBIO_BIR structure
// that will be passed to the engine.
// Flags - A value that specifies the format of the sample.
// RejectDetail - Pointer to a WINBIO_REJECT_DETAIL value that receives
// additional information about the reason the sample
// buffer is empty.
//
static HRESULT
WINAPI
SensorAdapterPushDataToEngine(
__inout PWINBIO_PIPELINE Pipeline,
__in WINBIO_BIR_PURPOSE Purpose,
__in WINBIO_BIR_DATA_FLAGS Flags,
__out PWINBIO_REJECT_DETAIL RejectDetail
)
{
HRESULT hr = S_OK;
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(RejectDetail))
{
hr = E_POINTER;
goto cleanup;
}
// Retrieve the context from the pipeline.
PWINBIO_SENSOR_CONTEXT sensorContext =
(PWINBIO_SENSOR_CONTEXT)Pipeline->SensorContext;
// Verify the state of the pipeline.
if (sensorContext == NULL)
{
hr = WINBIO_E_INVALID_DEVICE_STATE;
goto cleanup;
}
if (sensorContext->CaptureBuffer != NULL &&
sensorContext->CaptureBufferSize >= sizeof (WINBIO_CAPTURE_DATA) &&
sensorContext->CaptureBuffer->CaptureData.Size != 0 &&
sensorContext->CaptureBuffer->SensorStatus == WINBIO_SENSOR_ACCEPT)
{
// There is valid capture data in the Pipeline. Call the
// WbioEngineAcceptSampleData function to notify the engine adapter, but
// retain ownership of the buffer in the sensor adapter.
// WbioEngineAcceptSampleData is a wrapper function declared in the
// Winbio_adapter.h header file.
hr = WbioEngineAcceptSampleData(
Pipeline,
(PWINBIO_BIR)sensorContext->CaptureBuffer->CaptureData.Data,
sensorContext->CaptureBuffer->CaptureData.Size,
Purpose,
RejectDetail
);
}
else if (sensorContext->CaptureBuffer != NULL &&
sensorContext->CaptureBufferSize >= sizeof (WINBIO_CAPTURE_DATA) &&
sensorContext->CaptureBuffer->WinBioHresult == WINBIO_E_BAD_CAPTURE)
{
// The most recent capture was not acceptable. Do not attempt to push
// the sample to the engine. Instead, simply return the reject detail
// information generated by the previous capture.
hr = sensorContext->CaptureBuffer->WinBioHresult;
*RejectDetail = sensorContext->CaptureBuffer->RejectDetail;
}
else
{
hr = WINBIO_E_NO_CAPTURE_DATA;
}
return hr;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbio_adapter.h (einschließlich Winbio_adapter.h) |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für