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


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

Освобождает память, выделенную для клиентского приложения, путем более раннего вызова функции API Windows Biometric Framework. Начиная с Windows 10 сборки 1607 эта функция доступна для использования с мобильным образом.

Синтаксис

HRESULT WinBioFree(
  [in] PVOID Address
);

Параметры

[in] Address

Адрес удаляемого блока памяти.

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

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

Код возврата Описание
E_POINTER
Параметр Address не может иметь значение NULL.

Комментарии

Несколько функций в API Биометрической платформы Windows выделяют память для клиентского приложения и передают адрес этой памяти клиенту. Чтобы предотвратить утечку памяти, необходимо вызвать WinBioFree , чтобы удалить блок после завершения работы с содержащейся в нем информацией. Память удаляется путем передачи ее адреса в WinBioFree. Адрес можно найти, отменив ссылку на указатель, заданный соответствующим параметром в каждой из следующих функций.

Функция Параметр Тип выделенного блока
WinBioCaptureSample Образец Структура
WinBioEnumBiometricUnits UnitSchemaArray Массив структур
WinBioEnumDatabases StorageSchemaArray Массив структур
WinBioEnumEnumEnrollments SubFactorArray массив целых чисел
WinBioEnumServiceProviders BspSchemaArray Массив структур
EventCallBack Событие Структура
CaptureCallback Образец Структура
 

Примеры

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

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT EnumerateSensors( )
{
    HRESULT hr = S_OK;
    PWINBIO_UNIT_SCHEMA unitSchema = NULL;
    SIZE_T unitCount = 0;

    // Enumerate the installed biometric units.
    hr = WinBioEnumBiometricUnits( 
            WINBIO_TYPE_FINGERPRINT,        // Type of biometric unit
            &unitSchema,                    // Array of unit schemas
            &unitCount );                   // Count of unit schemas

    if (FAILED(hr))
    {
        wprintf_s(L"\nWinBioEnumBiometricUnits failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

e_Exit:

    // Free memory.
    if (unitSchema != NULL)
    {
        WinBioFree(unitSchema);
        unitSchema = NULL;
    }

    return hr;
}


Требования

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

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

WinBioCaptureSample

WinBioEnumBiometricUnits

WinBioEnumDatabases

WinBioEnumEnumEnrollments

WinBioEnumServiceProviders