xpmgr/BuildTools/Include/WinBio.h

484 lines
12 KiB
C

/*++
Copyright (c) 2007 Microsoft Corporation
Module Name:
winbio.h
Abstract:
WinBio public API.
Environment:
User mode only.
Revision History:
--*/
#ifndef _WINBIO_H_9B9AD1F6_97B1_4647_923D_583FD7428C4C_
#define _WINBIO_H_9B9AD1F6_97B1_4647_923D_583FD7428C4C_
#if (NTDDI_VERSION >= NTDDI_WIN7)
//
// Dependencies...
//
#include "winbio_types.h"
#include "winbio_err.h"
#ifdef __cplusplus
extern "C"{
#endif
///////////////////////////////////////////////////////////////////////////////
//
// Capability discovery
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioEnumServiceProviders(
__in WINBIO_BIOMETRIC_TYPE Factor,
__deref_out_ecount(*BspCount) WINBIO_BSP_SCHEMA **BspSchemaArray,
__out SIZE_T *BspCount
);
HRESULT WINAPI
WinBioEnumBiometricUnits(
__in WINBIO_BIOMETRIC_TYPE Factor,
__deref_out_ecount(*UnitCount) WINBIO_UNIT_SCHEMA **UnitSchemaArray,
__out SIZE_T *UnitCount
);
HRESULT WINAPI
WinBioEnumDatabases(
__in WINBIO_BIOMETRIC_TYPE Factor,
__deref_out_ecount(*StorageCount) WINBIO_STORAGE_SCHEMA **StorageSchemaArray,
__out SIZE_T *StorageCount
);
///////////////////////////////////////////////////////////////////////////////
//
// Session management
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioOpenSession(
__in WINBIO_BIOMETRIC_TYPE Factor,
__in WINBIO_POOL_TYPE PoolType,
__in WINBIO_SESSION_FLAGS Flags,
__in_ecount_opt(UnitCount) WINBIO_UNIT_ID *UnitArray,
__in_opt SIZE_T UnitCount,
__in_opt GUID *DatabaseId,
__out WINBIO_SESSION_HANDLE *SessionHandle
);
HRESULT WINAPI
WinBioCloseSession(
__in WINBIO_SESSION_HANDLE SessionHandle
);
///////////////////////////////////////////////////////////////////////////////
//
// High-level biometric operations
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioVerify(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_IDENTITY *Identity,
__in WINBIO_BIOMETRIC_SUBTYPE SubFactor,
__out WINBIO_UNIT_ID *UnitId,
__out BOOLEAN *Match,
__out WINBIO_REJECT_DETAIL *RejectDetail
);
typedef
VOID
(CALLBACK *PWINBIO_VERIFY_CALLBACK)(
__in_opt PVOID VerifyCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in BOOLEAN Match,
__in WINBIO_REJECT_DETAIL RejectDetail
);
HRESULT WINAPI
WinBioVerifyWithCallback(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_IDENTITY *Identity,
__in WINBIO_BIOMETRIC_SUBTYPE SubFactor,
__in PWINBIO_VERIFY_CALLBACK VerifyCallback,
__in_opt PVOID VerifyCallbackContext
);
HRESULT WINAPI
WinBioIdentify(
__in WINBIO_SESSION_HANDLE SessionHandle,
__out WINBIO_UNIT_ID *UnitId,
__out WINBIO_IDENTITY *Identity,
__out WINBIO_BIOMETRIC_SUBTYPE *SubFactor,
__out WINBIO_REJECT_DETAIL *RejectDetail
);
typedef
VOID
(CALLBACK *PWINBIO_IDENTIFY_CALLBACK)(
__in_opt PVOID IdentifyCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in WINBIO_IDENTITY *Identity,
__in WINBIO_BIOMETRIC_SUBTYPE SubFactor,
__in WINBIO_REJECT_DETAIL RejectDetail
);
HRESULT WINAPI
WinBioIdentifyWithCallback(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in PWINBIO_IDENTIFY_CALLBACK IdentifyCallback,
__in_opt PVOID IdentifyCallbackContext
);
HRESULT WINAPI
WinBioWait(
__in WINBIO_SESSION_HANDLE SessionHandle
);
HRESULT WINAPI
WinBioCancel(
__in WINBIO_SESSION_HANDLE SessionHandle
);
///////////////////////////////////////////////////////////////////////////////
//
// Sensor-location operations
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioLocateSensor(
__in WINBIO_SESSION_HANDLE SessionHandle,
__out WINBIO_UNIT_ID *UnitId
);
typedef
VOID
(CALLBACK *PWINBIO_LOCATE_SENSOR_CALLBACK)(
__in_opt PVOID LocateCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId
);
HRESULT WINAPI
WinBioLocateSensorWithCallback(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in PWINBIO_LOCATE_SENSOR_CALLBACK LocateCallback,
__in_opt PVOID LocateCallbackContext
);
///////////////////////////////////////////////////////////////////////////////
//
// Enrollment operations
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioEnrollBegin(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_BIOMETRIC_SUBTYPE SubFactor,
__in WINBIO_UNIT_ID UnitId
);
HRESULT WINAPI
WinBioEnrollCapture(
__in WINBIO_SESSION_HANDLE SessionHandle,
__out WINBIO_REJECT_DETAIL *RejectDetail
);
typedef
VOID
(CALLBACK *PWINBIO_ENROLL_CAPTURE_CALLBACK)(
__in_opt PVOID EnrollCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_REJECT_DETAIL RejectDetail
);
HRESULT WINAPI
WinBioEnrollCaptureWithCallback(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in PWINBIO_ENROLL_CAPTURE_CALLBACK EnrollCallback,
__in_opt PVOID EnrollCallbackContext
);
HRESULT WINAPI
WinBioEnrollCommit(
__in WINBIO_SESSION_HANDLE SessionHandle,
__out WINBIO_IDENTITY *Identity,
__out BOOLEAN *IsNewTemplate
);
HRESULT WINAPI
WinBioEnrollDiscard(
__in WINBIO_SESSION_HANDLE SessionHandle
);
HRESULT WINAPI
WinBioEnumEnrollments(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId,
__in WINBIO_IDENTITY *Identity,
__deref_out_ecount(*SubFactorCount) WINBIO_BIOMETRIC_SUBTYPE **SubFactorArray,
__out SIZE_T *SubFactorCount
);
///////////////////////////////////////////////////////////////////////////////
//
// Event monitors
//
///////////////////////////////////////////////////////////////////////////////
typedef
VOID
(CALLBACK *PWINBIO_EVENT_CALLBACK)(
__in_opt PVOID EventCallbackContext,
__in HRESULT OperationStatus,
__in PWINBIO_EVENT Event
);
HRESULT WINAPI
WinBioRegisterEventMonitor(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_EVENT_TYPE EventMask,
__in PWINBIO_EVENT_CALLBACK EventCallback,
__in_opt PVOID EventCallbackContext
);
HRESULT WINAPI
WinBioUnregisterEventMonitor(
__in WINBIO_SESSION_HANDLE SessionHandle
);
///////////////////////////////////////////////////////////////////////////////
//
// Raw biometric operations
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioCaptureSample(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_BIR_PURPOSE Purpose,
__in WINBIO_BIR_DATA_FLAGS Flags,
__out WINBIO_UNIT_ID *UnitId,
__deref_out_bcount(*SampleSize) PWINBIO_BIR *Sample,
__out SIZE_T *SampleSize,
__out WINBIO_REJECT_DETAIL *RejectDetail
);
typedef
VOID
(CALLBACK *PWINBIO_CAPTURE_CALLBACK)(
__in_opt PVOID CaptureCallbackContext,
__in HRESULT OperationStatus,
__in WINBIO_UNIT_ID UnitId,
__in_bcount(SampleSize) PWINBIO_BIR Sample,
__in SIZE_T SampleSize,
__in WINBIO_REJECT_DETAIL RejectDetail
);
HRESULT WINAPI
WinBioCaptureSampleWithCallback(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_BIR_PURPOSE Purpose,
__in WINBIO_BIR_DATA_FLAGS Flags,
__in PWINBIO_CAPTURE_CALLBACK CaptureCallback,
__in_opt PVOID CaptureCallbackContext
);
///////////////////////////////////////////////////////////////////////////////
//
// Storage management
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioDeleteTemplate(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId,
__in WINBIO_IDENTITY *Identity,
__in WINBIO_BIOMETRIC_SUBTYPE SubFactor
);
///////////////////////////////////////////////////////////////////////////////
//
// Extension interface
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioLockUnit(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId
);
HRESULT WINAPI
WinBioUnlockUnit(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId
);
HRESULT WINAPI
WinBioControlUnit(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId,
__in WINBIO_COMPONENT Component,
__in ULONG ControlCode,
__in PUCHAR SendBuffer,
__in SIZE_T SendBufferSize,
__in PUCHAR ReceiveBuffer,
__in SIZE_T ReceiveBufferSize,
__out SIZE_T *ReceiveDataSize,
__out ULONG *OperationStatus
);
HRESULT WINAPI
WinBioControlUnitPrivileged(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_UNIT_ID UnitId,
__in WINBIO_COMPONENT Component,
__in ULONG ControlCode,
__in PUCHAR SendBuffer,
__in SIZE_T SendBufferSize,
__in PUCHAR ReceiveBuffer,
__in SIZE_T ReceiveBufferSize,
__out SIZE_T *ReceiveDataSize,
__out ULONG *OperationStatus
);
///////////////////////////////////////////////////////////////////////////////
//
// Get/set property operations
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioGetProperty(
__in WINBIO_SESSION_HANDLE SessionHandle,
__in WINBIO_PROPERTY_TYPE PropertyType,
__in WINBIO_PROPERTY_ID PropertyId,
__in_opt WINBIO_UNIT_ID UnitId,
__in_opt WINBIO_IDENTITY *Identity,
__in_opt WINBIO_BIOMETRIC_SUBTYPE SubFactor,
__deref_out_bcount(*PropertyBufferSize) PVOID *PropertyBuffer,
__out SIZE_T *PropertyBufferSize
);
///////////////////////////////////////////////////////////////////////////////
//
// Resource management
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioFree(
__in PVOID Address
);
///////////////////////////////////////////////////////////////////////////////
//
// Credential management
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioSetCredential(
__in WINBIO_CREDENTIAL_TYPE Type,
__in_bcount(CredentialSize) PUCHAR Credential,
__in SIZE_T CredentialSize,
__in WINBIO_CREDENTIAL_FORMAT Format
);
HRESULT WINAPI
WinBioRemoveCredential(
__in WINBIO_IDENTITY Identity,
__in WINBIO_CREDENTIAL_TYPE Type
);
HRESULT WINAPI
WinBioRemoveAllCredentials(
void
);
HRESULT WINAPI
WinBioRemoveAllDomainCredentials(
void
);
HRESULT WINAPI
WinBioGetCredentialState(
__in WINBIO_IDENTITY Identity,
__in WINBIO_CREDENTIAL_TYPE Type,
__out WINBIO_CREDENTIAL_STATE *CredentialState
);
HRESULT WINAPI
WinBioLogonIdentifiedUser(
__in WINBIO_SESSION_HANDLE SessionHandle
);
///////////////////////////////////////////////////////////////////////////////
//
// Settings
//
///////////////////////////////////////////////////////////////////////////////
VOID WINAPI
WinBioGetEnabledSetting(
__out BOOLEAN* Value,
__out PWINBIO_SETTING_SOURCE_TYPE Source
);
VOID WINAPI
WinBioGetLogonSetting(
__out BOOLEAN* Value,
__out PWINBIO_SETTING_SOURCE_TYPE Source
);
VOID WINAPI
WinBioGetDomainLogonSetting(
__out BOOLEAN* Value,
__out PWINBIO_SETTING_SOURCE_TYPE Source
);
///////////////////////////////////////////////////////////////////////////////
//
// Focus tracking management
//
///////////////////////////////////////////////////////////////////////////////
HRESULT WINAPI
WinBioAcquireFocus(
void
);
HRESULT WINAPI
WinBioReleaseFocus(
void
);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
#endif // _WINBIO_H_9B9AD1F6_97B1_4647_923D_583FD7428C4C_