WinBioEnumServiceProviders 函数 (winbio.h)
检索有关已安装的生物识别服务提供商的信息。 从 Windows 10 版本 1607 开始,此函数可用于移动映像。
语法
HRESULT WinBioEnumServiceProviders(
[in] WINBIO_BIOMETRIC_TYPE Factor,
[out] WINBIO_BSP_SCHEMA **BspSchemaArray,
[out] SIZE_T *BspCount
);
参数
[in] Factor
WINBIO_BIOMETRIC_TYPE标志的位掩码,用于指定要枚举的生物识别单元类型。 目前仅支持 WINBIO_TYPE_FINGERPRINT 。
[out] BspSchemaArray
变量的地址,该变量接收指向包含每个可用服务提供程序相关信息的 WINBIO_BSP_SCHEMA 结构数组的指针。 如果函数不成功,则指针设置为 NULL。 如果函数成功,则必须将指针传递给 WinBioFree ,以释放内部为数组分配的内存。
[out] BspCount
指向一个值的指针,该值指定 BspSchemaArray 参数指向的结构数。
返回值
如果函数成功,则返回S_OK。 如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 常见 HRESULT 值。
返回代码 | 说明 |
---|---|
|
Factor 参数中包含的位掩码包含一个或多个无效类型位。 |
|
内存不足,无法完成请求。 |
|
BspSchemaArray 和 BspCount 参数不能为 NULL。 |
注解
Factor 参数目前仅支持WINBIO_TYPE_FINGERPRINT。
使用返回到 BspSchemaArray 参数的结构后,必须调用 WinBioFree 以释放内部为数组分配的内存。
如果因子位掩码中的所有因子位都引用不受支持的生物识别类型,则该函数将返回S_OK但 BspSchemaArray 参数指向的值将为 NULL,BspCount 参数将包含零。 虽然查询不受支持的生物识别因素不是错误,但查询的结果将是一个空集。
示例
下面的代码示例调用 WinBioEnumServiceProviders 来枚举已安装的服务提供程序。 该示例还包括一个函数 DisplayGuid,用于显示提供程序 ID。 链接到 Winbio.lib 静态库并包含以下头文件:
- Windows.h
- Stdio.h
- Conio.h
- Winbio.h
HRESULT EnumSvcProviders( )
{
// Declare variables.
HRESULT hr = S_OK;
PWINBIO_BSP_SCHEMA bspSchemaArray = NULL;
SIZE_T bspCount = 0;
SIZE_T index = 0;
// Enumerate the service providers.
hr = WinBioEnumServiceProviders(
WINBIO_TYPE_FINGERPRINT, // Provider to enumerate
&bspSchemaArray, // Provider schema array
&bspCount ); // Number of schemas returned
if (FAILED(hr))
{
wprintf_s(L"\n WinBioEnumServiceProviders failed. hr = 0x%x\n", hr);
goto e_Exit;
}
// Display the schema information.
wprintf_s(L"\nService providers: \n");
for (index = 0; index < bspCount; ++index)
{
wprintf_s(L"\n[%d]: \tBiometric factor: 0x%08x\n",
index,
bspSchemaArray[index].BiometricFactor );
wprintf_s(L"\tBspId: ");
DisplayGuid(&bspSchemaArray[index].BspId);
wprintf_s(L"\n");
wprintf_s(L"\tDescription: %ws\n",
bspSchemaArray[index].Description);
wprintf_s(L"\tVendor: %ws\n",
bspSchemaArray[index].Vendor );
wprintf_s(L"\tVersion: %d.%d\n",
bspSchemaArray[index].Version.MajorVersion,
bspSchemaArray[index].Version.MinorVersion);
wprintf_s(L"\n");
}
e_Exit:
if (bspSchemaArray != NULL)
{
WinBioFree(bspSchemaArray);
bspSchemaArray = NULL;
}
wprintf_s(L"\nPress any key to exit...");
_getch();
return hr;
}
//------------------------------------------------------------------------
// The following function displays a GUID to the console window.
//
VOID DisplayGuid( __in PWINBIO_UUID Guid )
{
wprintf_s(
L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
Guid->Data1,
Guid->Data2,
Guid->Data3,
Guid->Data4[0],
Guid->Data4[1],
Guid->Data4[2],
Guid->Data4[3],
Guid->Data4[4],
Guid->Data4[5],
Guid->Data4[6],
Guid->Data4[7]
);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbio.h (包括 Winbio.h) |
Library | Winbio.lib |
DLL | Winbio.dll |