WINBIO_ASYNC_RESULT结构 (winbio.h)

WINBIO_ASYNC_RESULT 结构包含异步操作的结果。

语法

typedef struct _WINBIO_ASYNC_RESULT {
  WINBIO_SESSION_HANDLE SessionHandle;
  WINBIO_OPERATION_TYPE Operation;
  ULONGLONG             SequenceNumber;
  LONGLONG              TimeStamp;
  HRESULT               ApiStatus;
  WINBIO_UNIT_ID        UnitId;
  PVOID                 UserData;
  union {
    struct {
      BOOLEAN              Match;
      WINBIO_REJECT_DETAIL RejectDetail;
    } Verify;
    struct {
      WINBIO_IDENTITY          Identity;
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
      WINBIO_REJECT_DETAIL     RejectDetail;
    } Identify;
    struct {
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
    } EnrollBegin;
    struct {
      WINBIO_REJECT_DETAIL RejectDetail;
    } EnrollCapture;
    struct {
      WINBIO_IDENTITY Identity;
      BOOLEAN         IsNewTemplate;
    } EnrollCommit;
    struct {
      WINBIO_IDENTITY          Identity;
      SIZE_T                   SubFactorCount;
      WINBIO_BIOMETRIC_SUBTYPE *SubFactorArray;
    } EnumEnrollments;
    struct {
      PWINBIO_BIR          Sample;
      SIZE_T               SampleSize;
      WINBIO_REJECT_DETAIL RejectDetail;
    } CaptureSample;
    struct {
      WINBIO_IDENTITY          Identity;
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
    } DeleteTemplate;
    struct {
      WINBIO_PROPERTY_TYPE     PropertyType;
      WINBIO_PROPERTY_ID       PropertyId;
      WINBIO_IDENTITY          Identity;
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
      SIZE_T                   PropertyBufferSize;
      PVOID                    PropertyBuffer;
    } GetProperty;
    struct {
      WINBIO_PROPERTY_TYPE     PropertyType;
      WINBIO_PROPERTY_ID       PropertyId;
      WINBIO_IDENTITY          Identity;
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
      SIZE_T                   PropertyBufferSize;
      PVOID                    PropertyBuffer;
    } SetProperty;
    struct {
      WINBIO_EVENT Event;
    } GetEvent;
    struct {
      WINBIO_COMPONENT Component;
      ULONG            ControlCode;
      ULONG            OperationStatus;
      PUCHAR           SendBuffer;
      SIZE_T           SendBufferSize;
      PUCHAR           ReceiveBuffer;
      SIZE_T           ReceiveBufferSize;
      SIZE_T           ReceiveDataSize;
    } ControlUnit;
    struct {
      SIZE_T            BspCount;
      WINBIO_BSP_SCHEMA *BspSchemaArray;
    } EnumServiceProviders;
    struct {
      SIZE_T             UnitCount;
      WINBIO_UNIT_SCHEMA *UnitSchemaArray;
    } EnumBiometricUnits;
    struct {
      SIZE_T                StorageCount;
      WINBIO_STORAGE_SCHEMA *StorageSchemaArray;
    } EnumDatabases;
    struct {
      BOOLEAN                  Match;
      WINBIO_REJECT_DETAIL     RejectDetail;
      WINBIO_PROTECTION_TICKET Ticket;
    } VerifyAndReleaseTicket;
    struct {
      WINBIO_IDENTITY          Identity;
      WINBIO_BIOMETRIC_SUBTYPE SubFactor;
      WINBIO_REJECT_DETAIL     RejectDetail;
      WINBIO_PROTECTION_TICKET Ticket;
    } IdentifyAndReleaseTicket;
    struct {
      ULONGLONG SelectorValue;
    } EnrollSelect;
    struct {
      WINBIO_PRESENCE_CHANGE ChangeType;
      SIZE_T                 PresenceCount;
      WINBIO_PRESENCE        *PresenceArray;
    } MonitorPresence;
    struct {
      WINBIO_IDENTITY          Identity;
      WINBIO_PROTECTION_POLICY Policy;
    } GetProtectionPolicy;
    struct {
      WINBIO_EXTENDED_UNIT_STATUS ExtendedStatus;
    } NotifyUnitStatusChange;
  } Parameters;
} WINBIO_ASYNC_RESULT, *PWINBIO_ASYNC_RESULT;

成员

SessionHandle

