mirror of https://github.com/UMSKT/xpmgr.git
484 lines
12 KiB
C
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_
|
|
|