Поделиться через


Функция WinBioLocateSensor (winbio.h)

Извлекает идентификатор биометрической единицы, выбранной пользователем в интерактивном режиме.

Синтаксис

HRESULT WinBioLocateSensor(
  [in]            WINBIO_SESSION_HANDLE SessionHandle,
  [out, optional] WINBIO_UNIT_ID        *UnitId
);

Параметры

[in] SessionHandle

Значение WINBIO_SESSION_HANDLE, определяющее открытый биометрический сеанс. Откройте синхронный дескриптор сеанса, вызвав WinBioOpenSession. Откройте асинхронный дескриптор сеанса, вызвав WinBioAsyncOpenSession.

[out, optional] UnitId

Указатель на значение ULONG , указывающее биометрическую единицу.

Возвращаемое значение

Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_HANDLE
Недопустимый дескриптор сеанса.
E_POINTER
Указатель, заданный параметром UnitId, не может иметь значение NULL.
WINBIO_E_ENROLLMENT_IN_PROGRESS
Не удалось выполнить операцию, так как биометрическая единица в настоящее время используется для транзакции регистрации (только для системного пула).

Комментарии

Эту функцию можно использовать в системах с несколькими датчиками, чтобы определить, какой датчик предпочтителен для регистрации пользователем. Эта функция не возвращает идентификационные сведения. Он предоставляется только для указания выбора датчика пользователем.

Вызовы этой функции с использованием системного пула будут блокироваться, пока приложение не получит фокус окна и пользователь не предоставит биометрическую выборку. Поэтому рекомендуется, чтобы приложение не вызывало WinBioLocateSensor , пока оно не получит фокус. Способ получения фокуса зависит от типа приложения, которое вы пишете. Например, при создании приложения с графическим интерфейсом можно реализовать обработчик сообщений, который захватывает WM_ACTIVATE, WM_SETFOCUS или другое соответствующее сообщение. Если вы пишете приложение CUI, вызовите Метод GetConsoleWindow , чтобы получить дескриптор в окне консоли и передать этот дескриптор в функцию SetForegroundWindow , чтобы принудительно поместить окно консоли на передний план и назначить ему фокус. Если приложение выполняется в отсоединяемом процессе и не имеет окна или является службой Windows, используйте WinBioAcquireFocus и WinBioReleaseFocus для управления фокусом вручную.

Чтобы использовать WinBioLocateSensor синхронно, вызовите функцию с дескриптором сеанса, созданным путем вызова WinBioOpenSession. Функция блокируется, пока операция не завершится или не возникнет ошибка.

Чтобы использовать WinBioLocateSensor асинхронно , вызовите функцию с дескриптором сеанса, созданным путем вызова WinBioAsyncOpenSession. Платформа выделяет структуру WINBIO_ASYNC_RESULT и использует ее для возврата сведений об успешном или неудачном выполнении операции. Структура WINBIO_ASYNC_RESULT возвращается в обратный вызов приложения или в очередь сообщений приложения в зависимости от значения, заданного в параметре NotificationMethod функции WinBioAsyncOpenSession :

  • Если вы решили получать уведомления о завершении с помощью обратного вызова, необходимо реализовать функцию PWINBIO_ASYNC_COMPLETION_CALLBACK и задать для параметра NotificationMethodзначение WINBIO_ASYNC_NOTIFY_CALLBACK.
  • Если вы решили получать уведомления о завершении с помощью очереди сообщений приложения, необходимо задать для параметра NotificationMethodзначение WINBIO_ASYNC_NOTIFY_MESSAGE. Платформа возвращает указатель WINBIO_ASYNC_RESULT на поле LPARAM сообщения окна.
Чтобы предотвратить утечку памяти, необходимо вызвать WinBioFree , чтобы освободить структуру WINBIO_ASYNC_RESULT после завершения ее использования.

Windows 7: Эту операцию можно выполнить асинхронно с помощью функции WinBioLocateSensorWithCallback . Функция проверяет входные аргументы и возвращает немедленно. Если входные аргументы недопустимы, функция возвращает код ошибки. В противном случае платформа запускает операцию в другом потоке. Когда асинхронная операция завершается или возникает ошибка, платформа отправляет результаты в функцию PWINBIO_LOCATE_SENSOR_CALLBACK , реализованную приложением.

Примеры

Следующая функция вызывает WinBioLocateSensor для поиска установленного биометрического датчика. Ссылка на статическую библиотеку Winbio.lib и включение следующих файлов заголовков:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT LocateSensor( )
{
    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 WinBioEnumBiometricUnits failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Locate the sensor.
    wprintf_s(L"\n Tap the sensor once...\n");
    hr = WinBioLocateSensor( sessionHandle, &unitId);
    if (FAILED(hr))
    {
        wprintf_s(L"\n WinBioLocateSensor failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }
    wprintf_s(L"\n Sensor located successfully. ");
    wprintf_s(L"\n Unit ID = %d \n", unitId);

e_Exit:
    if (sessionHandle != NULL)
    {
        WinBioCloseSession(sessionHandle);
        sessionHandle = NULL;
    }

    wprintf_s(L"\n Hit any key to exit...");
    _getch();

    return hr;
}


Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winbio.h (включая Winbio.h)
Библиотека Winbio.lib
DLL Winbio.dll

См. также раздел

WinBioLocateSensorWithCallback