通过调用 WinBioAsyncOpenSession 函数或 WinBioAsyncOpenFramework 函数启动的异步会话的句柄。

Operation

异步操作的类型。 有关详细信息,请参阅 WINBIO_OPERATION_TYPE常量

SequenceNumber

异步操作的序列号。 为生物识别会话中的每个操作按顺序分配整数,从一 (1) 开始。 对于任何会话,始终为打开操作分配第一个序列号,为关闭操作分配最后一个序列号。 如果应用程序将多个操作排队,则可以使用序列号来执行错误处理。 例如,可以在将特定序列号发送到应用程序之前忽略操作结果。

TimeStamp

生物识别操作开始的系统日期和时间。 有关详细信息,请参阅 GetSystemTimeAsFileTime 函数。

ApiStatus

操作返回的错误代码。

UnitId

执行操作的生物识别单元的数字单位标识符。

UserData

调用方提供的可选缓冲区的地址。 框架或生物识别单元不会修改缓冲区。 应用程序可以使用数据来帮助它确定在收到完成通知后要执行的操作,或维护有关所请求操作的其他信息。

Parameters

包含嵌套结构的联合,这些结构包含有关客户端应用程序启动的异步操作成功或失败的其他信息。

Parameters.Verify

包含对 WinBioVerify 的异步调用的结果。

Parameters.Verify.Match

指定捕获的示例是否与用户标识匹配。

Parameters.Verify.RejectDetail

有关验证失败的其他信息。 有关详细信息,请参阅“备注”。

Parameters.Identify

包含对 WinBioIdentify 的异步调用的结果。

Parameters.Identify.Identity

提供生物识别示例的用户的 GUID 或 SID。

Parameters.Identify.SubFactor

与生物识别样本关联的子因素。 有关详细信息,请参阅“备注”。

Parameters.Identify.RejectDetail

有关捕获和识别生物识别样本的失败(如果有)的其他信息。 有关详细信息,请参阅“备注”。

Parameters.EnrollBegin

包含对 WinBioEnrollBegin 的异步调用的结果。

Parameters.EnrollBegin.SubFactor

有关注册的其他信息。 有关详细信息,请参阅“备注”。

Parameters.EnrollCapture

包含对 WinBioEnrollCapture 的异步调用的结果。

Parameters.EnrollCapture.RejectDetail

有关无法捕获生物识别示例的其他信息。 有关详细信息,请参阅“备注”。

Parameters.EnrollCommit

包含对 WinBioEnrollCommit 的异步调用的结果。

Parameters.EnrollCommit.Identity

要保存的模板的 GUID 或 SID。

Parameters.EnrollCommit.IsNewTemplate

指定要添加到数据库的模板是否为新模板。

Parameters.EnumEnrollments

包含对 WinBioEnumEnrollments 的异步调用的结果。

Parameters.EnumEnrollments.Identity

从中检索子因素的模板的 GUID 或 SID。

Parameters.EnumEnrollments.SubFactorCount

SubFactorArray 成员指向的数组中的元素数。

Parameters.EnumEnrollments.SubFactorArray

指向子因素数组的指针。 有关详细信息,请参阅“备注”。

Parameters.CaptureSample

包含对 WinBioCaptureSample 的异步调用的结果。

Parameters.CaptureSample.Sample

指向包含示例 的WINBIO_BIR 结构的指针。

Parameters.CaptureSample.SampleSize

Sample 成员中返回的WINBIO_BIR结构的大小(以字节为单位)。

Parameters.CaptureSample.RejectDetail

有关无法捕获生物识别示例的其他信息。 有关详细信息,请参阅“备注”。

Parameters.DeleteTemplate

包含对 WinBioDeleteTemplate 的异步调用的结果。

Parameters.DeleteTemplate.Identity

已删除的模板的 GUID 或 SID。

Parameters.DeleteTemplate.SubFactor

有关模板的其他信息。

Parameters.GetProperty

包含对 WinBioGetProperty 的异步调用的结果。

Parameters.GetProperty.PropertyType

属性信息的源。 目前,这将 WINBIO_PROPERTY_TYPE_UNIT

Parameters.GetProperty.PropertyId

查询的属性。 目前,这将 WINBIO_PROPERTY_SAMPLE_HINT

Parameters.GetProperty.Identity

这是一个保留值,将为 NULL

Parameters.GetProperty.SubFactor

这是保留的,将 WINBIO_SUBTYPE_NO_INFORMATION

