允许调用方对生物识别单元执行特权供应商定义的控制作。 从 Windows 10 版本 1607 开始,此函数可用于移动映像。 客户端必须调用此函数来执行需要提升访问权限的扩展供应商作。 如果不需要任何权限,客户端可以调用 WinBioControlUnit 函数。
Syntax
HRESULT WinBioControlUnitPrivileged(
[in] WINBIO_SESSION_HANDLE SessionHandle,
[in] WINBIO_UNIT_ID UnitId,
[in] WINBIO_COMPONENT Component,
[in] ULONG ControlCode,
PUCHAR SendBuffer,
[in] SIZE_T SendBufferSize,
PUCHAR ReceiveBuffer,
[in] SIZE_T ReceiveBufferSize,
SIZE_T *ReceiveDataSize,
[out, optional] ULONG *OperationStatus
);
参数
[in] SessionHandle
标识开放生物识别会话 的WINBIO_SESSION_HANDLE 值。 通过调用 WinBioOpenSession 打开同步会话句柄。 通过调用 WinBioAsyncOpenSession 打开异步会话句柄。
[in] UnitId
标识生物识别单元 的WINBIO_UNIT_ID 值。 此值必须与 以前在 WinBioLockUnit 函数中使用的单位 ID 相对应。
[in] Component
一个WINBIO_COMPONENT值,该值指定应执行作的生物识别单元中的组件。 这可以是以下值之一。
| 价值 | Meaning |
|---|---|
|
将命令发送到传感器适配器。 |
|
将命令发送到引擎适配器。 |
|
将命令发送到存储适配器。 |
[in] ControlCode
由 UnitId 参数指定的生物识别单元和 Component 参数指定的适配器识别的供应商定义代码。
SendBuffer
包含要发送到 Component 参数指定的适配器的控件信息的缓冲区的地址。 缓冲区的格式和内容是供应商定义的。
[in] SendBufferSize
SendBuffer 参数指定的缓冲区的大小(以字节为单位)。
ReceiveBuffer
接收 由 Component 参数指定的适配器发送信息的缓冲区的地址。 缓冲区的格式和内容是供应商定义的。
[in] ReceiveBufferSize
ReceiveBuffer 参数指定的缓冲区的大小(以字节为单位)。
ReceiveDataSize
指向 SIZE_T 值的指针,该值包含写入 ReceiveBuffer 参数指定的缓冲区的数据的大小(以字节为单位)。
[out, optional] OperationStatus
指向包含供应商定义的状态代码的整数的指针,该代码指定控制作的结果。
返回值
如果函数成功,它将返回S_OK。 如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
| 返回代码 | Description |
|---|---|
|
会话句柄无效。 |
|
无法识别 ControlCode 参数中指定的值。 |
|
SendBuffer、ReceiveBuffer、ReceiveDataSize、OperationStatus 参数不能为 NULL。 |
|
调用方没有执行作的权限,或者未使用 WINBIO_FLAG_MAINTENANCE打开会话。 |
|
无法识别 ControlCode 参数中指定的值。 |
|
必须锁定 UnitId 参数指定的生物识别单元,然后才能执行任何控制作。 |
注解
创建插件的供应商必须决定哪些扩展作是特权的,哪些作可供所有客户端使用。 若要执行特权作,客户端应用程序必须调用 WinBioControlUnitPrivileged 函数。 Windows 生物识别框架仅允许具有相应访问权限的客户端调用此函数。 若要执行不需要特权的作,客户端应调用 WinBioControlUnit 函数。
在调用 WinBioControlUnitPrivileged 之前,必须调用 WinBioLockUnitUnit。 WinBioLockUnit 函数创建一个锁定区域,可在其中安全地执行供应商定义的作。
若要成功调用此函数,必须通过指定 WINBIO_FLAG_MAINTENANCE打开会话句柄。 只有管理员和本地系统帐户具有必要的权限。
若要同步使用 WinBioControlUnitPrivileged ,请使用通过调用 WinBioOpenSession 创建的会话句柄调用函数。 函数会阻止作完成或遇到错误。
若要异步使用 WinBioControlUnitPrivileged ,请使用通过调用 WinBioAsyncOpenSession 创建的会话句柄调用函数。 框架分配 WINBIO_ASYNC_RESULT 结构,并使用它返回有关作成功或失败的信息。 WINBIO_ASYNC_RESULT结构将返回到应用程序回调或应用程序消息队列,具体取决于在 WinBioAsyncOpenSession 函数的 NotificationMethod 参数中设置的值。
- 如果选择使用回调接收完成通知,则必须实现 PWINBIO_ASYNC_COMPLETION_CALLBACK 函数并将 NotificationMethod 参数设置为 WINBIO_ASYNC_NOTIFY_CALLBACK。
- 如果选择使用应用程序消息队列接收完成通知,则必须将 NotificationMethod 参数设置为 WINBIO_ASYNC_NOTIFY_MESSAGE。 框架返回指向窗口消息的 LPARAM 字段的WINBIO_ASYNC_RESULT指针。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 7 [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 R2 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | winbio.h (包括 Winbio.h) |
| Library | Winbio.lib |
| DLL | Winbio.dll |