WinBioControlUnitPrivileged 函数 (winbio.h)

允许调用方对生物识别单元执行特权供应商定义的控制作。 从 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
WINBIO_COMPONENT_SENSOR
将命令发送到传感器适配器。
WINBIO_COMPONENT_ENGINE
将命令发送到引擎适配器。
WINBIO_COMPONENT_STORAGE
将命令发送到存储适配器。

[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
E_HANDLE
会话句柄无效。
E_INVALIDARG
无法识别 ControlCode 参数中指定的值。
E_POINTER
SendBufferReceiveBufferReceiveDataSizeOperationStatus 参数不能为 NULL
E_ACCESSDENIED
调用方没有执行作的权限,或者未使用 WINBIO_FLAG_MAINTENANCE打开会话。
E_INVALIDARG
无法识别 ControlCode 参数中指定的值。
WINBIO_E_LOCK_VIOLATION
必须锁定 UnitId 参数指定的生物识别单元,然后才能执行任何控制作。

注解

创建插件的供应商必须决定哪些扩展作是特权的,哪些作可供所有客户端使用。 若要执行特权作,客户端应用程序必须调用 WinBioControlUnitPrivileged 函数。 Windows 生物识别框架仅允许具有相应访问权限的客户端调用此函数。 若要执行不需要特权的作,客户端应调用 WinBioControlUnit 函数。

在调用 WinBioControlUnitPrivileged 之前,必须调用 WinBioLockUnitUnitWinBioLockUnit 函数创建一个锁定区域,可在其中安全地执行供应商定义的作。

若要成功调用此函数,必须通过指定 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指针。
若要防止内存泄漏,必须在使用完WINBIO_ASYNC_RESULT结构后调用 WinBioFree 释放该结构。

要求

Requirement 价值
最低支持的客户端 Windows 7 [仅限桌面应用]
支持的最低服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows操作系统
Header winbio.h (包括 Winbio.h)
Library Winbio.lib
DLL Winbio.dll

另请参阅

WinBioControlUnit

WinBioLockUnit