Parameters.GetProperty.PropertyBufferSize

PropertyBuffer 成员指向的属性值的大小(以字节为单位)。

Parameters.GetProperty.PropertyBuffer

指向属性值的指针。

Parameters.SetProperty

包含对 WinBioSetProperty 的异步调用的结果。 从 Windows 10 开始支持此成员。

SetProperty.PropretyBufferSize

PropertyBuffer 参数指向的结构的大小(以字节为单位)。

Parameters.SetProperty.PropertyType

一个WINBIO_PROPERTY_TYPE值,该值指定所设置的属性的类型。 目前只能 WINBIO_PROPERTY_TYPE_ACCOUNT

Parameters.SetProperty.PropertyId

一个WINBIO_PROPERTY_ID值,该值指定已设置的属性。 目前,此值只能 WINBIO_PROPERTY_ANTI_SPOOF_POLICY。 所有其他属性都是只读的。

Parameters.SetProperty.Identity

一个WINBIO_IDENTITY结构,用于指定为其设置了属性的帐户。

Parameters.SetProperty.SubFactor

保留。 目前,此值将始终 WINBIO_SUBTYPE_NO_INFORMATION

Parameters.SetProperty.PropertyBufferSize

Parameters.SetProperty.PropertyBuffer

指向结构的指针,该结构指定属性所要设置的值。 对于 WINBIO_PROPERTY_ANTI_SPOOF_POLICY 属性,结构是 WINBIO_ANTI_SPOOF_POLICY 结构。

Parameters.GetEvent

包含有关引发的事件的状态信息。

Parameters.GetEvent.Event

包含事件信息。

Parameters.ControlUnit

包含对 WinBioControlUnitWinBioControlUnitPrivileged 的异步调用的结果。

Parameters.ControlUnit.Component

执行操作的生物识别单元中的组件。

Parameters.ControlUnit.ControlCode

供应商定义的代码由 WinBioControlUnitWinBioControlUnitPrivileged 函数的 UnitId 参数指定的生物识别单元以及 Component 参数指定的适配器所识别。

Parameters.ControlUnit.OperationStatus

供应商定义的状态代码,指定控制操作的结果。

Parameters.ControlUnit.SendBuffer

指向缓冲区的指针,该缓冲区包含组件发送到适配器的控件信息。 缓冲区的格式和内容由供应商定义。

Parameters.ControlUnit.SendBufferSize

SendBuffer 成员指定的缓冲区的大小(以字节为单位)。

Parameters.ControlUnit.ReceiveBuffer

指向缓冲区的指针,该缓冲区接收由 Component 成员指定的适配器发送的信息。 缓冲区的格式和内容由供应商定义。

Parameters.ControlUnit.ReceiveBufferSize

ReceiveBuffer 成员指定的缓冲区的大小(以字节为单位)。

Parameters.ControlUnit.ReceiveDataSize

写入 由 ReceiveBuffer 成员指定的缓冲区的数据的大小(以字节为单位)。

Parameters.EnumServiceProviders

包含对 WinBioEnumServiceProvidersWinBioAsyncEnumServiceProviders 的异步调用的结果。

Parameters.EnumServiceProviders.BspCount

BspSchemaArray 成员指向的结构数。

Parameters.EnumServiceProviders.BspSchemaArray

指向包含每个可用服务提供程序相关信息的 WINBIO_BSP_SCHEMA 结构的数组的指针。

Parameters.EnumBiometricUnits

包含对 WinBioEnumBiometricUnitsWinBioAsyncEnumBiometricUnits 的异步调用的结果。

Parameters.EnumBiometricUnits.UnitCount

UnitSchemaArray 成员指向的结构数。

Parameters.EnumBiometricUnits.UnitSchemaArray

包含每个枚举生物识别单元相关信息 的WINBIO_UNIT_SCHEMA 结构的数组。

Parameters.EnumDatabases

包含对 WinBioEnumDatabasesWinBioAsyncEnumDatabases 的异步调用的结果。

Parameters.EnumDatabases.StorageCount

StorageSchemaArray 成员指向的结构数。

Parameters.EnumDatabases.StorageSchemaArray

包含每个数据库相关信息 的WINBIO_STORAGE_SCHEMA 结构的数组。

Parameters.VerifyAndReleaseTicket

保留。 从 Windows 10 开始支持此成员。

Parameters.VerifyAndReleaseTicket.Match

