Функция WinBioAsyncOpenSession (winbio.h)
Асинхронно подключается к поставщику биометрических услуг и одной или нескольким биометрическим единицам. Начиная с Windows 10 сборки 1607 эта функция доступна для использования с мобильным образом. В случае успешного выполнения функция возвращает дескриптор биометрического сеанса. Каждая операция, выполняемая с помощью этого дескриптора, будет выполняться асинхронно, включая WinBioCloseSession, а результаты будут возвращены клиентскому приложению с помощью метода, указанного в параметре NotificationMethod .
Синхронную версию этой функции см. в разделе WinBioOpenSession.
Синтаксис
HRESULT WinBioAsyncOpenSession(
[in] WINBIO_BIOMETRIC_TYPE Factor,
[in] WINBIO_POOL_TYPE PoolType,
[in] WINBIO_SESSION_FLAGS Flags,
[in, optional] WINBIO_UNIT_ID *UnitArray,
[in, optional] SIZE_T UnitCount,
[in, optional] GUID *DatabaseId,
[in] WINBIO_ASYNC_NOTIFICATION_METHOD NotificationMethod,
[in, optional] HWND TargetWindow,
[in, optional] UINT MessageCode,
[in, optional] PWINBIO_ASYNC_COMPLETION_CALLBACK CallbackRoutine,
[in, optional] PVOID UserData,
[in] BOOL AsynchronousOpen,
[out, optional] WINBIO_SESSION_HANDLE *SessionHandle
);
Параметры
[in] Factor
Битовая маска флагов WINBIO_BIOMETRIC_TYPE , указывающая перечисляемые типы биометрических единиц. В настоящее время поддерживается только WINBIO_TYPE_FINGERPRINT .
[in] PoolType
Значение ULONG , указывающее тип биометрических единиц, которые будут использоваться в сеансе. Может иметь одно из следующих значений:
[in] Flags
Значение ULONG , указывающее конфигурацию биометрических единиц и характеристики доступа для нового сеанса. Флаги конфигурации указывают общую конфигурацию единиц в сеансе. Флаги доступа указывают, как приложение будет использовать биометрические единицы. Необходимо указать один флаг конфигурации, но его можно объединить с любым флагом доступа.
Значение | Значение |
---|---|
|
Группа: конфигурация Биометрические единицы работают способом, указанным во время установки. Это значение необходимо использовать, если параметр PoolTypeWINBIO_POOL_SYSTEM. |
|
Группа: конфигурация Биометрические единицы работают только в качестве базовых устройств захвата. Все операции обработки, сопоставления и хранения выполняются программными подключаемыми модулями. |
|
Группа: конфигурация Биометрические единицы используют возможности внутренней обработки и хранения. |
|
Группа: доступ Клиентское приложение записывает необработанные биометрические данные с помощью WinBioCaptureSample. |
|
Группа: доступ Клиент выполняет определяемые поставщиком операции управления с биометрической единицей, вызывая WinBioControlUnitPrivileged. |
[in, optional] UnitArray
Указатель на массив биометрических идентификаторов единиц, которые будут включены в сеанс. Для перечисления биометрических единиц можно вызвать WinBioEnumBiometricUnits . Присвойте этому значению значение NULL , если параметр PoolType имеет WINBIO_POOL_SYSTEM.
[in, optional] UnitCount
Значение типа , указывающее количество элементов в массиве, на который указывает параметр UnitArray . Задайте для этого значения нулевое значение, если параметр PoolType имеет значение WINBIO_POOL_SYSTEM.
[in, optional] DatabaseId
Значение типа , указывающее базы данных, которые будут использоваться сеансом. Если параметр PoolType имеет WINBIO_POOL_PRIVATE, необходимо указать GUID установленной базы данных. Если параметр PoolType не WINBIO_POOL_PRIVATE, можно указать одно из следующих общих значений.
[in] NotificationMethod
Указывает, как уведомления о завершении асинхронных операций в этом биометрическом сеансе должны доставляться клиентскому приложению. Это должно быть одно из следующих значений.
[in, optional] TargetWindow
Дескриптор окна, которое будет получать уведомления о завершении. Это значение игнорируется, если параметру NotificationMethod не присвоено значение WINBIO_ASYNC_NOTIFY_MESSAGE.
[in, optional] MessageCode
Код сообщения окна, который платформа должна отправить для обозначения уведомлений о завершении. Это значение игнорируется, если параметру NotificationMethod не присвоено значение WINBIO_ASYNC_NOTIFY_MESSAGE. Значение должно находиться в диапазоне WM_APP (0x8000) для 0xBFFF.
Windows Biometric Framework задает значение LPARAM сообщения в адрес структуры WINBIO_ASYNC_RESULT , содержащей результаты операции. Чтобы освободить структуру после завершения использования, необходимо вызвать WinBioFree .
[in, optional] CallbackRoutine
Адрес подпрограммы обратного вызова, вызываемой при запуске операции с использованием дескриптора сеанса. Это значение игнорируется, если параметру NotificationMethod не присвоено значение WINBIO_ASYNC_NOTIFY_CALLBACK.
[in, optional] UserData
Адрес буфера, предоставленного вызывающим объектом. Буфер не изменяется платформой или биометрической единицей. Он возвращается в структуре WINBIO_ASYNC_RESULT . Приложение может использовать эти данные, чтобы определить, какие действия следует выполнить после получения уведомления о завершении, или для хранения дополнительных сведений о запрошенной операции.
[in] AsynchronousOpen
Указывает, следует ли блокировать до открытия сеанса платформы. Если задать значение FALSE , процесс блокируется. Если указать значение TRUE , сеанс открывается асинхронно.
Если для синхронного открытия сеанса платформы задано значение FALSE , функция возвращает объекту успешное или неудачное выполнение непосредственно этой функцией в возвращаемом значении HRESULT . Если сеанс успешно открыт, первое асинхронное событие завершения, получаемое приложением, будет выполняться для асинхронной операции, запрошенной после открытия платформы.
Если задать значение TRUE для асинхронного открытия сеанса платформы, первым полученным уведомлением об асинхронном завершении будет открытие платформы. Если параметр NotificationMethod имеет значение WINBIO_ASYNC_NOTIFY_CALLBACK, результаты операций доставляются в структуру WINBIO_ASYNC_RESULT в функции обратного вызова, заданной параметром CallbackRoutine . Если для параметра NotificationMethod задано значение WINBIO_ASYNC_NOTIFY_MESSAGE, результаты операции доставляются в структуру WINBIO_ASYNC_RESULT , на которую указывает поле LPARAM сообщения окна.
[out, optional] SessionHandle
Если функция не выполнена, этот параметр будет иметь значение NULL.
Если сеанс открыт синхронно и успешно, этот параметр будет содержать указатель на дескриптор сеанса.
Если указать, что сеанс открывается асинхронно, этот метод возвращает немедленно, дескриптор сеанса будет иметь значение NULL, и необходимо проверить структуру WINBIO_ASYNC_RESULT , чтобы определить, был ли сеанс успешно открыт.
Возвращаемое значение
Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Код возврата | Описание |
---|---|
|
Недостаточно памяти для создания биометрического сеанса. |
|
Если для метода уведомления задано значение WINBIO_ASYNC_NOTIFY_MESSAGE, параметр TargetWindow не может иметь значение NULL или HWND_BROADCAST а параметр MessageCode не может быть равен нулю (0). |
|
Необходимо задать параметры SessionHandle и AsynchronousOpen .
Если для метода уведомления задано значение WINBIO_ASYNC_NOTIFY_CALLBACK, необходимо также указать адрес функции обратного вызова в параметре CallbackRoutine . |
|
Параметр Flags содержит флаг WINBIO_FLAG_RAW или WINBIO_FLAG_MAINTENANCE , а вызывающему объекту не предоставлено ни одно из разрешений на доступ. |
|
Один или несколько биометрических номеров единиц, указанных в параметре UnitArray , недопустимы. |
|
Клиентское приложение выполняется на клиенте удаленного рабочего стола и пытается открыть сеанс системного пула. |
|
Параметр PoolType имеет значение WINBIO_POOL_PRIVATE и один или несколько запрошенных датчиков в этом пуле недоступны. |
|
Текущая административная политика запрещает использование API Биометрической платформы Windows. |
Комментарии
Дескриптор сеанса, возвращаемый функцией WinBioAsyncOpenSession , можно использовать для создания асинхронных уведомлений о завершении для любой из следующих функций:
- WinBioCancel
- WinBioCaptureSample
- WinBioCloseSession
- WinBioControlUnit
- WinBioControlUnitPrivileged
- WinBioDeleteTemplate
- WinBioEnrollBegin
- WinBioEnrollCapture
- WinBioEnrollCommit
- WinBioEnrollDiscard
- WinBioEnumEnumEnrollments
- WinBioGetProperty
- WinBioIdentify
- WinBioLocateSensor
- WinBioLockUnit
- WinBioLogonIdentifiedUser
- WinBioRegisterEventMonitor
- WinBioUnlockUnit
- WinBioUnregisterEventMonitor
- WinBioVerify
- WinBioWait
- WinBioCaptureSampleWithCallback
- WinBioEnrollCaptureWithCallback
- WinBioIdentifyWithCallback
- WinBioIdentifyWithCallback
Параметр AsynchronousOpen определяет, будет ли заблокирована операция открытия. Этот параметр не влияет на поведение завершения последующих вызовов, использующих дескриптор сеанса.
Если для параметра AsynchronousOpen задано значение TRUE, эта функция вернет S_OK сразу после выполнения начальной проверки аргументов. Все ошибки, обнаруженные за пределами этой точки, будут сообщаться вызывающей стороне с помощью метода, заданного параметром NotificationMethod . То есть успешное возвращаемое значение указывает только на то, что параметры WinBioAsyncOpenSession были в порядке, а не на то, что операция открытия выполнена успешно. Чтобы определить, успешно ли выполнена операция открытия, необходимо изучить структуру WINBIO_ASYNC_RESULT .
Требования
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | winbio.h (включая Winbio.h) |
Библиотека | Winbio.lib |
DLL | Winbio.dll |