保留。

Parameters.VerifyAndReleaseTicket.RejectDetail

保留。

Parameters.VerifyAndReleaseTicket.Ticket

保留。

Parameters.IdentifyAndReleaseTicket

保留。 从 Windows 10 开始支持此成员。

Parameters.IdentifyAndReleaseTicket.Identity

保留。

Parameters.IdentifyAndReleaseTicket.SubFactor

保留。

Parameters.IdentifyAndReleaseTicket.RejectDetail

保留。

Parameters.IdentifyAndReleaseTicket.Ticket

保留。

Parameters.EnrollSelect

包含对 WinBioEnrollSelect 的异步调用的结果。 从 Windows 10 开始支持此成员。

Parameters.EnrollSelect.SelectorValue

一个 值,该值标识为注册选择的个人。

Parameters.MonitorPresence

包含对 WinBioMonitorPresence 的异步调用的结果。 从 Windows 10 开始支持此成员。

Parameters.MonitorPresence.ChangeType

指示所发生事件的类型的 WINBIO_PRESENCE_CHANGE 值。

Parameters.MonitorPresence.PresenceCount

MonitorPresence.PresenceArray 成员指向的数组的大小。

Parameters.MonitorPresence.PresenceArray

WINBIO_PRESENCE结构数组的地址,每个受监视者对应一个。

Parameters.GetProtectionPolicy

Parameters.GetProtectionPolicy.Identity

Parameters.GetProtectionPolicy.Policy

Parameters.NotifyUnitStatusChange

Parameters.NotifyUnitStatusChange.ExtendedStatus

注解

异步操作通过打开生物识别会话或框架会话开始。 调用 WinBioAsyncOpenSession 以打开生物识别会话。 调用 WinBioAsyncOpenFramework 以打开框架会话。

可以使用异步生物识别会话句柄以异步方式调用以下任何操作:

可以使用异步框架句柄以异步方式调用以下操作:

WINBIO_ASYNC_RESULT结构由 Windows 生物识别框架在内部分配。 因此,使用时,请调用 WinBioFree 释放分配的内存并避免泄漏。 因为这也会释放所有嵌套数据结构,因此不应保留 WINBIO_ASYNC_RESULT 结构中返回的任何指针的副本。 如果要保存嵌套结构中返回的任何数据,请在调用 WinBioFree 之前创建该数据的专用副本。

Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2:Windows 生物识别框架仅支持指纹读取器。 因此,如果操作失败并在 WINBIO_REJECT_DETAIL 常量中返回其他信息,则它将是以下值之一:

  • WINBIO_FP_TOO_HIGH
  • WINBIO_FP_TOO_LOW
  • WINBIO_FP_TOO_LEFT
  • WINBIO_FP_TOO_RIGHT
  • WINBIO_FP_TOO_FAST
  • WINBIO_FP_TOO_SLOW
  • WINBIO_FP_POOR_QUALITY
  • WINBIO_FP_TOO_SKEWED
  • WINBIO_FP_TOO_SHORT
  • WINBIO_FP_MERGE_FAILURE

此外,如果操作使用 WINBIO_BIOMETRIC_SUBTYPE 数据类型,它将是以下值之一:

  • WINBIO_ANSI_381_POS_UNKNOWN
  • WINBIO_ANSI_381_POS_RH_THUMB
  • WINBIO_ANSI_381_POS_RH_INDEX_FINGER
  • WINBIO_ANSI_381_POS_RH_MIDDLE_FINGER
  • WINBIO_ANSI_381_POS_RH_RING_FINGER
  • WINBIO_ANSI_381_POS_RH_LITTLE_FINGER
  • WINBIO_ANSI_381_POS_LH_THUMB
  • WINBIO_ANSI_381_POS_LH_INDEX_FINGER
  • WINBIO_ANSI_381_POS_LH_MIDDLE_FINGER
  • WINBIO_ANSI_381_POS_LH_RING_FINGER
  • WINBIO_ANSI_381_POS_LH_LITTLE_FINGER
  • WINBIO_ANSI_381_POS_RH_FOUR_FINGERS
  • WINBIO_ANSI_381_POS_LH_FOUR_FINGERS
  • WINBIO_ANSI_381_POS_TWO_THUMBS

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
标头 winbio.h

另请参阅

WINBIO_REJECT_DETAIL常量

WinBioAsyncOpenFramework

WinBioAsyncOpenSession