BioMiniSDK For Windows V3.6.0 Bio Mini SDK 3.6.0 Reference Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 300
Download | |
Open PDF In Browser | View PDF |
BioMini SDK for Windows v3.6.0 i/vii BioMin SDK for Windows v3.6.0 Table of Contents 1. Introduction .......................................................... 1 1.1 What's New ..................................................................................... 1 1.2 History ............................................................................................. 1 1.3 Overview ......................................................................................... 5 SDK Structure ..................................................................................................................... 5 SDK Package Consists of .................................................................................................... 5 System Requirements ........................................................................................................ 7 2. Getting Started .................................................... 8 2.1 SDK Installation ............................................................................. 8 Installation Instructions ...................................................................................................... 8 Step-by-Step Installation Guide .......................................................................................... 8 2.2 BioMini Demo Program ............................................................... 12 Basic Demo ....................................................................................................................... 12 MultiScanner Demo .......................................................................................................... 13 3. C/C++ Development .......................................... 15 3.1 Environment Setting ................................................................... 15 3.2 Enrollment Tutorial ..................................................................... 19 Workflow ........................................................................................................................... 19 Example ............................................................................................................................ 19 3.3 Verification Tutorial .................................................................... 22 Verification Workflow ........................................................................................................ 22 Example ............................................................................................................................ 22 3.4 Identification Tutorial ................................................................. 25 Identification Workflow ..................................................................................................... 25 Example ............................................................................................................................ 25 3.5 C/C++ APIs .................................................................................... 28 UFS_Init ............................................................................................................................ 33 UFS_Update ...................................................................................................................... 34 UFS_Uninit ........................................................................................................................ 35 UFS_SetScannerCallback .................................................................................................. 36 UFS_RemoveScannerCallback .......................................................................................... 37 UFS_GetScannerNumber .................................................................................................. 38 UFS_GetScannerHandle .................................................................................................... 39 UFS_GetScannerHandleByID ............................................................................................. 40 UFS_GetScannerIndex ...................................................................................................... 41 UFS_GetScannerID ............................................................................................................ 42 UFS_GetScannerType ....................................................................................................... 43 UFS_GetParameter ........................................................................................................... 44 UFS_SetParameter ............................................................................................................ 46 UFS_IsSensorOn ................................................................................................................ 48 UFS_IsFingerOn ................................................................................................................. 49 ii/vii BioMin SDK for Windows v3.6.0 UFS_CaptureSingleImage ................................................................................................. 50 UFS_StartCapturing .......................................................................................................... 51 UFS_StartAutoCapture ...................................................................................................... 52 UFS_IsCapturing ............................................................................................................... 53 UFS_AbortCapturing ......................................................................................................... 54 UFS_Extract ...................................................................................................................... 55 UFS_ExtractEx .................................................................................................................. 57 UFS_SetEncryptionKey ...................................................................................................... 59 UFS_EncryptTemplate ....................................................................................................... 60 UFS_DecryptTemplate ...................................................................................................... 62 UFS_GetCaptureImageBufferInfo ...................................................................................... 64 UFS_GetCaptureImageBuffer ............................................................................................ 65 UFS_GetCaptureImageBufferToBMPImageBuffer .............................................................. 67 UFS_GetCaptureImageBufferTo19794_4ImageBuffer ....................................................... 69 UFS_GetCaptureImageBufferToWSQImageBuffer ............................................................. 71 UFS_GetCaptureImageBufferToWSQImageBufferVar ........................................................ 73 UFS_DecompressWSQBMP ................................................................................................ 75 UFS_DecompressWSQBMPMem ........................................................................................ 76 UFS_DrawCaptureImageBuffer ......................................................................................... 78 UFS_DrawFeatureBuffer .................................................................................................... 80 UFS_SaveCaptureImageBufferToBMP ............................................................................... 82 UFS_SaveCaptureImageBufferTo19794_4 ........................................................................ 83 UFS_SaveCaptureImageBufferToWSQ .............................................................................. 84 UFS_SaveCaptureImageBufferToWSQVar ......................................................................... 85 UFS_ClearCaptureImageBuffer ......................................................................................... 86 UFS_GetErrorString ........................................................................................................... 87 UFS_GetTemplateType ..................................................................................................... 88 UFS_SetTemplateType ...................................................................................................... 89 UFS_SelectTemplate ......................................................................................................... 90 UFS_SelectTemplateEx ..................................................................................................... 92 UFS_GetFPQuality ............................................................................................................. 94 UFS_GetFeatureNumber ................................................................................................... 95 UFS_EnrollUI ..................................................................................................................... 96 UFS_VerifyUI ..................................................................................................................... 98 UFS_CaptureSingleUI ...................................................................................................... 100 UFM_Create .................................................................................................................... 101 UFM_Delete .................................................................................................................... 102 UFM_GetParameter ......................................................................................................... 103 UFM_SetParameter ......................................................................................................... 104 UFM_Verify ...................................................................................................................... 105 UFM_VerifyEx .................................................................................................................. 107 UFM_Identify, UFM_IdentifyMT ........................................................................................ 109 UFM_AbortIdentify .......................................................................................................... 112 UFM_IdentifyInit .............................................................................................................. 113 UFM_IdentifyNext ........................................................................................................... 114 UFM_RotateTemplate ..................................................................................................... 116 UFM_GetErrorString ........................................................................................................ 117 UFM_GetTemplateType ................................................................................................... 118 UFM_SetTemplateType ................................................................................................... 119 UFS_STATUS ................................................................................................................... 120 UFM_STATUS ................................................................................................................... 121 iii/vii BioMin SDK for Windows v3.6.0 4. .net Development ............................................ 122 4.1 Environment Setting ................................................................. 122 4.2 .net APIs ...................................................................................... 124 UFScanner.Init ................................................................................................................ 129 UFScanner.Update .......................................................................................................... 129 UFScanner.Uninit ............................................................................................................ 130 UFScanner.SetScannerCallback ...................................................................................... 130 UFScanner.RemoveScannerCallback .............................................................................. 131 UFScanner.GetScannerNumber ...................................................................................... 131 UFScanner.GetScannerHandle ........................................................................................ 132 UFScanner.GetScannerHandleByID ................................................................................ 132 UFScanner.GetScannerIndex .......................................................................................... 133 UFScanner.GetScannerID ............................................................................................... 133 UFScanner.GetScannerType ........................................................................................... 134 UFScanner.GetParameter ............................................................................................... 134 UFScanner.SetParameter ................................................................................................ 136 UFScanner.IsSensorOn ................................................................................................... 136 UFScanner.IsFingerOn .................................................................................................... 137 UFScanner.CaptureSingleImage ..................................................................................... 137 UFScanner.StartCapturing .............................................................................................. 138 UFScanner.StartAutoCapture .......................................................................................... 138 UFScanner.IsCapturing ................................................................................................... 139 UFScanner.AbortCapturing ............................................................................................. 139 UFScanner.Extract .......................................................................................................... 140 UFScanner.ExtractEx ...................................................................................................... 140 UFScanner.SetEncryptionKey ......................................................................................... 141 UFScanner.EncryptTemplate .......................................................................................... 141 UFScanner.DecryptTemplate .......................................................................................... 142 UFScanner.GetCaptureImageBufferInfo .......................................................................... 142 UFScanner.GetCaptureImageBuffer ................................................................................ 143 UFScanner.GetCaptureImageBufferToBMPImageBuffer .................................................. 143 UFScanner.GetCaptureImageBufferTo19794_4ImageBuffer ........................................... 144 UFScanner.GetCaptureImageBufferToWSQImageBuffer ................................................. 144 UFScanner.GetCaptureImageBufferToWSQImageBufferVar ........................................... 145 UFScanner.DecompressWSQBMP ................................................................................... 145 UFScanner.DecompressWSQBMPMem ............................................................................ 146 UFScanner.DrawCaptureImageBuffer ............................................................................. 146 UFScanner.DrawFeatureBuffer ....................................................................................... 147 UFScanner.SaveCaptureImageBufferToBMP ................................................................... 147 UFScanner.SaveCaptureImageBufferTo19794_4 ............................................................ 148 UFScanner.SaveCaptureImageBufferToWSQ .................................................................. 148 UFScanner.SaveCaptureImageBufferToWSQVar ............................................................. 149 UFScanner.ClearCaptureImageBuffer ............................................................................. 149 UFScanner.GetErrorString .............................................................................................. 150 UFScanner.GetTemplateType ......................................................................................... 150 UFScanner.SetTemplateType ......................................................................................... 151 UFScanner.SelectTemplate ............................................................................................. 151 UFScanner.SelectTemplateEx ......................................................................................... 152 UFScanner.GetFPQuality ................................................................................................. 152 iv/vii BioMin SDK for Windows v3.6.0 UFScanner.GetFeatureNumber ....................................................................................... 153 UFScanner.EnrollUI ......................................................................................................... 153 UFScanner.VerifyUI ......................................................................................................... 155 UFMatcher.Create ........................................................................................................... 156 UFMatcher.Delete ........................................................................................................... 157 UFMatcher.GetParameter ............................................................................................... 157 UFMatcher.SetParameter ................................................................................................ 158 UFMatcher.Verify ............................................................................................................ 158 UFMatcher.Identify, UFM_IdentifyMT .............................................................................. 160 UFMatcher.AbortIdentify ................................................................................................. 160 UFMatcher.IdentifyInit .................................................................................................... 161 UFMatcher.IdentifyNext .................................................................................................. 161 UFMatcher.RotateTemplate ............................................................................................ 162 UFMatcher.GetErrorString .............................................................................................. 162 UFMatcher.GetTemplateType ......................................................................................... 163 UFMatcher.SetTemplateType ......................................................................................... 163 UFScanner.STATUS ......................................................................................................... 164 UFMatcher.STATUS ......................................................................................................... 165 5. JAVA Development ........................................... 166 5.1 Environment Setting ................................................................. 166 Setting Guide .................................................................................................................. 167 5.2 Java APIs ..................................................................................... 169 UFS_Init .......................................................................................................................... 173 UFS_Update .................................................................................................................... 174 UFS_Uninit ...................................................................................................................... 175 UFS_SetScannerCallback ................................................................................................ 176 UFS_RemoveScannerCallback ........................................................................................ 177 UFS_GetScannerNumber ................................................................................................ 178 UFS_GetScannerHandle .................................................................................................. 179 UFS_GetScannerHandleByID ........................................................................................... 180 UFS_GetScannerIndex .................................................................................................... 181 UFS_GetScannerID .......................................................................................................... 182 UFS_GetScannerType ..................................................................................................... 183 UFS_GetParameter ......................................................................................................... 184 UFS_SetParameter .......................................................................................................... 186 UFS_IsSensorOn .............................................................................................................. 188 UFS_IsFingerOn ............................................................................................................... 189 UFS_CaptureSingleImage ............................................................................................... 190 UFS_StartCapturing ........................................................................................................ 191 UFS_StartAutoCapture .................................................................................................... 192 UFS_IsCapturing ............................................................................................................. 193 UFS_AbortCapturing ....................................................................................................... 194 UFS_Extract .................................................................................................................... 195 UFS_ExtractEx ................................................................................................................ 196 UFS_SetEncryptionKey .................................................................................................... 198 UFS_EncryptTemplate ..................................................................................................... 199 UFS_DecryptTemplate .................................................................................................... 200 UFS_GetCaptureImageBufferInfo .................................................................................... 201 UFS_GetCaptureImageBuffer .......................................................................................... 202 v/vii BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToBMPImageBuffer ............................................................ 203 UFS_GetCaptureImageBufferTo19794_4ImageBuffer ..................................................... 204 UFS_GetCaptureImageBufferToWSQImageBuffer ........................................................... 205 UFS_GetCaptureImageBufferToWSQImageBufferVar ...................................................... 206 UFS_DecompressWSQBMP .............................................................................................. 207 UFS_DecompressWSQBMPMem ...................................................................................... 208 UFS_SaveCaptureImageBufferToBMP ............................................................................. 209 UFS_SaveCaptureImageBufferTo19794_4 ...................................................................... 210 UFS_SaveCaptureImageBufferToWSQ ............................................................................ 211 UFS_SaveCaptureImageBufferToWSQVar ....................................................................... 212 UFS_ClearCaptureImageBuffer ....................................................................................... 213 UFS_GetErrorString ......................................................................................................... 214 UFS_GetTemplateType ................................................................................................... 215 UFS_SetTemplateType .................................................................................................... 216 UFS_SelectTemplate ....................................................................................................... 217 UFS_SelectTemplateEx ................................................................................................... 218 UFS_GetFPQuality ........................................................................................................... 219 UFS_GetFeatureNumber ................................................................................................. 220 UFM_Create .................................................................................................................... 221 UFM_Delete .................................................................................................................... 222 UFM_GetParameter ......................................................................................................... 223 UFM_SetParameter ......................................................................................................... 225 UFM_Verify ...................................................................................................................... 227 UFM_Identify, UFM_IdentifyMT ........................................................................................ 229 UFM_AbortIdentify .......................................................................................................... 230 UFM_IdentifyInit .............................................................................................................. 231 UFM_IdentifyNext ........................................................................................................... 232 UFM_RotateTemplate ..................................................................................................... 234 UFM_GetErrorString ........................................................................................................ 235 UFM_GetTemplateType ................................................................................................... 236 UFM_SetTemplateType ................................................................................................... 237 UFS_STATUS ................................................................................................................... 238 UFM_STATUS ................................................................................................................... 239 6. WebAgent .......................................................... 240 6.1 Introduction ................................................................................ 241 Contents of Web-agent packages ................................................................................... 241 Usage ............................................................................................................................. 241 6.2 WebAgent APIs .......................................................................... 245 api/createSessionID ........................................................................................................ 248 api/sessionClear ............................................................................................................. 249 api/version ...................................................................................................................... 250 api/initDevice .................................................................................................................. 251 api/uninitDevice .............................................................................................................. 252 api/close ......................................................................................................................... 253 api/getScannerStatus ..................................................................................................... 254 api/isFingerOn ................................................................................................................ 255 api/setParameters .......................................................................................................... 256 api/getParameters .......................................................................................................... 257 api/captureSingle ............................................................................................................ 258 vi/vii BioMin SDK for Windows v3.6.0 api/startCapturing ........................................................................................................... 259 api/autoCapture .............................................................................................................. 260 api/abortCapture ............................................................................................................ 261 api/getTemplateData ...................................................................................................... 262 api/getImageData ........................................................................................................... 263 api/saveImageBuffer ....................................................................................................... 264 db/enroll ......................................................................................................................... 266 db/verify ......................................................................................................................... 268 db/identify ...................................................................................................................... 269 db/update ....................................................................................................................... 270 db/delete ........................................................................................................................ 271 db/deleteAll .................................................................................................................... 272 db/queryData .................................................................................................................. 273 db/abortIdentify .............................................................................................................. 275 db/getTemplateData ....................................................................................................... 276 img/captureImg.bmp ...................................................................................................... 277 img/previewImg.bmp ...................................................................................................... 278 img/previewStreaming.bmp ........................................................................................... 279 img/convertedCaptureImage.bmp(.dat/.wsq) ................................................................. 280 7. Appendix ........................................................... 282 What is Biometrics? ......................................................................... 282 Scanners ............................................................................................ 286 BioMini Plus2 .................................................................................................................. BioMini Slim .................................................................................................................... BioMini Combo ................................................................................................................ BioMini Plus .................................................................................................................... BioMini ............................................................................................................................ 286 287 288 289 290 TroubleShooting ............................................................................... 291 vii/vii BioMin SDK for Windows v3.6.0 1. Introduction The BioMini SDK provides the specific functions to capture fingerprints, to display scanner real-time images on the screen while the finger is on the platen and includes all PC interfaces and drivers. 1.1 What's New Version 3.6 Compatible with new Suprema fingerprint scanners BioMini Plus2 (SFR550) UFScanner - UFS_CaptureSingleUI function added Performs same as UFS_CaptureSingle and Popup Window appears UFMatcher - UFM_VerifyEx function added Performs same as UFM_Verify, and returns matching score by 6th parameter 1.2 History Version 3.5.5 Do not check license file(UFLicense.dat file removed) UFScanner - New APIs added Save WSQ Image Buffer to variable size Decompress WSQ format data to data of Bmp format Get quality information of image(UFS_GetFPQuality) Added EnrollUI, VerifyUI APIs UFDatabase is removed Version 3.5.0 Compatible with new Suprema fingerprint scanners BioMini Slim (SFR600), BioMini Combo and SFU-S20 UFScanner - UFS_StartAutoCapture added Auto finger detect and capture function UFScanner - UFS_ExtractEx function added Template extraction function for large size template UFScanner - UFS_SelectTemplateEx added Template selection function for large size template Version 3.4.2 The SentinelHASP Basic USB dongle added for license control 1/293 BioMin SDK for Windows v3.6.0 Version 3.4.1 Java JNA module fixed Call the UFM_Identify_J instead of the UFM_Identify when using JNA module Version 3.4 Universal manufacturer ID embedded in scanners without license control Version 3.3.1 Support new sensor, which has AGC(Auto Gain Control) feature on BioMini Removed brightness setting from new sensor since the AGC automatically finds it's optimal brightness setting Version 3.3.0 Updated extraction and matching algorithm is applied The performance on the low quality fingerprints is improved Applied advanced quality measure in extraction function Modified basic samples to use 1 template or 2 templates when enrollment Support JAVA JNI wrapper Added JAVA JNI demo sample Added latent fingerprint defense for BioMini Support ISO19794-4 image format saving in BioMini SDK Support WSQ image format saving in BioMini SDK Version 3.2.0 Support BioMini Plus - High quality sensor scanner LFD(live fingerprint detection) algorithm - the live finger detection algorithm. Support WSQ file format in Image SDK -UFExtractor Support image drawing function in Image SDK - UFExtractor Support feature drawing function in BioMini SDK - UFScanner Update sample demo of SDK and sample demo usage tutorial of manual Version 3.1.0 Support Java interfaces Support ANSI378 templates Version 3.1.0.6 Added BioMini Lock to Image SDK- License lock mode 2/293 BioMin SDK for Windows v3.6.0 Version 3.0.0 Completely new interface compared with version 2.x Support full functionality for managing scanners Support handling multiple devices Support plug-and-play events Ensure thread safety for all functions Scanner, matcher, extractor and database are treated as independent objects Version 3.0.0.15 Added license scheme Using RSD(Real Scan Device) UFExtractor - Modify maximum image size 1024 x 1024 from 640 x 480 Version 3.0.0.14 UFScanner, UFExtractor - Added function which get number of Minutiae UFS_GetFeatureNumber, UFE_GetFeatureNumber UFMatcher - Added parameter for 360-degree matching. UFM_PARAM_AUTO_ROTATE (If set 1 at SetParameter support 360-degree matching) Version 3.0.0.13 Support MAC address type license Version 3.0.0.12 UFMatcher - UFM_RotateTemplate function supports SIF type Version 3.0.0.11 Modify SFR200's extract algorithm parameter for template compatibility between SFR200 and OP2/OP3 Version 3.0.0.8 Error correction about UFScanner.dll SFR300 Ver.2's Logon process Version 3.0.0.7 Modify UFDatabase.mdb file problem UFDatabase.dll - Add error syntax when DB open 3/293 BioMin SDK for Windows v3.6.0 Version 3.0.0.5 UFExtractor - Add UFE_MODE_GENERAL mode (Using general image type) Modify maximum resolution 640 x 640 Change UFScanner_IZZIX.dll to latest versions(1.1.6.22) Version 3.0.0.4 Modify Identify function Fast Mode and improve speed: About 20000 matches/sec 4/293 BioMin SDK for Windows v3.6.0 1.3 Overview SDK Structure BioMini SDK contains UFScanner module to control a device and UFMatcher module to perform verification & identification. Also, it provides Suprema.UFscanner.dll, Suprema.UFMatcher.dll for .net development and BioMiniSDK.jar file for JAVA development. SDK Package Consists of 5/293 BioMin SDK for Windows v3.6.0 Path File Name \cert\localhost_cert.crt \cert\localhost_cert.key \html\array.generics.min.js \html\BiominiWebAgent.js \html\favicon.ico \html\index.html \html\jquery.min.js \res\en\img\*.jpg \res\kr\img\*.jpg \res\ps\img\*.jpg /java/BioMiniSDK.jar demoBioMini.jar demoBioMini_java.bat \x64\* \bin AgentCtrl.exe Biomini_DemoCS.exe Biomini_DemoVBNET.exe Biomini_DemoVC.exe MultiScannerDemo.exe Biomini_WebAgent.exe CertMgr.exe D.LC DiagnosisTool.exe IEnrollUI.dll libeay32.dll, ssleay32.dll MultiScannerDemo.exe \docs Suprema.tlb Suprema.UFMatcher.dll Suprema.UFScanner.dll UFMatcher.dll UFScanner.dll UFScanner_IZZIX.dl register_enrollui.bat BioMiniSDK_for_Windows_3.6_Reference_Manual.pdf 6/293 Description Certificate for localhost URL (replaceable with a file of the same name) Key for the same Opensource library to support array functionality used in sample javascript Javascript file to utilize Web-agent APIs (replaceable) Icon for localhost URL Example page for web-api connected with web-agent jQuery library for sample javascript file Background & buttion image sources for Enrollment UI. Replaceable on demand of your application design Package file for BioMiniJNI package file for demoBioMini Script file to execute demoBioMini Librariese and executable files for x64 platform Web-Agent Control UI Demo using C# Demo using VB .NET Demo using VC++ 9.0 Multi scanner demo using VC++ 9.0 Web-Agent Control console application Certificate manage tool Essential component of dignosis tool Diagnosis tool for Suprema fingerprint scanners COM object DLL for Enrollment UI You should register(using regsvr32.exe) before you use Enrollment UI Open SSL libraries Multi scanner demo using VC++ 9.0 Type library for Visual Basic 6.0 Matcher module wrapper for .NET Scanner module wrapper for .NET Matcher module Scanner module Scanner sub module for SFR200 Register EnrollUI dll to registry Reference Manual BioMin SDK for Windows v3.6.0 Path File Name UFMatcher.h \include UFScanner.h Description Header file for matcher module Header file for scanner module Universal driver for SFR400, \drivers\SFR Driver(unified)/Sup_Fingerprint_Driver_v2.2.0.exe SFR410, SFR500, SFR550, SFR600 \drivers/SFR200\* Driver packages for SFR200 \drivers/SFR300-S\* Driver packages for SFR300-S Driver packages for SFR300\drivers/SFR300(ver.2)\* S(Ver.2) Visual Studio 2013 redistributable \install \Redistribution Package\vc2013redist_x64.exe package(x64) Visual Studio 2013 redistributable \Redistribution Package\vc2013redist_x86.exe package(x86) Visual Studio 2008 redistributable \Redistribution Package\vc2008redist_x86.exe package(x86) Visual Studio 2008 redistributable \Redistribution Package\vc2008redist_x64.exe package(x64) UFMatcher.lib Library file for matcher module \lib UFScanner.lib Library file for scanner module \x64\*.lib Library files for x64 Contains image demo sample code \Java\demoBioMini.java for java Contains demo sample project for \VS60\UFE30_DemoVB60\* Visual Basic 6.0 Contains demo sample project for \VS90\Biomini_DemoVC\* Visual C++ 9.0 \sample Contains demo sample project for \VS90\Biomini_DemoCS\* C# Contains demo sample project for \VS90\Biomini_DemoVBNET\* Visual Basic .NET Contains multi scanner demo \VS90\MultiScannerDemoVC\* sample project for Visual C++ 9.0 System Requirements The following minimum system requirements are necessary in order to use the SDK described in this document Operating System: Windows 7 / 8.1 / 10 (32/64bit) Tools: Visual Studio 2008 (9.0) or higher (.NET Framework 3.5) - Visual C++, Visual C#, Visual Basic .NET Java SDK 1.4 or higher (using JNI(Java Native Interface)) Hardware: CPU: Core 2 Due 2.4GHz Memory: 1G or more memory PC Interface: USB 2.0 7/293 BioMin SDK for Windows v3.6.0 2. Getting Started 2.1 SDK Installation Installing the BioMini SDK copies all the required driver files into the same directory, where they can be easily accessed during the BioMini installation. Installation Instructions 1. 2. 3. 4. 5. Disconnect the USB cable of device from the PC Uninstall all previous versions of the BioMini SDK Double click on BioMini SDK Setup_v3.6.exe Use the default settings of the install program Refer to the BioMini SDK v3.6 Documentation. You can find this documentation at C:\Program Files\BioMini\docs Step-by-Step Installation Guide 1. Disconnect the USB cable of device from the PC before proceeding to install the program 2. Click “Next” if the above screen appears after running “Setup_BioMini_SDK_3.6.exe” 8/293 BioMin SDK for Windows v3.6.0 3. Select the “BioMini SDK” and Click “Next” to continue 4. Click the I Agree to proceed the installation 5. Click “Install” button to continue the installation 9/293 BioMin SDK for Windows v3.6.0 6. Installing(This process can take 5sec under) 7. If the BioMini Device Driver is not installed, check the “Install BioMini Driver”, then click on close. 8. After installation of the SDK, BioMini Device Driver will be installed automatically. 10/293 BioMin SDK for Windows v3.6.0 9. Once the driver is successfully installed, click “Finish” button to restart the PC. 10. After installation, you can detect BioMini from device management if the BioMini is plugged in. 11/293 BioMin SDK for Windows v3.6.0 2.2 BioMini Demo Program BioMini_Demo provides the basic usage about managing scanners and executing enrollment, verification and identification. This program uses UFScanner and UFMatcher modules. Basic Demo Executable File Location bin\Biomini_DemoCS.exe bin\Biomini_DemoVC.exe bin\Biomini_DemoVBNET.exe Java version Source code of all demo application Picture of the Demo sample applications User Interface Components BioMini SDK Demo sample demonstrates how to use BioMini SDK roughly. Please use this sample as a reference for making your own program. BioMini SDK demo provides following methods: Initialize Scanner - A scanner should be initialized for using all functions about the scanner Enrolls fingerprint - A fingerprint can be enrolled by using BioMini scanner Verification - A fingerprint can be verified against enrolled fingerprint Identification - A fingerprint can be identified against every enrolled fingerprint Saves data - Saves a template file or a fingerprint image to BMP format Every Biomini_Demo application is written by different languages from Visual C++ to JAVA. But they are made of same functions and same interface design. 12/293 BioMin SDK for Windows v3.6.0 MultiScanner Demo MultiScannerDemo provides the demo about using multiple scanners simultaneously. This Program uses UFScanner and UFMatcher modules. Executable File Location bin\MultiScannerDemo.exe Source code of all demo application Picture of the Demo sample applications User Interface Components BioMini SDK MultiScannerDemo sample demonstrates how to use BioMini SDK with multiple scanners. Please use this sample as a reference for making your own program. BioMini SDK Multiscanner demo provides following methods: Initialize Scanner - The scanners should be initialized for using the functions about the scanner Enroll fingerprint - A fingerprint can be enrolled by using BioMini scanner Identification - A fingerprint can be identified against every enrolled fingerprint MultiScannerDemo application written in only Visual C++ language (VS9.0) The picture bellow shows the BioMini SDK MultiScannerDemo sample main window and description about bunch of interface components. 13/293 BioMin SDK for Windows v3.6.0 14/293 BioMin SDK for Windows v3.6.0 3. C/C++ Development 3.1 Environment Setting This section will expain how to import BioMini Libraries(UFScanner.dll, UFMatcher.dll) on Microsoft Visual Studio 2013. 1. Create new MFC Application project 2. Select [Dialog based] for application type 15/293 BioMin SDK for Windows v3.6.0 3. Add “%SDKDIR%include\” folder at “Project Property Pages → C/C++ → General → Additional Include Directories”. ex) C:\Program Files\Suprema\BioMini\include\ 4. Add “%SDKDIR%lib\” folder at “Project Property Pages → Linker → General → Additional Library Directories”. ex) C:\Program Files\Suprema\BioMini\lib\ 16/293 BioMin SDK for Windows v3.6.0 5. Add “UFScanner.lib, UFMatcher.lib” at “Project Property Pages → Linker → Input → Additional Dependencies”. 6. Add “UFScanner.h, UFMatcher.h” files to “HelloBioMiniDlg.cpp” source code. 7. Add initializing code as below at OnInitDialog( ) Message. // TODO: Add extra initialization here UFS_STATUS ufs_res; ufs_res = UFS_Init(); if (ufs_res != UFS_OK) return TRUE; int nScannerNumber = ; ufs_res = UFS_GetScannerNumber(&nScannerNumber); if (nScannerNumber > ) { AfxMessageBox(_T("Device is initialized successfully."), , ); } 17/293 BioMin SDK for Windows v3.6.0 8. Add release code as below at OnClose( ) Message. void CHelloBioMiniDlg::OnClose() { // TODO: Add your message handler code here and/or call default UFS_Uninit(); CDialogEx::OnClose(); } 9. Compile Project and copy UFScanner.dll & UFMatcher.dll at $(SolutionDir)Debug\ 10. You can check message as below by running HelloBioMini.exe after connecting the device. 18/293 BioMin SDK for Windows v3.6.0 3.2 Enrollment Tutorial An application for people to enroll: Captures multiple fingerprints for at least two fingers from a fingerprint reader. Checks image quality to ensure that a good quality scan is obtained. Extracts the fingerprint minutiae. Saves the fingerprint images and/or minutiae in a database. During the enrollment process, one or more fingers are scanned for each person. We recommend that you enroll at least two fingers (more is recommended) because in the event of an accident or injury to one finger, another enrolled finger can be used to identify the individual. The enrollment application needs to perform the following steps to enroll a single finger from a user: Workflow 1. 2. 3. 4. 5. 6. Call UFS_Init() to initialize the device for image acquisition. Call UFS_GetScannerHandle() to get the scanner handle Call UFS_Setparameter() to set up the parameters of the scanner Call UFS_SetTemplateType() to set up the type of the template Call UFS_CaptureSingleImage() to start to acquire the fingerprint image Call UFS_Uninit() to uninitialize scanners Example 1. Preliminaries // Add Suprema UFScanner lib (lib\UFScanner.lib) to the Project. // Add following statements in the source #include "UFScanner.h" // We use 1024 bytes template size in this tutorial. #define TEMPLATE_SIZE 1024 2. Initialize scanner module and check number of scanners UFS_STATUS ufs_res; int nScannerNumber; // Initialize scanner module ufs_res = UFS_Init(); 19/293 BioMin SDK for Windows v3.6.0 // Always check status return codes after running SDK functions // Meaning of status return code can be retrieved using UFS_GetErrorString() // In the tutorial, we omit error check codes // Check number of scanners ufs_res = UFS_GetScannerNumber(&nScannerNumber); // If number of scanner is under one, that means there is no scanner in this system 3. Get first scanner UFS_STATUS ufs_res; HUFScanner hScanner; // Get first scanner handle (0 means first scanner) ufs_res = UFS_GetScannerHandle(, &hScanner); 4. Set parameters // hScanner comes from section 3 UFS_STATUS ufs_res; int nValue; // Set timeout for capturing images to 5 seconds nValue = 5000; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TIMEOUT, &nValue); // Set template size to 1024 bytes nValue = MAX_TEMPLATE_SIZE; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TEMPLATE_SIZE, &nValue); // Set not to detect core when extracting template nValue = FALSE; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_DETECT_CORE, &nValue); 5. Capture image and extract template // hScanner comes from section 3 UFS_STATUS ufs_res; unsigned char aTemplate[MAX_TEMPLATE_SIZE]; int nTemplateSize; int nEnrollQuality; // Clear capture buffer ufs_res = UFS_ClearCaptureImageBuffer(hScanner); // Capture single image ufs_res = UFS_CaptureSingleImage(hScanner); // If capturing images is fail, iterate above capture routine or show error message 20/293 BioMin SDK for Windows v3.6.0 // Extract template from captured image ufs_res = UFS_ExtractEx(hScanner, MAX_TEMPLATE_SIZE, aTemplate, &nTemplateSize, &nEnrollQuality); // If extraction is succeed, check nEnrollQuality is above predefined quality threshold 6. Uninitialize scanner module UFS_STATUS ufs_res; // Uninitialize scanner module ufs_res = UFS_Uninit(); 21/293 BioMin SDK for Windows v3.6.0 3.3 Verification Tutorial Fingerprint recognition involves operation: Verifying - Comparing a fingerprint against a specific user’s enrolled fingerprint(s) to verify a specific person’s identity (e.g., when the user types their name and then uses a fingerprint rather than a password). Verification Workflow 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. UFS_Init() to initialize scanners for image acquisition UFS_GetScannerHandle() to get the scanner handle UFS_Setparameter() to set up the parameters of the scanner UFS_SetTemplateType() to set up the type of the template UFS_CaptureSingleImage() to start to acquire the fingerprint image UFS_Extract() to extract the captured image to template UFM_Create() to create a Matcher for matching UFM_Verify() to compare it to a selected template in database UFM_Delete() to close a Matcher UFS_Uninit() to uninitialize scanners Example 1. Preliminaries // Add Suprema UFMatcher lib (lib\UFMatcher.lib) to the Project // Add following statements in the source #include "UFMatcher.h" // We use 1024 bytes template size in this tutorial #define MAX_TEMPLATE_SIZE 1024 2. Initialize scanner module and check number of scanners UFM_STATUS ufm_res; HUFMatcher hMatcher; // Create matcher ufm_res = UFM_Create(&hMatcher); 22/293 BioMin SDK for Windows v3.6.0 // Always check status return codes after running SDK functions // Meaning of status return code can be retrieved using UFM_GetErrorString() // In the tutorial, we omit error check codes 3. Get first scanner UFS_STATUS ufs_res; HUFScanner hScanner; // Get first scanner handle (0 means first scanner) ufs_res = UFS_GetScannerHandle(, &hScanner); 4. Set parameters // hScanner comes from section 3 UFS_STATUS ufs_res; int value; // Set timeout for capturing images to 5 seconds value = 5000; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TIMEOUT, &value); // Set template size to 1024 bytes value = MAX_TEMPLATE_SIZE; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TEMPLATE_SIZE, &value); // Set not to detect core when extracting template value = FALSE; ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_DETECT_CORE, &value); 5. Capture image and extract template // hScanner comes from section 3 UFS_STATUS ufs_res; byte[] Template = new byte[MAX_TEMPLATE_SIZE]; int TemplateSize; int EnrollQuality; // Clear capture buffer ufs_res = Scanner.ClearCaptureImageBuffer(); // Capture single image ufs_res = Scanner.CaptureSingleImage(); // If capturing images is fail, iterate above capture routine or show error message // Extract template from captured image 23/293 BioMin SDK for Windows v3.6.0 ufs_res = Scanner.ExtractEx(MAX_TEMPLATE_SIZE, Template, out TemplateSize, out EnrollQuality); // If extraction is succeed, check nEnrollQuality is above predefined quality threshold 6. Uninitialize scanner module UFS_STATUS ufs_res; // Uninitialize scanner module ufs_res = UFS_Uninit(); 24/293 BioMin SDK for Windows v3.6.0 3.4 Identification Tutorial Fingerprint recognition involves operation: Identification - Comparing a fingerprint against the database of enrolled fingerprints and confirming that the fingerprint is enrolled (e.g., to open a door there many be many authorized users). Identification Workflow 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. UFS_Init() to initialize scanners for image acquisition UFS_GetScannerHandle() to get the scanner handle UFS_Setparameter() to set up the parameters of the scanner UFS_SetTemplateType() to set up the template type UFS_CaptureSingleImage() to start to acquire the fingerprint image UFS_Extract() to extract the captured image to template UFM_Create() to create a Matcher for matching UFM_Identify() to compare it to N number of templates in database UFM_Delete() to close a Matcher UFS_Uninit() to uninitialize scanners Example 1. Preliminaries // Add Suprema UFMatcher lib (lib\UFMatcher.lib) to the Project // Add following statements in the source #include "UFMatcher.h" // We use 1024 bytes template size in this tutorial #define MAX_TEMPLATE_SIZE 1024 // Set maximum template number to 50 (number depends on application) #define MAX_TEMPLATE_NUM 50 2. Create matcher UFM_STATUS ufm_res; 25/293 BioMin SDK for Windows v3.6.0 HUFMatcher hMatcher; // Create matcher ufm_res = UFM_Create(&hMatcher); // Always check status return codes after running SDK functions // Meaning of status return code can be retrieved using UFM_GetErrorString() // In the tutorial, we omit error check codes 3. Set parameters // hMatcher comes from section 2 UFM_STATUS ufm_res; int value; // Set security level to 4 value = 4; ufm_res = UFM_SetParameter(hMatcher, UFM_PARAM_SECURITY_LEVEL, &value); // Set fast mode on value = TRUE; ufm_res = UFM_SetParameter(hMatcher, UFM_PARAM_FAST_MODE, &value); 4. Identify // hMatcher comes from section 2 UFM_STATUS ufm_res; unsigned char Template1[MAX_TEMPLATE_SIZE]; int Template1Size; unsigned char* Template2Array[MAX_TEMPLATE_NUM]; int Template2SizeArray[MAX_TEMPLATE_NUM]; int Template2Num; int nMatchIndex; // Allocate Template2Array for (i = ; i < MAX_TEMPLATE_NUM; i++) { Template2Array[i] = (unsigned char*)malloc(MAX_TEMPLATE_SIZE); memset(Template2Array[i], , MAX_TEMPLATE_SIZE); } // Get Template1 from scanner or image or database // Get Template2Array from scanner or image or database // Identify Template1 from Template2Array, set timeout to 5 seconds ufm_res = UFM_Identify(hMatcher, Template1, Template1Size, Template2Array, Template2SizeArray, Template2Num, 5000, &nMatchIndex); 26/293 BioMin SDK for Windows v3.6.0 if (ufm_res != UFM_OK) { // Execute error handling codes } else { if (nMatchIndex != -1) { // Identification succeed } else { // Identification failed } } // Free Template2Array for (i = ; i < MAX_TEMPLATE_NUM; i++) { free(Template2Array[i]); } 5. Delete matcher // hMatcher comes from section 2 UFM_STATUS ufm_res; // Delete matcher ufm_res = UFM_Delete(&hMatcher); 27/293 BioMin SDK for Windows v3.6.0 3.5 C/C++ APIs Below are instructions of the C++ APIs. You can find the detailed information of the C++ APIs in a header file. This defines the class and structure of the data that are necessary to use the functions. All header files are located in\include folder. UFS_Init() Initializes a UFScanner module UFS_Update() Enforces a UFScanner module to update the connection state of scanners UFS_Uninit() Un-initializes a UFScanner module UFS_SetScannerCallback() Registers a scanner callback function UFS_RemoveScannerCallback() Removes a registered scanner callback function UFS_GetScannerNumber() Gets the number of scanners UFS_GetScannerHandle() Gets the scanner handle using the scanner index UFS_GetScannerHandleByID() Gets the scanner handle using a scanner ID UFS_GetScannerIndex() Gets the scanner index that is assigned to the scanner handle UFS_GetScannerID() Gets a scanner ID that is assigned to the scanner handle UFS_GetScannerType() Gets the scanner type that is assigned to the scanner handle UFS_GetParameter() Gets the parameter value of a UFScanner module UFS_SetParameter() Sets the parameter value of a UFScanner module 28/293 BioMin SDK for Windows v3.6.0 UFS_IsSensorOn() Checks whether a scanner is connected or not UFS_IsFingerOn() Checks whether a finger is placed on a scanner or not UFS_CaptureSingleImage() Captures single image. Captured image is stored to the internal buffer UFS_StartCapturing() Starts capturing. The capture is going on until the specified time exceeds UFS_StartAutoCapture() Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only UFS_IsCapturing() Checks if the specified scanner is running to capture which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFS_AbortCapturing() Aborts capturing which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFS_Extract() Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing() UFS_ExtractEx() Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing().This is extended version of UFS_Extract function to accommodate a template with large size UFS_SetEncryptionKey() Sets the encryption key UFS_EncryptTemplate() Encrypts a template UFS_DecryptTemplate() Decrypts a template UFS_GetCaptureImageBufferInfo() Gets the information of the capture image buffer UFS_GetCaptureImageBuffer() Copies the capture image buffer to the specified image data array UFS_GetCaptureImageBufferToBMPImageBuffer() Copies the capture image buffer to the specified image data of bmp format UFS_GetCaptureImageBufferTo19794_4ImageBuffer() 29/293 BioMin SDK for Windows v3.6.0 Copies the capture image buffer to the specified image data of 19794_4 format UFS_GetCaptureImageBufferToWSQImageBuffer() Copies the capture image buffer to the specified image data of the WSQ format UFS_GetCaptureImageBufferToWSQImageBufferVar() Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format UFS_DecompressWSQBMP() Decompress a WSQ file and save to a BMP file UFS_DecompressWSQBMPMem() Decompress a WSQ buffer and save to the image data of the bmp format UFS_DrawCaptureImageBuffer() Draws the fingerprint image which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing(). This function is not supported on java UFS_DrawFeatureBuffer() Draws the fingerprint image which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing(). This function is not supported on java And should be called after the extraction from the last captured fingerprint image. If extraction is not performed from the last captured image, this function will not draw the feature in the image frame UFS_SaveCaptureImageBufferToBMP() Saves the capture image buffer to the specified file of the bitmap format UFS_SaveCaptureImageBufferTo19794_4() Saves the capture image buffer to the specified file of the 19794_4 format UFS_SaveCaptureImageBufferToWSQ() Saves the capture image buffer to the specified file of the WSQ format UFS_SaveCaptureImageBufferToWSQVar() Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format UFS_ClearCaptureImageBuffer() Clears the capture image buffer stored to the internal buffer UFS_GetErrorString() Gets the error string for specified UFS_STAUS value UFS_GetTemplateType() Gets the template type value UFS_SetTemplateType() Sets the template type value UFS_SelectTemplate() 30/293 BioMin SDK for Windows v3.6.0 Selects n number of good templates from m number of input templates UFS_SelectTemplateEx() Selects n number of good templates from m number of input templates This is extended version of UFS_SelectTemplate function to accommodate the template with large size UFS_GetFPQuality() Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor) UFS_GetFeatureNumber() Get number of Minutiae from template data UFS_EnrollUI() Generates the fingerprint enrollment dialog. This function can be called after executing UFS_Init(). Enrolling a fingerprint is extracting a template from finger and saving the template. Below sample’s UFS_EnrollUI() captures a fingerprint image after setting the template type. And extracts a template from captured fingerprint image. The extracted template will be saved in a specific template array, which is a parameter of the UFS_EnrollUI(). It supported only for Windows environment UFS_VerifyUI() Generates the fingerprint verification dialog. This function can be called after executing UFS_Init() and UFS_EnrollUI(). Two fingerprints can be verified whether they are matched or not. Below sample’s UFS_VerifyUI() captures a fingerprint image and extracts a template from the image. And execute 1:1 matching using extracted template and templates enrolled from UFS_EnrollUI() UFS_CapturesingleUI() Performs same as UFS_CaptureSingle and Popup Window appears once the capturing starts to show captured image then disappears. UFM_Create() Creates a matcher object UFM_Delete() Deletes a specified matcher object UFM_GetParameter() Gets the parameter value of UFMatcher module UFM_SetParameter() Sets the parameter value of UFMatcher module UFM_Verify() Compares two extracted templates UFM_VerifyEx() Performs same as UFM_Verify, and returns matching score by 6th parameter (matching score in between 0~1, idle match as the score is close to 1) 31/293 BioMin SDK for Windows v3.6.0 UFM_Identify(),IdentifyMT() Compares a template with given template array UFM_IdentifyMT function uses multi threads internally for faster identifying in multi-core systems UFM_AbortIdentify() Aborts current identifying procedure started using UFM_Identify() UFM_IdentifyInit() Initializes identify with input template UFM_IdentifyNext() Matches one input template to the template specified in UFM_IdentifyInit() UFM_RotateTemplate() Rotates the specified template to the amount of 180 degrees UFM_GetErrorString() Gets the error string for the specified UFM_STAUS value UFM_GetTemplateType() Gets the parameter value UFM_SetTemplateType() Sets the parameter value 32/293 BioMin SDK for Windows v3.6.0 UFS_Init Initializes a UFScanner module. UFS_STATUS UFS_API UFS_Init(); Examples UFS_STATUS ufs_res; int nScannerNumber; ufs_res = UFS_GetScannerNumber(&nScannerNumber); if (ufs_res == UFS_OK) { // UFS_GetScannerNumber is succeeded } else { // UFS_GetScannerNumber is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 33/293 BioMin SDK for Windows v3.6.0 UFS_Update Enforces a UFScanner module to update the connection state of scanners. UFS_STATUS UFS_API UFS_Update(); Examples UFS_STATUS ufs_res; ufs_res = UFS_Update(); if (ufs_res == UFS_OK) { // UFS_Init is succeeded } else { // UFS_Init is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 34/293 BioMin SDK for Windows v3.6.0 UFS_Uninit Un-initializes a UFScanner module. UFS_STATUS UFS_API UFS_Uninit(); Examples UFS_STATUS ufs_res; ufs_res = UFS_Uninit(); if (ufs_res == UFS_OK) { // UFS_Init is succeeded } else { // UFS_Init is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 35/293 BioMin SDK for Windows v3.6.0 UFS_SetScannerCallback Registers the scanner callback function. UFS_STATUS UFS_API UFS_SetScannerCallback( UFS_SCANNER_PROC* pScannerProc, void* pParam ); Parameters pScannerProc [in] : Handle to the UFS_SCANNER_PROC function which receives scanner events pParam [in] : Pointer to the scanner callback data which will be transmitted with a scanner callback event Examples UFS_STATUS ufs_res; ufs_res = UFS_Uninit(); if (ufs_res == UFS_OK) { // UFS_Init is succeeded } else { // UFS_Init is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 36/293 BioMin SDK for Windows v3.6.0 UFS_RemoveScannerCallback Removes the registered scanner callback function. UFS_STATUS UFS_API UFS_RemoveScannerCallback(); Examples UFS_STATUS ufs_res; ufs_res = UFS_RemoveScannerCallback(); if (ufs_res == UFS_OK) { // UFS_RemoveScannerCallback is succeeded } else { // UFS_RemoveScannerCallback is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 37/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerNumber Gets the number of scanners. UFS_STATUS UFS_API UFS_GetScannerNumber( int* pnScannerNumber); Parameters pnScannerNumber [out] : Receive the number of scanners Examples UFS_STATUS ufs_res; int nScannerNumber; ufs_res = UFS_GetScannerNumber(&nScannerNumber); if (ufs_res == UFS_OK) { // UFS_GetScannerNumber is succeeded } else { // UFS_GetScannerNumber is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 38/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerHandle Gets the scanner handle using a scanner index. UFS_STATUS UFS_API UFS_GetScannerHandle( int nScannerIndex, HUFScanner* phScanner ); Parameters nScannerIndex [in] : Scanner index (0 ~ number of scanners - 1) phScanner [out] : Pointer to handle of the scanner object Examples UFS_STATUS ufs_res; int nScannerIndex; HUFScanner hScanner; // Set nScannerIndex to (0 ~ number of scanners - 1 ) // Number of scanner can be retrieved using UFS_GetScannerNumber function ufs_res = UFS_GetScannerHandle(nScannerIndex, &hScanner); if (ufs_res == UFS_OK) { // UFS_GetScannerHandle is succeeded } else { // UFS_GetScannerHandle is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 39/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerHandleByID Gets the scanner handle using a scanner ID. UFS_STATUS UFS_API UFS_GetScannerHandleByID( const char* szScannerID, HUFScanner* phScanner ); Parameters szScannerID [in] : Scanner ID phScanner [out] : Pointer to handle of the scanner object Examples UFS_STATUS ufs_res; char strID[64]; HUFScanner hScanner; // Assign scanner ID to strID // Scanner ID can be retrieved using UFS_GetScannerID function ufs_res = UFS_GetScannerHandleByID(strID, &hScanner); if (ufs_res == UFS_OK) { // UFS_GetScannerHandleByID is succeeded } else { // UFS_GetScannerHandleByID is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 40/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerIndex Gets a scanner index that is assigned to the scanner handle. UFS_STATUS UFS_API UFS_GetScannerIndex( HUFScanner hScanner, int* pnScannerIndex ); Parameters hScanner [in] : Handle to the scanner object pnScannerIndex [out] : Receive scanner index of specified scanner handle Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nScannerIndex; // Get hScanner handle ufs_res = UFS_GetScannerIndex(hScanner, &nScannerIndex); if (ufs_res == UFS_OK) { // UFS_GetScannerIndex is succeeded } else { // UFS_GetScannerIndex is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 41/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerID Gets scanner ID assigned to scanner handle. UFS_STATUS UFS_API UFS_GetScannerID( HUFScanner hScanner, char* szScannerID ); Parameters hScanner [in] : Handle to the scanner object szScannerID [out] : Receive scanner ID of specified scanner handle; Scanner ID has maximum 32 characters. szScannerID must be allocated in user's applications and allocated size must be larger than 33 bytes for considering null character in 33th byte position. Examples UFS_STATUS ufs_res; HUFScanner hScanner; char strID[64]; // Should be larger than 33 bytes // Get hScanner handle ufs_res = UFS_GetScannerID(hScanner, strID); if (ufs_res == UFS_OK) { // UFS_GetScannerID is succeeded } else { // UFS_GetScannerID is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 42/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerType Gets the scanner type that is assigned to the scanner handle. UFS_STATUS UFS_API UFS_GetScannerType( HUFScanner hScanner, int* pnScannerType ); Parameters hScanner [in] : Handle to the scanner object pnScannerType [out] : Receives one of the scanner type Scanner type Code Description UFS_SCANNER_TYPE_SFR200 1001 Suprema SFR200 UFS_SCANNER_TYPE_SFR300 1002 Suprema SFR300-S UFS_SCANNER_TYPE_SFR300v2 1003 Suprema SFR300v2, SFR400 UFS_SCANNER_TYPE_SFR500 1004 Suprema SFR500 UFS_SCANNER_TYPE_SFR600 1005 Suprema SFR600 UFS_SCANNER_TYPE_SFR410 1006 Suprema SFR410 UFS_SCANNER_TYPE_SFR550 1007 Suprema SFR550 Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nScannerType; // Get hScanner handle ufs_res = UFS_GetScannerType(hScanner, &nScannerType); if (ufs_res == UFS_OK) { // UFS_GetScannerType is succeeded } else { // UFS_GetScannerType is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 43/293 BioMin SDK for Windows v3.6.0 UFS_GetParameter Gets parameter value of UFScanner module. UFS_STATUS UFS_API UFS_GetParameter( HUFScanner hScanner, int nParam, void* pValue ); Parameters hScanner [in] : Handle to the scanner object nParam [in] : Parameter type; one of parameters Parameter Code Default value Description UFS_PARAM_TIMEOUT 201 Timeout (millisecond unit) (0: infinite) 5000 UFS_PARAM_BRIGHTNESS Brightness (0 ~ 255); Higher value means darker image. 202 * Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) 100 UFS_PARAM_SENSITIVITY 203 Sensitivity (0 ~ 7); Higher value means more sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) 4 - UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) UFS_PARAM_TEMPLATE_SIZE 302 Template size (byte unit) (256 ~ 1024, 32 bytes step size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFS_PARAM_DETECT_FAKE Use live Finger Detection (0: not use LFD, 1 ~3 : use LFD); Higher 312 value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) 0 0 1024 pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nValue; char strSerial[64]; char strSdkVer[64]; char copyright[64]; // Get hScanner handle // Get timeout ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_TIMEOUT, &nValue); // Error handling routine is omitted 44/293 BioMin SDK for Windows v3.6.0 // Get brightness ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_BRIGHTNESS, &nValue); // Error handling routine is omitted // Get sensitivity ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_SENSITIVITY, &nValue); // Error handling routine is omitted // Get serial ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_SERIAL, strSerial); // Error handling routine is omitted // Get SDK version ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_SDK_VERSION, strSdkVer); // Error handling routine is omitted // Get SDK copyright ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_SDK_COPYRIGHT, copyright); // Error handling routine is omitted // Get detect core ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_DETECT_CORE, &nValue); // Error handling routine is omitted // Get template size ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_TEMPLATE_SIZE, &nValue); // Error handling routine is omitted // Get use SIF ufs_res = UFS_GetParameter(hScanner, UFS_PARAM_USE_SIF, &nValue); // Error handling routine is omitted Return Values(refer to return values) 45/293 BioMin SDK for Windows v3.6.0 UFS_SetParameter Sets parameter value of UFScanner module. UFS_STATUS UFS_API UFS_SetParameter( HUFScanner hScanner, int nParam, void* pValue ); Parameters hScanner [in] : Handle to the scanner object nParam [in] : Parameter type; one of parameters Parameter Code Default value Description UFS_PARAM_TIMEOUT 201 Timeout (millisecond unit) (0: infinite) 5000 UFS_PARAM_BRIGHTNESS Brightness (0 ~ 255); Higher value means darker image. 202 * Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) 100 UFS_PARAM_SENSITIVITY 203 Sensitivity (0 ~ 7); Higher value means more sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) 4 - UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) UFS_PARAM_TEMPLATE_SIZE 302 Template size (byte unit) (256 ~ 1024, 32 bytes step size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFS_PARAM_DETECT_FAKE Use live Finger Detection (0: not use LFD, 1 ~3 : use LFD); Higher 312 value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) 0 0 1024 pValue [in] : Pointer to parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nValue; // Get hScanner handle // Set timeout to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TIMEOUT, &nValue); // Error handling routine is omitted // Set brightness to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_BRIGHTNESS, &nValue); // Error handling routine is omitted 46/293 BioMin SDK for Windows v3.6.0 // Set sensitivity to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_SENSITIVITY, &nValue); // Error handling routine is omitted // Set detect core to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_DETECT_CORE, &nValue); // Error handling routine is omitted // Set template size to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_TEMPLATE_SIZE, &nValue); // Error handling routine is omitted // Set use SIF to nValue ufs_res = UFS_SetParameter(hScanner, UFS_PARAM_USE_SIF, &nValue); // Error handling routine is omitted Return Values(refer to return values) 47/293 BioMin SDK for Windows v3.6.0 UFS_IsSensorOn Checks whether a scanner is connected or not. UFS_STATUS UFS_API UFS_IsSensorOn( HUFScanner hScanner, int* pbSensorOn ); Parameters hScanner [in] : Handle to the scanner object pbSensorOn [out] : Receive the status of specified scanner object; 1: the scanner is connected, 0: the scanner is disconnected Examples UFS_STATUS ufs_res; HUFScaner hScanner; int bSensorOn; // Get hScanner handle ufs_res = UFS_IsSensorOn(hScanner, &bSensorOn); if (ufs_res == UFS_OK) { // UFS_IsSensorOn is succeeded } else { // UFS_IsSensorOn is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 48/293 BioMin SDK for Windows v3.6.0 UFS_IsFingerOn Checks whether a finger is placed on a scanner or not. UFS_STATUS UFS_API UFS_IsFingerOn( HUFScanner hScanner, int* pbFingerOn ); Parameters hScanner [in] : Handle to the scanner object pbFingerOn [out] : Checks if a finger is placed on the specified scanner; 1: a finger is on the scanner, 0: a finger is not on the scanner Examples UFS_STATUS ufs_res; HUFScaner hScanner; int bFingerOn; // Get hScanner handle ufs_res = UFS_IsFingerOn(hScanner, &bFingerOn); if (ufs_res == UFS_OK) { // UFS_IsFingerOn is succeeded } else { // UFS_IsFingerOn is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 49/293 BioMin SDK for Windows v3.6.0 UFS_CaptureSingleImage Captures single image. Captured image is stored to the internal buffer. UFS_STATUS UFS_API UFS_CaptureSingleImage( HUFScanner hScanner, ); Parameters hScanner [in] : Handle to the scanner object Examples UFS_STATUS ufs_res; HUFScaner hScanner; // Get hScanner handle ufs_res = UFS_CaptureSingleImage(hScanner); if (ufs_res == UFS_OK) { // UFS_CaptureSingleImage is succeeded } else { // UFS_CaptureSingleImage is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 50/293 BioMin SDK for Windows v3.6.0 UFS_StartCapturing Starts capturing. The capture is going on until the specified time exceeds. UFS_STATUS UFS_API UFS_StartCapturing( HUFScanner hScanner, UFS_CAPTURE_PROC* pCaptureProc, void* pParam ); Parameters hScanner [in] : Handle to the scanner object pCaptureProc [in] : Handle to the UFS_CAPTURE_PROC function which receives capture events pParam [in] : Pointer to the capture callback data which will be transmitted with a capture callback event Examples // Define capture procedure int UFS_CALLBACK CaptureProc(HUFScanner hScanner, int bFingerOn, unsigned char* pImage, int nWidth, int nHeight, int nResolution, void* pParam) { // ... } UFS_STATUS ufs_res; HUFScaner hScanner; void* pParam; // Get hScanner handle // Assign pParam, for example, application data ufs_res = UFS_StartCapturing(hScanner, CaptureProc, pParam); if (ufs_res == UFS_OK) { // UFS_StartCapturing is succeeded } else { // UFS_StartCapturing is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 51/293 BioMin SDK for Windows v3.6.0 UFS_StartAutoCapture Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only. UFS_STATUS UFS_API UFS_StartAutoCapture( HUFScanner hScanner, UFS_CAPTURE_PROC* pCaptureProc, void* pParam ); Parameters hScanner [in] : Handle to the scanner object pCaptureProc [in] : Handle to the UFS_CAPTURE_PROC function which receives capture events pParam [in] : Pointer to the capture callback data which will be transmitted with a capture callback event Examples // Define capture procedure int UFS_CALLBACK CaptureProc(HUFScanner hScanner, int bFingerOn, unsigned char* pImage, int nWidth, int nHeight, int nResolution, void* pParam) { // ... } UFS_STATUS ufs_res; HUFScaner hScanner; void* pParam; // Get hScanner handle // Assign pParam, for example, application data ufs_res = UFS_StartAutoCapture(hScanner, CaptureProc, pParam); if (ufs_res == UFS_OK) { // UFS_StartAutoCapture is succeeded } else { // UFS_StartAutoCapture is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 52/293 BioMin SDK for Windows v3.6.0 UFS_IsCapturing Checks if the specified scanner is running to capture which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFS_STATUS UFS_API UFS_IsCapturing( HUFScanner hScanner, int* pbCapturing ); Parameters hScanner [in] : Handle to the scanner object pbCapturing [out] : Checks if the specified scanner is running capturing; 1: the capture is running, 0: the capture is not running Examples UFS_STATUS ufs_res; HUFScaner hScanner; int bCapturing; // Get hScanner handle ufs_res = UFS_IsCapturing(hScanner, &bCapturing); if (ufs_res == UFS_OK) { //UFS_IsCapturing is succeeded } else { // UFS_IsCapturing is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 53/293 BioMin SDK for Windows v3.6.0 UFS_AbortCapturing Aborts capturing which is started by UFS_CaptureSingleImage or UFS_StartCapturing. UFS_STATUS UFS_API UFS_AbortCapturing( HUFScanner hScanner, ); Parameters hScanner [in] : Handle to the scanner object Examples UFS_STATUS ufs_res; HUFScaner hScanner; // Get hScanner handle // Start capturing ufs_res = UFS_AbortCapturing(hScanner); if (ufs_res == UFS_OK) { // UFS_AbortCapturing is succeeded } else { // UFS_AbortCapturing is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 54/293 BioMin SDK for Windows v3.6.0 UFS_Extract Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. UFS_STATUS UFS_API UFS_Extract( HUFScanner hScanner, unsigned char* pTemplate, int* pnTemplateSize, int* pnEnrollQuality); Parameters hScanner [in] : Handle to the scanner object pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Examples // Template size can be controlled by using UFS_SetParameter function // Default value is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char Template[MAX_TEMPLATE_SIZE]; int TemplateSize; int nEnrollQuality; // Get hScanner handle ufs_res = UFS_Extract(hScanner, Template, &TemplateSize, &nEnrollQuality); if (ufs_res == UFS_OK) { // UFS_Extract is succeeded } else { // UFS_Extract is failed // Use UFS_GetErrorString function to show error string } 55/293 BioMin SDK for Windows v3.6.0 Return Values(refer to return values) 56/293 BioMin SDK for Windows v3.6.0 UFS_ExtractEx Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. This is extended version of UFS_Extract function to accommodate large size template. UFS_STATUS UFS_API UFS_ExtractEx( HUFScanner hScanner, int* nBufferSize, unsigned char* pTemplate, int* pnTemplateSize, int* pnEnrollQuality); Parameters hScanner [in] : Handle to the scanner object nBufferSize [in] : Template buffer size pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Examples // Template size can be controlled by using UFS_SetParameter function // Default value is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char Template[MAX_TEMPLATE_SIZE]; int TemplateSize; int nEnrollQuality; // Get hScanner handle ufs_res = UFS_ExtractEx(hScanner, MAX_TEMPLATE_SIZE, Template, &TemplateSize, &nEnrollQuality); if (ufs_res == UFS_OK) { // UFS_ExtractEx is succeeded } else { // UFS_ExtractEx is failed 57/293 BioMin SDK for Windows v3.6.0 // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 58/293 BioMin SDK for Windows v3.6.0 UFS_SetEncryptionKey Sets encryption key. UFS_STATUS UFS_API UFS_SetEncryptionKey( HUFScanner hScanner, unsigned char* pKey ); Parameters hScanner [in] : Handle to the scanner object pKey[out] : Pointer to the 32 bytes key array; default key is first byte is 1 and second to 32th byte are all 0 Examples UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char UserKey[32]; // Get hScanner handle // Generate 32 byte encryption key to UserKey ufs_res = UFS_SetEncryptionKey(hScanner, UserKey); if (ufs_res == UFS_OK) { // UFS_SetEncryptionKey is succeeded } else { // UFS_SetEncryptionKey is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 59/293 BioMin SDK for Windows v3.6.0 UFS_EncryptTemplate Encrypts template. UFS_STATUS UFS_API UFS_EncryptTemplate( HUFScanner hScanner, unsigned char* pTemplateInput, int nTemplateInputSize, unsigned char* pTemplateOutput, int* pnTemplateOutputSize); Parameters hScanner [in] : Handle to the scanner object pTemplate [in] : Pointer to input template data nTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to encrypted template data pnTemplateOutputSize [in / out] : Inputs allocated size of encrypted template data; Receives output template size Examples // Assume template size is 384 bytes #define MAX_TEMPLATE_SIZE 384 UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char TemplateInput[MAX_TEMPLATE_SIZE]; unsigned char TemplateOutput[MAX_TEMPLATE_SIZE]; int TemplateInputSize; int TemplateOutputSize; // Get hScanner handle // Get an input template to encrypt, TemplateInput and TemplateInputSize // Set output template buffer size TemplateoutputSize = MAX_TEMPLATE_SIZE; ufs_res = UFS_EncryptTemplate(hScanner, TemplateInput, TemplateInputSize, TemplateOutput, &TemplateOutputSize); if (ufs_res == UFS_OK) { // UFS_EncryptTemplate is succeeded } else { // UFS_EncryptTemplate is failed // Use UFS_GetErrorString function to show error string } 60/293 BioMin SDK for Windows v3.6.0 Return Values(refer to return values) 61/293 BioMin SDK for Windows v3.6.0 UFS_DecryptTemplate Decrypts template. UFS_STATUS UFS_API UFS_DecryptTemplate( HUFScanner hScanner, unsigned char* pTemplateInput, int nTemplateInputSize, unsigned char* pTemplateOutput, int* pnTemplateOutputSize); Parameters hScanner [in] : Handle to the scanner object pTemplateInput [in] : Pointer to input template data(encrypted) nTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to output template data pnTemplateOutputSize [in / out] : Inputs allocated size of output template data; Receives output template size Examples // Assume template size is 384 bytes #define MAX_TEMPLATE_SIZE 384 UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char TemplateInput[MAX_TEMPLATE_SIZE]; unsigned char TemplateOutput[MAX_TEMPLATE_SIZE]; int TemplateInputSize; int TemplateOutputSize; // Get hScanner handle // Get an encrypted template, TemplateInput and TemplateInputSize // Set output template buffer size TemplateoutputSize = MAX_TEMPLATE_SIZE; ufs_res = UFS_DecryptTemplate(hScanner, TemplateInput, TemplateInputSize, TemplateOutput, &TemplateOutputSize); if (ufs_res == UFS_OK) { // UFS_DecryptTemplate is succeeded } else { // UFS_DecryptTemplate is failed 62/293 BioMin SDK for Windows v3.6.0 // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 63/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferInfo Gets the information of the capture image buffer. UFS_STATUS UFS_API UFS_GetCaptureImageBufferInfo ( HUFScanner hScanner, int* pnWidth, int* pnHeight, int* pnResolution ); Parameters hScanner [in] : Handle to the scanner object pnWidth [out] : Receives the width of the capture image buffer pnHeight [out] : Receives the height of the capture image buffer pnResolution [out] : Receives the resolution of the capture image buffer Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; // Get hScanner handle ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBufferInfo is succeeded } else { // UFS_GetCaptureImageBufferInfo is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 64/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBuffer Copies the capture image buffer to the specified image data array. UFS_STATUS UFS_API UFS_GetCaptureImageBuffer( HUFScanner hScanner, unsigned char* pImageData ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to image data array; The array must be allocated bigger than the size of capture image buffer in advance Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; unsigned char* pImageData // Get hScanner handle // Get capture image buffer information ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); // Error handling routine is omitted // Allocate image buffer pImageData = (unsigned char*)malloc(nWidth * nHeight * sizeof(unsigned char)); ufs_res = UFS_GetCaptureImageBuffer(hScanner, pImageData); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBuffer is succeeded } else { // UFS_GetCaptureImageBuffer is failed // Use UFS_GetErrorString function to show error string } // Free image buffer after usage free(pImageBuffer) 65/293 BioMin SDK for Windows v3.6.0 Return Values(refer to return values) 66/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToBMPImageBuffer Copies the capture image buffer to the specified image data of bmp format. UFS_STATUS UFS_API UFS_GetCaptureImageBufferToBMPImageBuffer( HUFScanner hScanner, unsigned char* pImageData, int* pImageDataLength ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to bmp image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageDataLength [out] : pointer to bmp image data size Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; int nBmpHeaderSize; unsigned char* pBmpImageBuf; int nBmpImageBufSize; // Get hScanner handle ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); // Error handling routine is omitted nBmpHeaderSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD); // Allocate bmp image buffer pBmpImageBuf = (unsigned char*)malloc(nWidth * nHeight + nBmpHeaderSize); ufs_res = UFS_GetCaptureImageBufferToBMPImageBuffer(hScanner, pBmpImageBuf, &nBmpImageBufSize); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBufferToBMP is succeeded } else { 67/293 BioMin SDK for Windows v3.6.0 // UFS_GetCaptureImageBufferToBMP is failed // Use UFS_GetErrorString function to show error string } // Free image buffer after usage free(pBmpImageBuf); Return Values(refer to return values) 68/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferTo19794_4ImageBuffer Copies the capture image buffer to the specified image data of 19794_4 format. UFS_STATUS UFS_API UFS_GetCaptureImageBufferTo19794_4ImageBuffer( HUFScanner hScanner, unsigned char* pImageData, int* pImageDataLength ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to 19794_4 format image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageDataLength [out] : pointer to 19794_4 format image data size Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; unsigned char* pConvertedImageBuf; int nConvertedImageBufSize; // Get hScanner handle ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); // Error handling routine is omitted pConvertedImageBuf = (unsigned char*)malloc(nWidth * nHeight); ufs_res = UFS_GetCaptureImageBufferTo19794_4ImageBuffer(hScanner, pConvertedImageBuf, &nConvertedImageBufSize); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBufferTo19794_4ImageBuffer is succeeded } else { // UFS_GetCaptureImageBufferTo19794_4ImageBuffer is failed // Use UFS_GetErrorString function to show error string } // Free image buffer after usage free(pConvertedImageBuf) 69/293 BioMin SDK for Windows v3.6.0 Return Values(refer to return values) 70/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToWSQImageBuffer Copies the capture image buffer to the specified image data of the WSQ format. UFS_STATUS UFS_API UFS_GetCaptureImageBufferToWSQImageBuffer( HUFScanner hScanner, const float ratio, unsigned char* wsqData, int* wsqDataLen ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; unsigned char* pConvertedImageBuf; int nConvertedImageBufSize; float nRatio = 0.75; // Get hScanner handle ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); // Error handling routine is omitted pConvertedImageBuf = (unsigned char*)malloc(nWidth * nHeight); ufs_res = UFS_GetCaptureImageBufferToWSQImageBuffer(hScanner, nRatio, pConvertedImageBuf, &nConvertedImageBufSize); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBufferToWSQImageBuffer is succeeded } else { // UFS_GetCaptureImageBufferToWSQImageBuffer is failed // Use UFS_GetErrorString function to show error string } 71/293 BioMin SDK for Windows v3.6.0 // Free image buffer after usage free(pConvertedImageBuf) Return Values(refer to return values) 72/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToWSQImageBufferVar Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format. UFS_STATUS UFS_API UFS_GetCaptureImageBufferToWSQImageBufferVar( HUFScanner hScanner, Const float ratio, unsigned char* wsqData, int* wsqDataLen, int nWidth, int nHeight ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; unsigned char* pConvertedImageBuf; int nConvertedImageBufSize; float nRatio = 0.75; // Get hScanner handle // Get image size to resize(nWidth, nHeight) pConvertedImageBuf = (unsigned char*)malloc(nWidth * nHeight); ufs_res = UFS_GetCaptureImageBufferToWSQImageBufferVar(hScanner, nRatio, pConvertedImageBuf, &nConvertedImageBufSize, nWidth, nHeight); if (ufs_res == UFS_OK) { // UFS_GetCaptureImageBufferToWSQImageBufferVar is succeeded } else { 73/293 BioMin SDK for Windows v3.6.0 // UFS_GetCaptureImageBufferToWSQImageBufferVar is failed // Use UFS_GetErrorString function to show error string } // Free image buffer after usage free(pConvertedImageBuf) Return Values(refer to return values) 74/293 BioMin SDK for Windows v3.6.0 UFS_DecompressWSQBMP Decompress WSQ file and save to BMP file. UFS_STATUS UFS_API UFS_DecompressWSQBMP( HUFScanner hScanner, char* wsqFile, char* bmpFile ); Parameters hScanner [in] : Handle to the scanner object wsqFile [in] : Specifies file name to get wsq data buffer bmpFile [in] : Specifies file name to save image buffer Examples UFS_STATUS ufs_res; HUFScaner hScanner; char szWsqFileName[128]; char szBmpFileName[128]; // Get hScanner handle // Get WSQ file name to save bmp file // Get Bmp file from the WSQ file ufs_res = UFS_DecompressWSQBMP (hScanner, szWsqFileName, szBmpFileName); if (ufs_res == UFS_OK) { // UFS_DecompressWSQBMP is succeeded } else { // UFS_DecompressWSQBMP is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 75/293 BioMin SDK for Windows v3.6.0 UFS_DecompressWSQBMPMem Decompress WSQ buffer and save to image data of bmp format. UFS_STATUS UFS_API UFS_DecompressWSQBMPMem( HUFScanner hScanner, unsigned char* wsqBuffer, int wsqBufferLen, unsigned char* bmpBuffer, int* bmpBufferLen ); Parameters hScanner [in] : Handle to the scanner object wsqBuffer [in] : Pointer to WSQ format image data wsqBufferLen [in] : Size of WSQ format image data bmpBuffer [out] : Pointer to bmp image data; The array must be allocated bigger than the size of capture image buffer in advance. bmpBufferLen [out] : pointer to bmp image data size Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nWidth; int nHeight; int nResolution; int nBmpHeaderSize; unsigned char* pWsqBuffer; int nWsqBufferLen; unsigned char* pBmpBuffer; int nBmpBufferLen; // Get hScanner handle // Get WSQ data (ex.UFS_GetCaptureImageBufferToWSQImageBuffer) ufs_res = UFS_GetCaptureImageBufferInfo(hScanner, &nWidth, &nHeight, &nResolution); // Error handling routine is omitted nBmpHeaderSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD); pBmpBuffer = (unsigned char*)malloc(nWidth * nHeight * nBmpHeaderSize); ufs_res = UFS_DecompressWSQBMPMem(hScanner, pWsqBuffer, nWsqBufferLen, pBmpBuffer, nBmpBufferLen); if (ufs_res == UFS_OK) 76/293 BioMin SDK for Windows v3.6.0 { // UFS_DecompressWSQBMPMem is succeeded } else { // UFS_DecompressWSQBMPMem is failed // Use UFS_GetErrorString function to show error string } // Free image buffer after usage free(pImageBuffer); free(pWsqBuffer); Return Values(refer to return values) 77/293 BioMin SDK for Windows v3.6.0 UFS_DrawCaptureImageBuffer Draws the fingerprint image which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. This function is not supported on java. UFS_STATUS UFS_API UFS_DrawCaptureImageBuffer( HUFScanner hScanner, HDC hDC, int nLeft, int nTop, int nRight, int nBottom, int bCore ); Parameters hScanner [in] : Handle to the scanner object hDC [in] : Handle to the DC where the fingerprint image is drawn nLeft [in] : Specifies the logical x-coordinate of the upper-left corner of the rectangle nTop [in] : Specifies the logical y-coordinate of the upper-left corner of the rectangle nRight [in] : Specifies the logical x-coordinate of the lower-right corner of the rectangle nBottom [in] : Specifies the logical y-coordinate of the lower-right corner of the rectangle bCore [in] : Specifies whether the core of fingerprint is drawn of not Examples UFS_STATUS ufs_res; HUFScaner hScanner; HDC hDC; int nLeft; int nTop; int nRight; int nBottom; int bCore; // Get hScanner handle // Get HDC and determine rectangle to draw image, hDC, nLeft, nTop, nRight, nBottom // Determine core to be drawn, bCore ufs_res = UFS_DrawCaptureImageBuffer(hScanner, hDC, nLeft, nTop, nRight, nBottom, bCore); if (ufs_res == UFS_OK) { // UFS_DrawCaptureImageBuffer is succeeded } else { 78/293 BioMin SDK for Windows v3.6.0 // UFS_DrawCaptureImageBuffer is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 79/293 BioMin SDK for Windows v3.6.0 UFS_DrawFeatureBuffer Draws the fingerprint image which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. This function is not supported on java. And should be called after extraction from last captured fingerprint image. If extraction is not performed from the last captured image, this function will not draw the feature in image frame. UFS_STATUS UFS_API UFS_DrawFeatureBuffer( HUFScanner hScanner, HDC hDC, int nLeft, int nTop, int nRight, int nBottom, int bCore ); Parameters hScanner [in] : Handle to the scanner object hDC [in] : Handle to the DC where the fingerprint image is drawn nLeft [in] : Specifies the logical x-coordinate of the upper-left corner of the rectangle nTop [in] : Specifies the logical y-coordinate of the upper-left corner of the rectangle nRight [in] : Specifies the logical x-coordinate of the lower-right corner of the rectangle nBottom [in] : Specifies the logical y-coordinate of the lower-right corner of the rectangle bCore [in] : Specifies whether the core of fingerprint is drawn of not Examples UFS_STATUS ufs_res; HUFScaner hScanner; HDC hDC; int nLeft; int nTop; int nRight; int nBottom; int bCore; // Get hScanner handle // Get HDC and determine rectangle to draw image, hDC, nLeft, nTop, nRight, nBottom // Determine core to be drawn, bCore ufs_res = UFS_DrawFeatureBuffer(hScanner, hDC, nLeft, nTop, nRight, nBottom, bCore); if (ufs_res == UFS_OK) { // UFS_DrawFeatureBuffer is succeeded } 80/293 BioMin SDK for Windows v3.6.0 else { // UFS_DrawFeatureBuffer is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 81/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToBMP Saves the capture image buffer to the specified file of the bitmap format. UFS_STATUS UFS_API UFS_SaveCaptureImageBufferToBMP( HUFScanner hScanner, char* szFileName ); Parameters hScanner [in] : Handle to the scanner object szFileName [in] : Specifies file name to save image buffer Examples UFS_STATUS ufs_res; HUFScaner hScanner; char szFileName[128]; // Get hScanner handle // Get file name, szFileName ufs_res = UFS_SaveCaptureImageBufferToBMP(hScanner, szFileName); if (ufs_res == UFS_OK) { // UFS_SaveCaptureImageBufferToBMP is succeeded } else { // UFS_SaveCaptureImageBufferToBMP is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 82/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferTo19794_4 Saves the capture image buffer to the specified file of the 19794_4 format. UFS_STATUS UFS_API UFS_SaveCaptureImageBufferTo19794_4( HUFScanner hScanner, char* szFileName ); Parameters hScanner [in] : Handle to the scanner object szFileName [in] : Specifies file name to save image buffer Examples UFS_STATUS ufs_res; HUFScaner hScanner; char szFileName[128]; // Get hScanner handle // Get file name, szFileName ufs_res = UFS_SaveCaptureImageBufferTo19794_4(hScanner, szFileName); if (ufs_res == UFS_OK) { // UFS_SaveCaptureImageBufferTo19794_4 is succeeded } else { // UFS_SaveCaptureImageBufferTo19794_4 is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 83/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToWSQ Saves the capture image buffer to the specified file of the WSQ format. UFS_STATUS UFS_API UFS_SaveCaptureImageBufferToWSQ( HUFScanner hScanner, const float ratio, char* szFileName ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image szFileName [in] : Specifies file name to save image buffer Examples UFS_STATUS ufs_res; HUFScaner hScanner; char szFileName[128]; // Get hScanner handle // Get file name; szFileName ufs_res = UFS_SaveCaptureImageBufferToWSQ(hScanner, ratio, szFileName); if (ufs_res == UFS_OK) { // UFS_SaveCaptureImageBufferToWSQ is succeeded } else { // UFS_SaveCaptureImageBufferToWSQ is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 84/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToWSQVar Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format. UFS_STATUS UFS_API UFS_SaveCaptureImageBufferToWSQVar( HUFScanner hScanner, const float ratio, char* szFileName, int nWidth, int nHeight ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image szFileName [in] : Specfies file name to save image buffer nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Examples UFS_STATUS ufs_res; HUFScaner hScanner; char szFileName[128]; int nWidth; int nHeight; // Get hScanner handle // Get file name, szFileName // Get size of capture image to resize; nWidth,nHeight ufs_res = UFS_SaveCaptureImageBufferToWSQVar(hScanner, ratio, szFileName, nWidth, nHeight); if (ufs_res == UFS_OK) { // UFS_SaveCaptureImageBufferToWSQVar is succeeded } else { // UFS_SaveCaptureImageBufferToWSQVar is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 85/293 BioMin SDK for Windows v3.6.0 UFS_ClearCaptureImageBuffer Clears the capture image buffer stored to the internal buffer. UFS_STATUS UFS_API UFS_ClearCaptureImageBuffer( HUFScanner hScanner ); Parameters hScanner [in] : Handle to the scanner object Examples UFS_STATUS ufs_res; HUFScaner hScanner; // Get hScanner handle ufs_res = UFS_ClearCaptureImageBuffer(hScanner); if (ufs_res == UFS_OK) { // UFS_ClearCaptureImageBuffer is succeeded } else { // UFS_ClearCaptureImageBuffer is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 86/293 BioMin SDK for Windows v3.6.0 UFS_GetErrorString Gets the error string for specified UFS_STATUS value. UFS_STATUS UFS_API UFS_GetErrorString( UFS_STATUS res, char* szErrorString ); Parameters res [in] : Status return value szErrorString [out] : Receives error string Examples UFS_STATUS ufs_res; char strError[128]; // Get status return code, ufs_res ufs_res = UFS_GetErrorString(ufs_res, strError); if (ufs_res == UFS_OK) { // UFS_GetErrorString is succeeded } else { // UFS_GetErrorString is failed } Return Values(refer to return values) 87/293 BioMin SDK for Windows v3.6.0 UFS_GetTemplateType Gets the template type value. UFS_STATUS UFS_API UFS_GetTemplateType( HUFScanner hScanner, int* nTemplateType ); Parameters hScanner [in] : Handle to the scanner object nTemplateType [out] : Receives the parameter value of specified parameter type; 'pValue' must point to adequate type that is matched with the parameter type Template type UFS_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nTemplateType; // Get hScanner handle ufs_res = UFS_GetTemplateType(hScanner, &nTemplateType); // Error handling routine is omitted Return Values(refer to return values) 88/293 BioMin SDK for Windows v3.6.0 UFS_SetTemplateType Sets the template type value. UFS_STATUS UFS_API UFS_SetTemplateType( HUFScanner hScanner, int nTemplateType ); Parameters hScanner [in] : Handle to the scanner object nTemplateType [in] : Parameter type; one of template type Template type UFS_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples UFS_STATUS ufs_res; HUFScaner hScanner; int nTemplateType; // Get hScanner handle nTemplateType = UFS_TEMPLATE_TYPE_SUPREMA; ufs_res = UFS_SetTemplateType(hScanner, nTemplateType); // Error handling routine is omitted Return Values(refer to return values) 89/293 BioMin SDK for Windows v3.6.0 UFS_SelectTemplate Selects n number of good templates from m number of input templates. UFS_STATUS UFS_API UFS_SelectTemplate( HUFScanner hScanner, unsigned char** ppTemplateInput, int* pnTemplateInputSize, int nTemplateInputNum, unsigned char** ppTemplateOutput, int* pnTemplateOutputSize, int nTemplateOutputNum ); Parameters hScanner [in] : Handle to the scanner object ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Examples unsigned char Template[MAX_TEMPLATE_SIZE]; int TemplateSize; int nEnrollQuality; UFS_STATUS ufs_res; int i = ; // sample number int inputNum = 4; int outputNum = 2; While(1) { // capture a fingerprint image . . ufs_res = UFS_Extract(hScanner, Template, &TemplateSize, &nEnrollQuality); . . // if UFS_Extract is succeed memcpy(InputTemplateArray[i], Template, TemplateSize); InputTemplateSizeArray[i] = TemplateSize; 90/293 BioMin SDK for Windows v3.6.0 i++; if(i == inputNum) break; } ufs_res = UFS_SelectTemplate(hScanner, InputTemplateArray, InputTemplateSizeArray, inputNum, OutputTemplateArray, OutputTemplateSizeArray, outputNum); // UFS_SelectTemplate is succeed if (ufs_res == UFS_OK) { // If you want to enroll the output templates, move OutputTemplateArray and OutputTemplateSizeArray data to your template array for enrollment or database. } // select template function has error. else { // ... } Return Values(refer to return values) 91/293 BioMin SDK for Windows v3.6.0 UFS_SelectTemplateEx Selects n number of good templates from m number of input templates. This is extended version of UFS_SelectTemplate function to accommodate large size template. UFS_STATUS UFS_API UFS_SelectTemplateEx( HUFScanner hScanner, int nBufferSize, unsigned char** ppTemplateInput, int* pnTemplateInputSize, int nTemplateInputNum, unsigned char** ppTemplateOutput, int* pnTemplateOutputSize, int nTemplateOutputNum ); Parameters hScanner [in] : Handle to the scanner object nBufferSize [in] : Template buffer size ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to the input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Examples unsigned char Template[MAX_TEMPLATE_SIZE]; int TemplateSize; int nEnrollQuality; UFS_STATUS ufs_res; int i = ; // sample number int inputNum = 4; int outputNum = 2; While(1) { // capture a fingerprint image . . ufs_res = UFS_Extract(hScanner, Template, &TemplateSize, &nEnrollQuality); . . 92/293 BioMin SDK for Windows v3.6.0 // if UFS_Extract is succeed memcpy(InputTemplateArray[i], Template, TemplateSize); InputTemplateSizeArray[i] = TemplateSize; i++; if(i == inputNum) break; } ufs_res = UFS_SelectTemplateEx(hScanner, MAX_TEMPLATE_SIZE, InputTemplateArray, InputTemplateSizeArray, inputNum, OutputTemplateArray, OutputTemplateSizeArray, outputNum); // UFS_SelectTemplate is succeed if (ufs_res == UFS_OK) { // If you want to enroll the output templates, move OutputTemplateArray and OutputTemplateSizeArray data to your template array for enrollment or database. } // select template function has error. else { // ... } Return Values(refer to return values) 93/293 BioMin SDK for Windows v3.6.0 UFS_GetFPQuality Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor). UFS_STATUS UFS_API UFS_GetFPQuality( HUFScanner hScanner, unsigned char* pFPImage, int nWidth, int nHeight, int* pnFPQuality ); Parameters hScanner [in] : Handle to the scanner object pFPImage [in] : Raw capture image data nWidth [in] : Width of capture image data nHeight [in] : Height of capture image data pnFPQuality [in] : NIST quality score of image data Examples UFS_STATUS ufs_res; HUFScaner hScanner; unsigned char *pCaptImageBuf; int nCaptImageWidth; int nCaptImageHeight; int nFPQuality; // Capture a fingerprint image // Get Capture Image Data; pCaptImageBuf, nCaptImageWidth, nCaptImageHeight ufs_res = UFS_GetFPQuality(hScanner, pCaptImageBuf, nCaptImageWidth, nCaptImageWidth, &nFPQuality); if (ufs_res == UFS_OK) { // UFS_ GetFPQuality is successed } else { // UFS_ GetFPQuality is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 94/293 BioMin SDK for Windows v3.6.0 UFS_GetFeatureNumber Get the number of Minutiae from the template data. UFS_STATUS UFS_API UFS_GetFeatureNumber ( HUFScanner hScanner, unsigned char* pTemplate, int nTemplateSize, int* pnFeatureNum ); Parameters hScanner [in] : Handle to the scanner object pTemplate [in] : Template data nTemplateSize [in] : Size of template data pnFeatureNum [out] : The number of minutiae from pTemplate Examples unsigned char Template[MAX_TEMPLATE_SIZE]; int TemplateSize; int nFeatureNum; int nEnrollQuality; UFS_STATUS ufs_res; HUFScaner hScanner; // Capture a fingerprint image ufs_res = UFS_Extract(hScanner, Template, &TemplateSize, &nEnrollQuality); // Error handling routine is omitted ufs_res = UFS_GetFeatureNumber(hScanner, Template, TemplateSize, &nFeatureNum); if (ufs_res == UFS_OK) { // UFS_GetFeatureNumber is succeeded } else { // UFS_ GetFeatureNumber is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 95/293 BioMin SDK for Windows v3.6.0 UFS_EnrollUI Generate the fingerprint enrollment dialog. This function can be called after executing UFS_Init. Enrolling a fingerprint is extracting a template from finger and saving the template. Below sample’s UFS_EnrollUI function captures a fingerprint image after setting the template type. And extracts a template from captured fingerprint image. The extracted template will be saved in a specific template array, which is a parameter of the UFS_EnrollUI function. It supported only for Windows environment. *Constraints – You should have ‘img’ folder to use graphical backgrounds and buttons. The application uses the img folder should be at the upper level folder. For example, if the application is at the /bin/sample, ‘img’ folder should be at the location of /bin/sample/img. – Enrollment UI is based on COM interface. Thus you should register dll file before use. You can use the pre-coded script (register_enrollui.bat) to register the dll file, or simple type the command ‘regsvr32.exe IEnrollUI.dll’ at the command prompt. UFS_STATUS UFS_API UFS_EnrollUI( HUFScanner hScanner, int nTimeout, int nOptions, BYTE* pUF_FIR_Buf, int* pUF_FIR_Buf_Len, BYTE* pISO_FIR_Buf, int* pISO_FIR_Buf_Len, char* pImages_Path, BYTE* pImage_Buf = NULL, int* pImage_Buf_Len= NULL); Parameters hScanner [in] : Handle to the scanner object nTimeout [in] : Timeout of the capture nOptions [in] : Options for enrollment. Matching level, image Quality, number of fingerprints for enrollment, number of templates per finger pUF_FIR_Buf [out] : Pointer to the byte array for suprema template. This data pointer is assigned by maximum 1024*20 pUF_FIR_Buf_Len [out] : Pointer to the int array for length of suprema template buffer pISO_FIR_Buf [out] : Pointer to the byte array for ISO template. This data pointer is assigned by maximum 1024 * 20 pISO_FIR_Buf_Len [out] : Pointer to the int array for length of ISO template buffer pImages_Path [in] : Path to captured images to be saved. If NULL value is passed, nothing will be saved pImage_Buf [out] : Pointer to the byte array for image buffer. This data pointer is assigned by maximum 320 * 480 pImage_Buf_Len [out] : Pointer to the int array for length of image buffer Examples 96/293 BioMin SDK for Windows v3.6.0 // (1) initialize the buffer BYTE* pUFBuf = new BYTE[1024*20]; memset(pUFBuf, , 1024*20); int* pUFBufSize = new int[20]; memset(pUFBufSize, , 20); BYTE* pISOBuf = new BYTE[1024*20]; memset(pISOBuf, , 1024*20); int* pISOBufSize = new int[20]; memset(pISOBufSize, , 20); int nFingersToEnroll = 10; int nTemplatesPerFinger = 2; // (2) set the options int nOptions = UF_PACK_SECURITY(m_nSecurityLevel+1) | UF_PACK_QUALITY(m_quality) | UF_PACK_NFINGERS(nFingersToEnroll) | UF_PACK_NTEMPLATES(nTemplatesPerFinger); // // (3) execute the enrollment ui api UFS_EnrollUI(hScanner, m_nTimeout, nOptions, pUFBuf, pUFBufSize, pISOBuf, pISOBufSize, “c:\\”, null, null); // (4) get the templates buffer memcpy(m_pTemplateBuf, pUFBuf, 1024*20*sizeof(BYTE)); memcpy(m_pTemplateBufSize, pUFBufSize, 20*sizeof(int)); // (5) release buffer delete[] pUFBuf; delete[] pUFBufSize; delete[] pISOBuf; delete[] pISOBufSize; Return Values(refer to return values) 97/293 BioMin SDK for Windows v3.6.0 UFS_VerifyUI Generate the fingerprint verification dialog. This function can be called after executing UFS_Init and UFS_EnrollUI. Two fingerprints can be verified whether they are matched or not. Below sample’s UFS_VerifyUI function captures a fingerprint image and extracts a template from the image. And execute 1:1 matching using extracted template and templates enrolled from UFS_EnrollUI. *Constraints – Refer to the UFS_EnrollUI constraints. UFS_STATUS UFS_API UFS_VerifyUI( HUFScanner hScanner, int nTimeout, int nOptions, int nFPTemplateType, BYTE* pFIR_BUF, int* pFIR_Buf_Len, char* pImages_Path, int* nFingerIndex); Parameters hScanner [in] : Handle to the scanner object nTimeout [in] : Timeout of the capture nOptions [in] : Options for enrollment. Matching level, image Quality, number of fingerprints for enrollment, number of templates per finger nFPTemplateType [in] : Template type for matching enrolled templates with captured fingerprint pFIR_Buf [out] : Pointer to the byte array for template pFIR_Buf_Len [out] : Pointer to the int array for length of template buffer pImages_Path [in] : Path to captured images nFingerIndex [in] : Matched finger index from enrolled templates. If this value is -1, the matching result is failed Examples int nFingersToEnroll = 10; int nTemplatesPerFinger = 2; // (1) set the options int nOptions = UF_PACK_SECURITY(m_nSecurityLevel+1) | UF_PACK_QUALITY(m_quality) | UF_PACK_NFINGERS(nFingersToEnroll) | UF_PACK_NTEMPLATES(nTemplatesPerFinger); // (2) excute the enrollment ui api UFS_VerifyUI(hScanner, m_nTimeout, UFS_TEMPLATE_TYPE_SUPREMA, nOptions, 98/293 BioMin SDK for Windows v3.6.0 pBuf, pBufSize, “verfication.bmp”, &nFingerIndex); Return Values(refer to return values) 99/293 BioMin SDK for Windows v3.6.0 UFS_CaptureSingleUI Performs same as UFS_CaptureSingle and Popup Window appears once the capturing starts to show captured image then disappears. UFS_STATUS UFS_API UFS_CaptureSingleUI( HUFScanner hScanner, int nTimeout, int nOptions, BYTE* pUFImageBuf, int* pUFImageWidth, int* pUFImageHeight, char* pImages_Path , int* nFPQuality); Parameters hScanner [in] : Effective handle for connected BioMini nTimeout [in] : Applicable timeout parameter for capture single function nOptions [in] : Same as UFS_EnrollUI option pUFImageBuf [in] : Buffer of captured image (The memory buffer has to me managed by the user) pUFImageWidth, int* pUFImageHeight [in] : pImages_Path [in] : Width / Height of Captured image (pixel) nFPQuality [in] : Returns same score as UFS_GetFPQuality Example UFS_STATUS ufs_res = UFS_GetCaptureImageBufferInfo(hScanner ,&nWidth , &nHeight, &nResolution ); unsigned char *pbImage = (unsigned char*)malloc(nWidth * nHeight); ZeroMemory(pbImage , , nWidth* nHeight); int nOptions = UF_PACK_SECURITY(hWnd->m_nSecurityLevel+1) | UF_PACK_QUALITY(hWnd->m_quality); ufs_res = UFS_CaptureSingleUI(hScanner, hWnd->m_nTimeout, nOptions, pbImage, &nWidth , &nHeight, NULL, &nQuality); hWnd->AddMessage( "UFS_CaptureSingleUI FPQuality %s : %d\r\n", ufs_res==UFS_OK?"OK":"Failed", nQuality); free(pbImage); Return Values(refer to return values) 100/293 BioMin SDK for Windows v3.6.0 UFM_Create Creates a matcher object. UFM_STATUS UFM_API UFM_Create( HUFMatcher* phMatcher ); Parameters phMatcher [out] : Pointer to handle of the matcher object Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; ufm_res = UFM_Create(&hMatcher); if (ufm_res == UFM_OK) { // UFM_Create is succeeded } else { // UFM_Create is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 101/293 BioMin SDK for Windows v3.6.0 UFM_Delete Deletes specified matcher object. UFM_STATUS UFM_API UFM_Delete( HUFMatcher pMatcher ); Parameters pMatcher [in] : Handle to the matcher object Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; // Create hMatcher and use ufm_res = UFM_Delete(hMatcher); if (ufm_res == UFM_OK) { // UFM_Delete is succeeded } else { // UFM_Delete is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 102/293 BioMin SDK for Windows v3.6.0 UFM_GetParameter Gets parameter value of UFMatcher module. UFM_STATUS UFM_API UFM_GetParameter( HUFMatcher pMatcher, int nParam, void* pValue ); Parameters pMatcher [in] : Handle to the matcher object nParam [in] : Parameter type; one of parameters Parameter Code UFM_PARAM_FAST_MODE Default value Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) 1 Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: UFM_PARAM_SECURITY_LEVEL 302 Below 0.01%, 4: Below 0.001%, 5: Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) 4 UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFM_PARAM_AUTO_ROTATE 321 Rotate Mode(0: not use rotate mode, 1: use rotate mode) 0 UFM_PARAM_SDK_VERSION 210 SDK Version (get only) - UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; int nValue; // Create hMatcher // Get fast mode ufm_res = UFM_GetParameter(hMatcher, UFM_PARAM_FAST_MODE, &nValue); // Error handling routine is omitted // Get security level ufm_res = UFM_GetParameter(hMatcher, UFM_PARAM_SECURITY_LEVEL, &nValue); // Error handling routine is omitted // Get use SIF ufm_res = UFM_GetParameter(hMatcher, UFM_PARAM_USE_SIF, &nValue); // Error handling routine is omitted Return Values (refer to return values) 103/293 BioMin SDK for Windows v3.6.0 UFM_SetParameter Sets parameter value of UFMatcher module. UFM_STATUS UFM_API UFM_SetParameter( HUFMatcher pMatcher, int nParam, void* pValue ); Parameters pMatcher [in] : Handle to the matcher object nParam [in] : Parameter type; one of parameters Parameter Code UFM_PARAM_FAST_MODE Default value Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) 1 Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: UFM_PARAM_SECURITY_LEVEL 302 Below 0.01%, 4: Below 0.001%, 5: Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) 4 UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFM_PARAM_AUTO_ROTATE 321 Rotate Mode(0: not use rotate mode, 1: use rotate mode) 0 UFM_PARAM_SDK_VERSION 210 SDK Version (get only) - UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) pValue [in] : Pointer to parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; int nValue; // Create hMatcher // Set fast mode to nValue ufm_res = UFM_SetParameter(hMatcher, UFM_PARAM_FAST_MODE, &nValue); // Error handling routine is omitted // Set security level to nValue ufm_res = UFM_SetParameter(hMatcher, UFM_PARAM_SECURITY_LEVEL, &nValue); // Error handling routine is omitted // Set use SIF to nValue ufm_res = UFM_SetParameter(hMatcher, UFM_PARAM_USE_SIF, &nValue); // Error handling routine is omitted Return Values (refer to return values) 104/293 BioMin SDK for Windows v3.6.0 UFM_Verify Compares two extracted templates. UFM_STATUS UFM_API UFM_Verify( HUFMatcher pMatcher, unsigned char* pTemplate1, int nTemplate1Size, unsigned char* pTemplate2, int nTemplate2Size, int* bVerifySucceed ); Parameters pMatcher [in] : Handle to the matcher object pTemplate1 [in] : Pointer to the template1 nTemplate1Size [in] : Specifies the size of the template1 pTemplate2 [in] : Pointer to the template2 nTemplate2Size [in] : Specifies the size of the template2 bVerifySucceed [out] : Receives, whether verification is succeed; 1: verification is succeed, 0: verification is failed Examples // Assume template size is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char Template1[MAX_TEMPLATE_SIZE]; unsigned char Template2[MAX_TEMPLATE_SIZE]; int nTemplate1Size; int nTemplate2Size; int bVerifySucceed; // Create hMatcher // Get two templates, Template1 and Template2 ufm_res = UFM_Verify(hMatcher, Template1, nTemplate1Size, Template2, nTemplate2Size, &bVerifySucceed); if (ufm_res == UFM_OK) { // UFM_Verify is succeeded if (bVerifySucceed) { // Template1 is matched to Template2 } 105/293 BioMin SDK for Windows v3.6.0 else { // Template1 is not matched to Template2 } } else { // UFM_Verify is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 106/293 BioMin SDK for Windows v3.6.0 UFM_VerifyEx Performs same as UFM_Verify, and returns matching score by 6th parameter (matching score in between 0~1, idle match as the score is close to 1) UFM_STATUS UFM_API UFM_VerifyEx( HUFMatcher hMatcher, unsigned char* pTemplate1, int nTemplate1Size, unsigned char* pTemplate2, int nTemplate2Size, float* fScore, int* bVerifySucceed ); Parameter Parameters hMatcher [in] : Handle to the matcher object pTemplate1 [in] : Pointer to the template1 nTemplate1Size [in] : Specifies the size of the template1 pTemplate2 [in] : Pointer to the template2 nTemplate2Size [in] : Specifies the size of the template2 fScore [out] : Matching score beween pTemplate1 and pTemplate2 bCerifySucceed [out] : Receives, whether verification is succeed; 1: verification is succeed, 0: verification is failed Example // Assume template size is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char Template1[MAX_TEMPLATE_SIZE]; unsigned char Template2[MAX_TEMPLATE_SIZE]; int nTemplate1Size; int nTemplate2Size; float fScore; int bVerifySucceed; // Create hMatcher // Get two templates, Template1 and Template2 ufm_res = UFM_Verify(hMatcher, Template1, nTemplate1Size, Template2, nTemplate2Size, &fScore, &bVerifySucceed); if (ufm_res == UFM_OK) { // UFM_Verify is succeeded if (bVerifySucceed) 107/293 BioMin SDK for Windows v3.6.0 { // Template1 is matched to Template2 } else { // Template1 is not matched to Template2 } } else { // UFM_Verify is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 108/293 BioMin SDK for Windows v3.6.0 UFM_Identify, UFM_IdentifyMT Compares a template with given template array. UFM_IdentifyMT function uses multi threads internally for faster identifying in multi-core systems. UFM_STATUS UFM_API UFM_Identify( HUFMatcher pMatcher, unsigned char* pTemplate1, int nTemplate1Size, unsigned char** ppTemplate2, int* pnTemplate2Size, int nTemplate2Num, int nTimeout, int* pnMatchTemplate2Index ); UFM_STATUS UFM_API UFM_IdentifyMT( HUFMatcher pMatcher, unsigned char* pTemplate1, int nTemplate1Size, unsigned char** ppTemplate2, int* pnTemplate2Size, int nTemplate2Num, int nTimeout, int* pnMatchTemplate2Index ); Parameters pMatcher [in] : Handle of the matcher object pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template ppTemplate2 [in] : Pointer to the template array pnTemplate2Size [in] : Pointer to the template size array nTemplate2Num [in] : Specifies the number of templates in the template array nTimeout [in] : Specifies maximum time for identifying in milliseconds; If elapsed time for identifying exceeds nTimeout, function stops further identifying and returns UFM_ERR_MATCH_TIMEOUT; 0 means infinity pnMatchTemplate2Index [out] : Receives the index of matched template in the template array; -1 means pTemplate1 is not matched to all of templates in ppTemplate2 Examples // Assume template size is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char Template1[MAX_TEMPLATE_SIZE]; unsigned char** ppTemplate2; int nTemplate1Size; int* pnTemplate2Size; 109/293 BioMin SDK for Windows v3.6.0 int int int int nTemplate2Num; nTimeout; nMatchTemplate2Index; i; // Create hMatcher // Get input template from user, Template1 // Make template array from DB or something // Get number of template to nTemplate2Num ppTemplate2 = (unsigned char**)malloc(nTemplate2Num * sizeof(unsigned char*)); pnTemplate2Size = (int*)malloc(nTemplate2Num * sizeof(int)); for (i = ; i < nTemplate2Num; i++) { ppTemplate2[i] = (unsigned char*)malloc(MAX_TEMPLATE_SIZE * sizeof(unsigned char)); // Copy i th template to ppTemplate2[i] // Set i th template size to pnTemplateSize[i] } // Set match timeout to nTimeout ufm_res = UFM_Identify(hMatcher, Template1, Template1Size, ppTemplate2, pnTemplate2Size, nTemplate2Num, nTimeout, &nMatchTemplate2Index); if (ufm_res == UFM_OK) { // UFM_Identify is succeeded if (nMatchTemplate2Index != -1) { // Input fingerprint Template1 is matched to ppTemplate2[nMatchTemplate2Index] } else { // Input fingerprint is not in ppTemplate2 } } else { // UFM_Identify is failed // Use UFM_GetErrorString function to show error string } // Free template array free(pnTemplate2Size); for (i = ; i < nTemplate2Num; i++) { free(ppTemplate2[i]); 110/293 BioMin SDK for Windows v3.6.0 } free(ppTemplate2); Return Values (refer to return values) 111/293 BioMin SDK for Windows v3.6.0 UFM_AbortIdentify Aborts current identifying procedure started using UFM_Identify. UFM_STATUS UFM_API UFM_AbortIdentify( HUFMatcher pMatcher ); Parameters pMatcher [in] : Handle to the matcher object Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; // Create hMatcher // Start UFM_Identify ufm_res = UFM_AbortIdentify(hMatcher); if (ufm_res == UFM_OK) { // UFM_AbortIdentify is succeeded } else { // UFM_AbortIdentify is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 112/293 BioMin SDK for Windows v3.6.0 UFM_IdentifyInit Initializes identify with input template. UFM_STATUS UFM_API UFM_IdentifyInit( HUFMatcher pMatcher, unsigned char* pTemplate1, int nTemplate1Size, ); Parameters pMatcher [in] : Handle to the matcher object pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template Examples // Assume template size is 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char Template1[MAX_TEMPLATE_SIZE]; int nTemplate1Size; // Create hMatcher // Get Template1 ufm_res = UFM_IdentifyInit(hMatcher, Template1, nTemplate1Size); if (ufm_res == UFM_OK) { // UFM_IdentifyInit is succeeded } else { // UFM_IdentifyInit is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 113/293 BioMin SDK for Windows v3.6.0 UFM_IdentifyNext Matches one input template to the template specified in UFM_IdentifyInit. UFM_STATUS UFM_API UFM_IdentifyNext( HUFMatcher pMatcher, unsigned char* pTemplate2, int nTemplate2Size, int* bIdentifySucceed ); Parameters pMatcher [in] : Handle to the matcher object pTemplate2 [in] : Pointer to the template array nTemplate2Size [in] : Specifies the size of the template array bIdentifySucceed [out] : Receives whether identification is succeed; 1: identification is succeed, 0: identification is failed Examples #define MAX_TEMPLATE_NUM 50 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char *Template2[MAX_TEMPLATE_NUM * 2]; int nTemplate2Size[MAX_TEMPLATE_NUM * 2]; int nTemplate2Num; int bIdentifySucceed; int i; // Create hMatcher // Execute UFM_IdentifyInit with query template // Get number of templates in DB or something, and save it to nTemplate2Num bIdentifySucceed = ; for (i = ; i < nTemplate2Num; i++) { // Get one template in DB or something, and save it to Template2 and nTemplate2Size ufm_res = UFM_IdentifyNext(hMatcher, Template2[i], nTemplate2Size[i], &bIdentifySucceed); if (ufm_res == UFM_OK) { // UFM_IdentifyNext is succeeded } else { 114/293 BioMin SDK for Windows v3.6.0 // UFM_IdentifyNext is failed // Use UFM_GetErrorString function to show error string // return; } if (bIdentifySucceed) { // Identification is succeed break; } } if (!bIdentifySucceed) { // Identification is failed } Return Values (refer to return values) 115/293 BioMin SDK for Windows v3.6.0 UFM_RotateTemplate Rotates the specified template to the amount of 180 degrees. UFM_STATUS UFM_API UFM_RotateTemplate( HUFMatcher pMatcher, unsigned char* pTemplate, int nTemplateSize ); Parameters pMatcher[in] : Handle to the matcher object pTemplate [in / out] : Pointer to the template nTemplateSize [in] : Specifies the size of the template Examples // Assume template size if 1024 bytes #define MAX_TEMPLATE_SIZE 1024 UFM_STATUS ufm_res; HUFMatcher hMatcher; unsigned char Template[MAX_TEMPLATE_SIZE]; int nTemplateSize; // Create hMatcher // Get a template, and save it to Template and nTemplateSize ufm_res = UFM_RotateTemplate(hMatcher, Template, nTemplateSize); if (ufm_res == UFM_OK) { // UFM_RotateTemplate is succeeded } else { // UFM_RotateTemplate is failed // Use UFM_GetErrorString function to show error string } Return Values (refer to return values) 116/293 BioMin SDK for Windows v3.6.0 UFM_GetErrorString Gets the error string for specified UFM_STATUS value. UFM_STATUS UFM_API UFM_GetErrorString( UFM_STATUS res, char* szErrorString ); Parameters res [in] : Status return value szErrorString [out] : Receives error string Examples UFM_STATUS ufm_res; char strError[128]; // Get status return code, ufm_res ufm_res = UFM_GetErrorString(ufm_res, strError); if (ufm_res == UFM_OK) { // UFM_GetErrorString is succeeded } else { // UFM_GetErrorString is failed } Return Values (refer to return values) 117/293 BioMin SDK for Windows v3.6.0 UFM_GetTemplateType Gets the parameter value. UFM_STATUS UFM_API UFM_GetTemplateType( HUFMatcher pMatcher, int* nTemplateType ); Parameters pMatcher [in] : Handle to the matcher object nTemplateType [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to template type Template type UFM_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; int nTemplateType; // Get hMatcher handle ufm_res = UFM_GetTemplateType(hMatcher,&nTemplateType); // Error handling routine is omitted Return Values (refer to return values) 118/293 BioMin SDK for Windows v3.6.0 UFM_SetTemplateType Gets parameter value. UFM_STATUS UFM_API UFM_SetTemplateType( HUFMatcher pMatcher, int nTemplateType ); Parameters pMatcher [in] : Handle to the matcher object nTemplateType [in] : Parameter type; one of template type Template type UFM_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples UFM_STATUS ufm_res; HUFMatcher hMatcher; int nTemplateType; // Get hScanner handle nTemplateType = UFM_TEMPLATE_TYPE_SUPREMA; ufs_res = UFM_SetTemplateType(hMatcher, nTemplateType); // Error handling routine is omitted Return Values (refer to return values) 119/293 BioMin SDK for Windows v3.6.0 UFS_STATUS Every function in a UFScanner module returns UFS_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFS_STATUS (integer) value. Code UFS_OK UFS_ERROR UFS_ERR_NO_LICENSE UFS_ERR_LICENSE_NOT_MATCH UFS_ERR_LICENSE_EXPIRED UFS_ERR_NOT_SUPPORTED UFS_ERR_INVALID_PARAMETERS UFS_ERR_ALREADY_INITIALIZED UFS_ERR_NOT_INITIALIZED UFS_ERR_DEVICE_NUMBER_EXCEED UFS_ERR_LOAD_SCANNER_LIBRARY Value 0 -1 -101 -102 -103 -111 -112 -201 -202 -203 -204 UFS_ERR_CAPTURE_RUNNING -211 UFS_ERR_CAPTURE_FAILED UFS_ERR_NOT_GOOD_IMAGE UFS_ERR_EXTRACTION_FAILED UFS_ERR_CORE_NOT_DETECTED UFS_ERR_CORE_TO_LEFT_TOP UFS_ERR_CORE_TO_TOP UFS_ERR_CORE_TO_RIGHT_TOP UFS_ERR_CORE_TO_RIGHT UFS_ERR_CORE_TO_RIGHT_BOTTOM UFS_ERR_CORE_TO_BOTTOM UFS_ERR_CORE_TO_LEFT_BOTTOM -212 -301 -302 -351 -353 -354 -355 -356 -357 -358 -359 120/293 Description Success General error Device is not connected or License is not located License does not match License has expired This function is not supported Input parameters are invalid Module is already initialized Module is not initialized Device number exceeds Error on loading the library of a scanner Capturing is started using UFS_CaptureSingleImage or UFS_StartCapturing Capturing is timeout or aborted Input image is not good Extraction is failed Core is not detected Move finger to left-top Move finger to top Move finger to right-top Move finger to right Move finger to right-bottom Move finger to bottom Move finger to left-bottom BioMin SDK for Windows v3.6.0 UFM_STATUS Every function in a UFMatcher module returns UFM_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFM_STATUS (integer) value. Code UFM_OK UFM_ERROR UFM_ERR_NO_LICENSE UFM_ERR_LICENSE_NOT_MATCH UFM_ERR_LICENSE_EXPIRED UFM_ERR_NOT_SUPPORTED UFM_ERR_INVALID_PARAMETERS UFM_ERR_MATCH_TIMEOUT UFM_ERR_MATCH_ABORTED UFM_ERR_TEMPLATE_TYPE 121/293 Value 0 -1 -101 -102 -103 -111 -112 -401 -402 -411 Description Success General error System has no license License does not match License has expired This function is not supported Input parameters are invalid Matching is timeout Matching is aborted Template type does not match BioMin SDK for Windows v3.6.0 4. .net Development BioMini SDK provides .net Wrapper DLL for .net development. Suprema.UFScanner.dll Suprema.UFMatcher.dll By adding above wrapper dll to the development project reference, allows to use .net API easy. To run the program, not only the .net wrapper dll, UFScanner.dll & UFMatcher.dll must be located at exe folder together. 4.1 Environment Setting 1. Click “Add Reference…” on “Solution Explorer” 2. Select Suprema.UFMatcher.dll & Suprema.UFScanner.dll on “Browse” tab and click “OK”. 122/293 BioMin SDK for Windows v3.6.0 3. Can be confirmed as below from “Solution Explorer”, once the reference is successfully added. 4. Can use .net APIs by adding “using Suprema;” to the source code. 123/293 BioMin SDK for Windows v3.6.0 4.2 .net APIs This Document contains reference of all modules included in BioMini SDK for .NET developers using following languages, In this document, APIs are described using C# language. UFScanner.Init() Initializes a UFScanner module UFScanner.Update() Enforces a UFScanner module to update the connection state of scanners UFScanner.Uninit() Un-initializes a UFScanner module UFScanner.SetScannerCallback() Registers a scanner callback function UFScanner.RemoveScannerCallback() Removes a registered scanner callback function UFScanner.GetScannerNumber() Gets the number of scanners UFScanner.GetScannerHandle() Gets the scanner handle using the scanner index UFScanner.GetScannerHandleByID() Gets the scanner handle using a scanner ID UFScanner.GetScannerIndex() Gets the scanner index that is assigned to the scanner handle UFScanner.GetScannerID() Gets a scanner ID that is assigned to the scanner handle UFScanner.GetScannerType() Gets the scanner type that is assigned to the scanner handle UFScanner.GetParameter() Gets the parameter value of a UFScanner module UFScanner.SetParameter() Sets the parameter value of a UFScanner module UFScanner.IsSensorOn() Checks whether a scanner is connected or not 124/293 BioMin SDK for Windows v3.6.0 UFScanner.IsFingerOn() Checks whether a finger is placed on a scanner or not UFScanner.CaptureSingleImage() Captures single image. Captured image is stored to the internal buffer UFScanner.StartCapturing() Starts capturing. The capture is going on until the specified time exceeds UFScanner.StartAutoCapture() Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only UFScanner.IsCapturing() Checks if the specified scanner is running to capture which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFScanner.AbortCapturing() Aborts capturing which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFScanner.Extract() Extracts a template from the stored image buffer which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing() UFScanner.ExtractEx() Extracts a template from the stored image buffer which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing().This is extended version of UFScanner.Extract function to accommodate a template with large size UFScanner.SetEncryptionKey() Sets the encryption key UFScanner.EncryptTemplate() Encrypts a template UFScanner.DecryptTemplate() Decrypt a template UFScanner.GetCaptureImageBufferInfo() Gets the information of the capture image buffer UFScanner.GetCaptureImageBuffer() Copies the capture image buffer to the specified image data array UFScanner.GetCaptureImageBufferToBMPImageBuffer() Copies the capture image buffer to the specified image data of bmp format UFScanner.GetCaptureImageBufferTo19794_4ImageBuffer() Copies the capture image buffer to the specified image data of 19794_4 format UFScanner.GetCaptureImageBufferToWSQImageBuffer() 125/293 BioMin SDK for Windows v3.6.0 Copies the capture image buffer to the specified image data of the WSQ format UFScanner.GetCaptureImageBufferToWSQImageBufferVar() Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format UFScanner.DecompressWSQBMP() Decompress a WSQ file and save to a BMP file UFScanner.DecompressWSQBMPMem() Decompress a WSQ buffer and save to the image data of the bmp format UFScanner.DrawCaptureImageBuffer() Draws the fingerprint image which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). This function is not supported on java UFScanner.DrawFeatureBuffer() Draws the fingerprint image which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). This function is not supported on java And should be called after the extraction from the last captured fingerprint image. If extraction is not performed from the last captured image, this function will not draw the feature in the image frame UFScanner.SaveCaptureImageBufferToBMP() Saves the capture image buffer to the specified file of the bitmap format UFScanner.SaveCaptureImageBufferTo19794_4() Saves the capture image buffer to the specified file of the 19794_4 format UFScanner.SaveCaptureImageBufferToWSQ() Saves the capture image buffer to the specified file of the WSQ format UFScanner.SaveCaptureImageBufferToWSQVar() Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format UFScanner.ClearCaptureImageBuffer() Clears the capture image buffer stored to the internal buffer UFScanner.GetErrorString() Gets the error string for specified UFS_STAUS value UFScanner.GetTemplateType() Gets the template type value UFScanner.SetTemplateType() Sets the template type value UFScanner.SelectTemplate() Selects n number of good templates from m number of input templates UFScanner.SelectTemplateEx() 126/293 BioMin SDK for Windows v3.6.0 Selects n number of good templates from m number of input templates This is extended version of UFS_SelectTemplate function to accommodate the template with large size UFScanner.GetFPQuality() Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor) UFScanner.GetFeatureNumber() Get number of Minutiae from template data UFScanner.EnrollUI() Generates the fingerprint enrollment dialog. This function can be called after executing UFS_Init(). Enrolling a fingerprint is extracting a template from finger and saving the template. Below sample’s UFS_EnrollUI() captures a fingerprint image after setting the template type. And extracts a template from captured fingerprint image. The extracted template will be saved in a specific template array, which is a parameter of the UFS_EnrollUI(). It supported only for Windows environment UFScanner.VerifyUI() Generates the fingerprint verification dialog. This function can be called after executing UFS_Init() and UFS_EnrollUI(). Two fingerprints can be verified whether they are matched or not. Below sample’s UFS_VerifyUI() captures a fingerprint image and extracts a template from the image. And execute 1:1 matching using extracted template and templates enrolled from UFS_EnrollUI() UFMatcher.Create() Creates a matcher object UFMatcher.Delete() Deletes a specified matcher object UFMatcher.GetParameter() Gets the parameter value of UFMatcher module UFMatcher.SetParameter() Sets the parameter value of UFMatcher module UFMatcher.Verify() Compares two extracted templates UFMatcher.Identify(),IdentifyMT() Compares a template with given template array UFMatcher.IdentifyMT function uses multi threads internally for faster identifying in multi-core systems UFMatcher.AbortIdentify() Aborts current identifying procedure started using UFMatcher.Identify() UFMatcher.IdentifyInit() Initializes identify with input template UFMatcher.IdentifyNext() 127/293 BioMin SDK for Windows v3.6.0 Matches one input template to the template specified in UFMatcher.IdentifyInit() UFMatcher.RotateTemplate() Rotates the specified template to the amount of 180 degrees UFMatcher.GetErrorString() Gets the error string for the specified UFMatcher.STAUS value UFMatcher.GetTemplateType() Gets the parameter value UFMatcher.SetTemplateType() Sets the parameter value 128/293 BioMin SDK for Windows v3.6.0 UFScanner.Init Initializes a UFScanner module. public UFS_STATUS Init(); Return Values (refer to return values) UFScanner.Update Enforces a UFScanner module to update the connection state of scanners. public UFS_STATUS Update(); Return Values (refer to return values) 129/293 BioMin SDK for Windows v3.6.0 UFScanner.Uninit Un-initializes a UFScanner module. public UFS_STATUS Uninit(); Return Values (refer to return values) UFScanner.SetScannerCallback Registers the scanner callback function. Return Values (refer to return values) 130/293 BioMin SDK for Windows v3.6.0 UFScanner.RemoveScannerCallback Removes the registered scanner callback function. public UFS_STATUS RemoveScannerCallback(); Return Values (refer to return values) UFScanner.GetScannerNumber Gets the number of scanners. Return Values (refer to return values) 131/293 BioMin SDK for Windows v3.6.0 UFScanner.GetScannerHandle Gets the scanner handle using a scanner index. Return Values (refer to return values) UFScanner.GetScannerHandleByID Gets the scanner handle using a scanner ID. Return Values (refer to return values) 132/293 BioMin SDK for Windows v3.6.0 UFScanner.GetScannerIndex Gets a scanner index that is assigned to the scanner handle. Return Values (refer to return values) UFScanner.GetScannerID Gets scanner ID assigned to scanner handle. Return Values (refer to return values) 133/293 BioMin SDK for Windows v3.6.0 UFScanner.GetScannerType Gets the scanner type that is assigned to the scanner handle. public enum UFS_SCANNER_TYPE Parameters pnScannerType [out] : Receives one of the scanner type Scanner type Code Description UFS_SCANNER_TYPE_SFR200 1001 Suprema SFR200 UFS_SCANNER_TYPE_SFR300 1002 Suprema SFR300-S UFS_SCANNER_TYPE_SFR300v2 1003 Suprema SFR300v2, SFR400, SFR410 UFS_SCANNER_TYPE_SFR410 1006 Suprema SFR410 UFS_SCANNER_TYPE_SFR500 1004 Suprema SFR500 UFS_SCANNER_TYPE_SFR600 1005 Suprema SFR600 UFS_SCANNER_TYPE_SFR550 1007 Suprema SFR550 Return Values (refer to return values) UFScanner.GetParameter Gets parameter value of UFScanner module. Parameters Parameter UFS_PARAM_TIMEOUT Code Description 201 Timeout (millisecond unit) (0: infinite) Brightness (0 ~ 255); Higher value means darker UFS_PARAM_BRIGHTNESS 202 image.* Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) Sensitivity (0 ~ 7); Higher value means more UFS_PARAM_SENSITIVITY 203 sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) Template size (byte unit) (256 ~ 1024, 32 bytes step UFS_PARAM_TEMPLATE_SIZE 302 size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) Use live Finger Detection (0: not use LFD, 1 ~3 : use UFS_PARAM_DETECT_FAKE 312 LFD); Higher value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) Default value 5000 100 4 0 1024 0 0 pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type 134/293 BioMin SDK for Windows v3.6.0 Return Values (refer to return values) 135/293 BioMin SDK for Windows v3.6.0 UFScanner.SetParameter Sets parameter value of UFScanner module. Parameters Parameter Code UFS_PARAM_TIMEOUT Description 201 Timeout (millisecond unit) (0: infinite) Brightness (0 ~ 255); Higher value means darker UFS_PARAM_BRIGHTNESS 202 image.* Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) Sensitivity (0 ~ 7); Higher value means more UFS_PARAM_SENSITIVITY 203 sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) Template size (byte unit) (256 ~ 1024, 32 bytes step UFS_PARAM_TEMPLATE_SIZE 302 size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) Use live Finger Detection (0: not use LFD, 1 ~3 : use UFS_PARAM_DETECT_FAKE 312 LFD); Higher value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) Default value 5000 100 4 0 1024 0 0 Return Values (refer to return values) UFScanner.IsSensorOn Checks whether a scanner is connected or not. Return Values (refer to return values) 136/293 BioMin SDK for Windows v3.6.0 UFScanner.IsFingerOn Checks whether a finger is placed on a scanner or not. Parameters pbFingerOn [out] : Checks if a finger is placed on the specified scanner; 1: a finger is on the scanner, 0: a finger is not on the scanner Return Values (refer to return values) UFScanner.CaptureSingleImage Captures single image. Captured image is stored to the internal buffer. public UFS_STATUS CaptureSingleImage(); Return Values (refer to return values) 137/293 BioMin SDK for Windows v3.6.0 UFScanner.StartCapturing Starts capturing. The capture is going on until the specified time exceeds. public UFS_STATUS StartCapturing(); Return Values (refer to return values) UFScanner.StartAutoCapture Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only. public UFS_STATUS StartAutoCapture(); Return Values (refer to return values) 138/293 BioMin SDK for Windows v3.6.0 UFScanner.IsCapturing Checks if the specified scanner is running to capture which is started by UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). Parameters pbCapturing [out] : Checks if the specified scanner is running capturing; 1: the capture is running, 0: the capture is not running Return Values (refer to return values) UFScanner.AbortCapturing Aborts capturing which is started by UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). public UFS_STATUS AbortCapturing(); Return Values (refer to return values) 139/293 BioMin SDK for Windows v3.6.0 UFScanner.Extract Extracts a template from the stored image buffer which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). public UFS_STATUS Extract( byte[] Template, out int TemplateSize, out int EnrollQuality ); Parameters pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Return Values (refer to return values) UFScanner.ExtractEx Extracts a template from the stored image buffer which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). This is extended version of UFScanner.extract() function to accommodate a template with large size. public UFS_STATUS ExtractEx( int nBufferSize, byte[] Template, out int TemplateSize, out int EnrollQuality ); Parameters nBufferSize [in] : Template buffer size pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Return Values (refer to return values) 140/293 BioMin SDK for Windows v3.6.0 UFScanner.SetEncryptionKey Sets encryption key. public UFS_STATUS SetEncryptionKey(byte[] Key); Parameters pKey[out] : Pointer to the 32 bytes key array; default key is first byte is 1 and second to 32th byte are all 0 Return Values (refer to return values) UFScanner.EncryptTemplate Encrypts template. public UFS_STATUS EncryptTemplate( byte[] TemplateInput, int TemplateInputSize, byte[] TemplateOutput, ref int TemplateOutputSize ); Parameters hScanner [in] : Handle to the scanner object pTemplate [in] : Pointer to input template data pTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to encrypted template data pnTemplateOutputSize [in / out] : Inputs allocated size of encrypted template data; Receives output template size Return Values (refer to return values) 141/293 BioMin SDK for Windows v3.6.0 UFScanner.DecryptTemplate Decrypts template. public UFS_STATUS DecryptTemplate( byte[] TemplateInput, int TemplateInputSize, byte[] TemplateOutput, ref int TemplateOutputSize ); Parameters pTemplateInput [in] : Pointer to input template data(encrypted) nTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to output template data pnTemplateOutputSize [in / out] : Inputs allocated size of output template data; Receives output template size Return Values (refer to return values) UFScanner.GetCaptureImageBufferInfo Gets the information of the capture image buffer. Parameters pnWidth [out] : Receives the width of the capture image buffer pnHeight [out] : Receives the height of the capture image buffer pnResolution [out] : Receives the resolution of the capture image buffer Return Values (refer to return values) 142/293 BioMin SDK for Windows v3.6.0 UFScanner.GetCaptureImageBuffer Copies the capture image buffer to the specified image data array. public UFS_STATUS GetCaptureImageBuffer( out Bitmap bitmap, out int Resolution); Parameters pImageData [out] : Pointer to image data array; The array must be allocated bigger than the size of capture image buffer in advance Return Values (refer to return values) UFScanner.GetCaptureImageBufferToBMPImageBuffer Copies the capture image buffer to the specified image data of bmp format. public UFS_STATUS GetCaptureImageBufferToBMPImageBuffer( byte[] imageData, out int nImageDataLength); Parameters pImageData [out] : Pointer to bmp image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageDataLength [out] : pointer to bmp image data size Return Values (refer to return values) 143/293 BioMin SDK for Windows v3.6.0 UFScanner.GetCaptureImageBufferTo19794_4ImageBuff er Copies the capture image buffer to the specified image data of 19794_4 format. public UFS_STATUS GetCaptureImageBufferTo19794_4ImageBuffer( byte[] imageData, out int nImageDataLength); Parameters pImageData [out] : Pointer to 19794_4 format image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageDataLength [out] : pointer to 19794_4 format image data size Return Values (refer to return values) UFScanner.GetCaptureImageBufferToWSQImageBuffer Copies the capture image buffer to the specified image data of the WSQ format. public UFS_STATUS GetCaptureImageBufferToWSQImageBuffer( byte[] wsqData, out int TemplateSize, float ratio); Parameters ratio [in] : Compression ratio of image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size Return Values (refer to return values) 144/293 BioMin SDK for Windows v3.6.0 UFScanner.GetCaptureImageBufferToWSQImageBufferV ar Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format. public UFS_STATUS GetCaptureImageBufferToWSQImageBufferVar( byte[] wsqData, out int TemplateSize, float ratio, int nWidth, int nHeight ); Parameters Ratio [in] : Compression ratio of image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Return Values (refer to return values) UFScanner.DecompressWSQBMP Decompress WSQ file and save to BMP file. public UFS_STATUS DecompressWSQBMP( string wsqFileName, string bmpFileName); Parameters wsqFile [in] : Specifies file name to get wsq data buffer bmpFile [in] : Specifies file name to save image buffer Return Values (refer to return values) 145/293 BioMin SDK for Windows v3.6.0 UFScanner.DecompressWSQBMPMem Decompress WSQ buffer and save to image data of bmp format. public UFS_STATUS DecompressWSQBMPMem( byte[] wsqBuffer, int wsqBufferLen, byte[] bmpBuffer, out int bmpBufferLen); Parameters wsqBuffer [in] : Pointer to WSQ format image data wsqBufferLen [in] : Size of WSQ format image data bmpBuffer [out] : Pointer to bmp image data; The array must be allocated bigger than the size of capture image buffer in advance. bmpBufferLen [out] : pointer to bmp image data size Return Values (refer to return values) UFScanner.DrawCaptureImageBuffer Draws the fingerprint image which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). This function is not supported on java. public UFS_STATUS DrawCaptureImageBuffer( Graphics g, Rectangle rect, bool DrawCore); Parameters hDC [in] : Handle to the DC where the fingerprint image is drawn nLeft [in] : Specifies the logical x-coordinate of the upper-left corner of the rectangle nTop [in] : Specifies the logical y-coordinate of the upper-left corner of the rectangle nRight [in] : Specifies the logical x-coordinate of the lower-right corner of the rectangle nBottom [in] : Specifies the logical y-coordinate of the lower-right corner of the rectangle bCore [in] : Specifies whether the core of fingerprint is drawn of not Return Values (refer to return values) 146/293 BioMin SDK for Windows v3.6.0 UFScanner.DrawFeatureBuffer Draws the fingerprint image which is acquired using UFScanner.CaptureSingleImage() or UFScanner.StartCapturing(). This function is not supported on java and should be called after the extraction from the last captured fingerprint image. If extraction is not performed from the last captured image, this function will not draw the feature in the image frame. public UFS_STATUS DrawFeatureBuffer( Graphics g, Rectangle rect, bool DrawCore); Parameters hDC [in] : Handle to the DC where the fingerprint image is drawn nLeft [in] : Specifies the logical x-coordinate of the upper-left corner of the rectangle nTop [in] : Specifies the logical y-coordinate of the upper-left corner of the rectangle nRight [in] : Specifies the logical x-coordinate of the lower-right corner of the rectangle nBottom [in] : Specifies the logical y-coordinate of the lower-right corner of the rectangle bCore [in] : Specifies whether the core of fingerprint is drawn of not Return Values (refer to return values) UFScanner.SaveCaptureImageBufferToBMP Saves the capture image buffer to the specified file of the bitmap format. public UFS_STATUS SaveCaptureImageBufferToBMP( string FileName ); Parameters szFileName [in] : Specfies file name to save image buffer Return Values (refer to return values) 147/293 BioMin SDK for Windows v3.6.0 UFScanner.SaveCaptureImageBufferTo19794_4 Saves the capture image buffer to the specified file of the 19794_4 format. public UFS_STATUS SaveCaptureImageBufferTo19794_4( string FileName ); Parameters szFileName [in] : Specifies file name to save image buffer Return Values (refer to return values) UFScanner.SaveCaptureImageBufferToWSQ Saves the capture image buffer to the specified file of the WSQ format. public UFS_STATUS SaveCaptureImageBufferToWSQ( string FileName, float ratio); Parameters ratio [in] : Compression ratio of image szFileName [in] : Specifies file name to save image buffer Return Values (refer to return values) 148/293 BioMin SDK for Windows v3.6.0 UFScanner.SaveCaptureImageBufferToWSQVar Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format. public UFS_STATUS SaveCaptureImageBufferToWSQVar( string FileName, float ratio, int nWidth, int nHeight ); Parameters ratio [in] : Compression ratio of image szFileName [in] : Specfies file name to save image buffer nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Return Values (refer to return values) UFScanner.ClearCaptureImageBuffer Clears the capture image buffer stored to the internal buffer. public UFS_STATUS ClearCaptureImageBuffer(); Return Values (refer to return values) 149/293 BioMin SDK for Windows v3.6.0 UFScanner.GetErrorString Gets the error string for specified UFScanner.STATUS() value. public static UFS_STATUS GetErrorString( UFS_STATUS res, out string ErrorString); Parameters szErrorString [out] : Receives error string Return Values (refer to return values) UFScanner.GetTemplateType Gets the template type value. Parameters pValue [out] : Receives the parameter value of specified parameter type; 'pValue' must point to adequate type that is matched with the parameter type Template type Code Description UFS_TEMPLATE_TYPE_SUPREMA 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Return Values (refer to return values) 150/293 BioMin SDK for Windows v3.6.0 UFScanner.SetTemplateType Sets the template type value. Parameters nTemplateType [in] : Parameter type; one of template type Template type Code Description UFS_TEMPLATE_TYPE_SUPREMA 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Return Values (refer to return values) UFScanner.SelectTemplate Selects n number of good templates from m number of input templates. Parameters ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Return Values (refer to return values) 151/293 BioMin SDK for Windows v3.6.0 UFScanner.SelectTemplateEx Selects n number of good templates from m number of input templates This is extended version of UFScanner.SelectTemplate() function to accommodate the template with large size. Parameters nBufferSize [in] : Template buffer size ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to the input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Return Values (refer to return values) UFScanner.GetFPQuality Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor). public UFS_STATUS GetFPQuality( byte[] fpImageData, int nWidth, int nHeight, out int nFPQuality); Parameters fpImageData[in] : Raw capture image data nWidth [in] : Width of capture image data nHeight [in] : Height of capture image data nFPQuality[in] : NIST quality score of image data Return Values (refer to return values) 152/293 BioMin SDK for Windows v3.6.0 UFScanner.GetFeatureNumber Get the number of Minutiae from the template data. public UFS_STATUS GetFeatureNumber( byte[] Template, int TemplateSize, out int FeatureNumber); Parameters pTemplate [in] : Template data nTemplateSize [in] : Size of template data pnFeatureNum [out] : The number of minutiae from pTemplate Return Values (refer to return values) UFScanner.EnrollUI Generate the fingerprint enrollment dialog. This function can be called after executing UFS_Init. Enrolling a fingerprint is extracting a template from finger and saving the template. Below sample’s UFS_EnrollUI function captures a fingerprint image after setting the template type. And extracts a template from captured fingerprint image. The extracted template will be saved in a specific template array, which is a parameter of the UFS_EnrollUI function. It supported only for Windows environment. *Constraints – You should have ‘img’ folder to use graphical backgrounds and buttons. The application uses the img folder should be at the upper level folder. For example, if the application is at the /bin/sample, ‘img’ folder should be at the location of /bin/sample/img. – Enrollment UI is based on COM interface. Thus you should register dll file before use. You can use the pre-coded script (register_enrollui.bat) to register the dll file, or simple type the command ‘regsvr32.exe IEnrollUI.dll’ at the command prompt. public Suprema.UFS_STATUS EnrollUI( int nTimeout, int nOptions, byte[] pUF_FIR_Buf, int[] pUF_FIR_Buf_Len, byte[] pISO_FIR_Buf, int[] pISO_FIR_Buf_Len, byte[] pImages_Path, byte[] pImages_buf, int[] pImages_Buf_Len); 153/293 BioMin SDK for Windows v3.6.0 Parameters nTimeout [in] : Timeout of the capture nOptions [in] : Options for enrollment. Matching level, image Quality, number of fingerprints for enrollment, number of templates per finger pUF_FIR_Buf [out] : Pointer to the byte array for suprema template. This data pointer is assigned by maximum 1024*20 pUF_FIR_Buf_Len [out] : Pointer to the int array for length of suprema template buffer pISO_FIR_Buf [out] : Pointer to the byte array for ISO template. This data pointer is assigned by maximum 1024 * 20 pISO_FIR_Buf_Len [out] : Pointer to the int array for length of ISO template buffer pImages_Path [in] : Path to captured images to be saved. If NULL value is passed, nothing will be saved pImage_Buf [out] : Pointer to the byte array for image buffer. This data pointer is assigned by maximum 320 * 480 pImage_Buf_Len [out] : Pointer to the int array for length of image buffer Return Values (refer to return values) 154/293 BioMin SDK for Windows v3.6.0 UFScanner.VerifyUI Generate the fingerprint verification dialog. This function can be called after executing UFS_Init and UFS_EnrollUI. Two fingerprints can be verified whether they are matched or not. Below sample’s UFS_VerifyUI function captures a fingerprint image and extracts a template from the image. And execute 1:1 matching using extracted template and templates enrolled from UFS_EnrollUI. *Constraints – Refer to the UFS_EnrollUI constraints. public Suprema.UFS_STATUS VerifyUI( int nTimeout, int nOptions, int nFPTemplateType, byte[] pFIR_Buf, int[] pFIR_Buf_Len, byte[] pImage_Name, out int nFingerIndex); Parameters nTimeout [in] : Timeout of the capture nOptions [in] : Options for enrollment. Matching level, image Quality, number of fingerprints for enrollment, number of templates per finger nFPTemplateType [in] : Template type for matching enrolled templates with captured fingerprint pFIR_Buf [out] : Pointer to the byte array for template pFIR_Buf_Len [out] : Pointer to the int array for length of template buffer pImage_Name[in] : nFingerIndex [in] : Matched finger index from enrolled templates. If this value is -1, the matching result is failed 155/293 BioMin SDK for Windows v3.6.0 UFMatcher.Create Creates a matcher object. Parameters phMatcher [out] : Pointer to handle of the matcher object Return Values (refer to return values) 156/293 BioMin SDK for Windows v3.6.0 UFMatcher.Delete Deletes specified matcher object. Return Values (refer to return values) UFMatcher.GetParameter Gets parameter value of UFMatcher module. Parameters nParam [in] : Parameter type; one of parameters Parameter Code UFM_PARAM_FAST_MODE Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: Below 0.01%, 4: Below 0.001%, 5: UFM_PARAM_SECURITY_LEVEL 302 Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) Rotate Mode(0: not use rotate mode, 1: use rotate UFM_PARAM_AUTO_ROTATE 321 mode) UFM_PARAM_SDK_VERSION 210 SDK Version (get only) UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) Default value 1 4 0 0 - pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Return Values (refer to return values) 157/293 BioMin SDK for Windows v3.6.0 UFMatcher.SetParameter Sets parameter value of UFMatcher module. Parameters nParam [in] : Parameter type; one of parameters Parameter Code UFM_PARAM_FAST_MODE Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: Below 0.01%, 4: Below 0.001%, 5: UFM_PARAM_SECURITY_LEVEL 302 Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) Rotate Mode(0: not use rotate mode, 1: use rotate UFM_PARAM_AUTO_ROTATE 321 mode) UFM_PARAM_SDK_VERSION 210 SDK Version (get only) UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) Default value 1 4 0 0 - pValue [in] : Pointer to parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Return Values (refer to return values) UFMatcher.Verify Compares two extracted templates. public Suprema.UFM_STATUS Verify( byte[] Template1, int Template1Size, byte[] Template2, int Template2Size, out bool VerifySucceed ); Parameters pTemplate1 [in] : Pointer to the template1 nTemplate1Size [in] : Specifies the size of the template1 pTemplate2 [in] : Pointer to the template2 nTemplate2Size [in] : Specifies the size of the template2 bCerifySucceed [out] : Receives, whether verification is succeed; 1: verification is succeed, 0: verification is failed 158/293 BioMin SDK for Windows v3.6.0 Return Values (refer to return values) 159/293 BioMin SDK for Windows v3.6.0 UFMatcher.Identify, UFM_IdentifyMT Compares a template with given template array. UFM_IdentifyMT function uses multi threads internally for faster identifying in multi-core systems. Parameters pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template ppTemplate2 [in] : Pointer to the template array pnTemplate2Size [in] : Pointer to the template size array nTemplate2Num [in] : Specifies the number of templates in the template array nTimeout [in] : Specifies maximum time for identifying in milliseconds; If elapsed time for identifying exceeds nTimeout, function stops further identifying and returns UFM_ERR_MATCH_TIMEOUT; 0 means infinity pnMatchTemplate2Index [out] : Receives the index of matched template in the template array; -1 means pTemplate1 is not matched to all of templates in ppTemplate2 Return Values (refer to return values) UFMatcher.AbortIdentify Aborts current identifying procedure started using UFMatcher.Identify(),IdentifyMT(). Return Values (refer to return values) 160/293 BioMin SDK for Windows v3.6.0 UFMatcher.IdentifyInit Initializes identify with input template. public Suprema.UFM_STATUS IdentifyInit( byte[] Template1, int Template1Size ); Parameters pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template Return Values (refer to return values) UFMatcher.IdentifyNext Matches one input template to the template specified in UFMatcher.IdentifyInit(). public Suprema.UFM_STATUS IdentifyNext( byte[] Template2, int Template2Size, out bool IdentifySucceed) }; Parameters pTemplate2 [in] : Pointer to the template array nTemplate2Size [in] : Specifies the size of the template array bIdentifySucceed [out] : Receives whether identification is succeed; 1: identification is succeed, 0: identification is failed Return Values (refer to return values) 161/293 BioMin SDK for Windows v3.6.0 UFMatcher.RotateTemplate Rotates the specified template to the amount of 180 degrees. public Suprema.UFM_STATUS RotateTemplate(byte[] Template, int TemplateSize); Parameters pTemplate [in / out] : Pointer to the template nTemplateSize [in] : Specifies the size of the template Return Values (refer to return values) UFMatcher.GetErrorString Gets the error string for the specified UFMatcher.STATUS() value. public static Suprema.UFM_STATUS GetErrorString( Suprema.UFM_STATUS res, out string ErrorString ); Parameters res [in] : Status return value szErrorString [out] : Receives error string Return Values (refer to return values) 162/293 BioMin SDK for Windows v3.6.0 UFMatcher.GetTemplateType Gets the parameter value. Parameters pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to template type Template type Code Description UFM_TEMPLATE_TYPE_SUPREMA 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Return Values (refer to return values) UFMatcher.SetTemplateType Gets parameter value. Parameters nTemplateType [in] : Parameter type; one of template type Template type Code Description UFM_TEMPLATE_TYPE_SUPREMA 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Return Values (refer to return values) 163/293 BioMin SDK for Windows v3.6.0 UFScanner.STATUS Every function in a UFScanner module returns UFS_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFS_STATUS (integer) value. Code UFS_OK UFS_ERROR UFS_ERR_NO_LICENSE UFS_ERR_LICENSE_NOT_MATCH UFS_ERR_LICENSE_EXPIRED UFS_ERR_NOT_SUPPORTED UFS_ERR_INVALID_PARAMETERS UFS_ERR_ALREADY_INITIALIZED UFS_ERR_NOT_INITIALIZED UFS_ERR_DEVICE_NUMBER_EXCEED UFS_ERR_LOAD_SCANNER_LIBRARY Value 0 -1 -101 -102 -103 -111 -112 -201 -202 -203 -204 UFS_ERR_CAPTURE_RUNNING -211 UFS_ERR_CAPTURE_FAILED UFS_ERR_NOT_GOOD_IMAGE UFS_ERR_EXTRACTION_FAILED UFS_ERR_CORE_NOT_DETECTED UFS_ERR_CORE_TO_LEFT_TOP UFS_ERR_CORE_TO_TOP UFS_ERR_CORE_TO_RIGHT_TOP UFS_ERR_CORE_TO_RIGHT UFS_ERR_CORE_TO_RIGHT_BOTTOM UFS_ERR_CORE_TO_BOTTOM UFS_ERR_CORE_TO_LEFT_BOTTOM -212 -301 -302 -351 -353 -354 -355 -356 -357 -358 -359 164/293 Description Success General error Device is not connected or License is not located License does not match License has expired This function is not supported Input parameters are invalid Module is already initialized Module is not initialized Device number exceeds Error on loading the library of a scanner Capturing is started using UFS_CaptureSingleImage or UFS_StartCapturing Capturing is timeout or aborted Input image is not good Extraction is failed Core is not detected Move finger to left-top Move finger to top Move finger to right-top Move finger to right Move finger to right-bottom Move finger to bottom Move finger to left-bottom BioMin SDK for Windows v3.6.0 UFMatcher.STATUS Every function in a UFMatcher module returns UFM_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFM_STATUS (integer) value. Code UFM_OK UFM_ERROR UFM_ERR_NO_LICENSE UFM_ERR_LICENSE_NOT_MATCH UFM_ERR_LICENSE_EXPIRED UFM_ERR_NOT_SUPPORTED UFM_ERR_INVALID_PARAMETERS UFM_ERR_MATCH_TIMEOUT UFM_ERR_MATCH_ABORTED UFM_ERR_TEMPLATE_TYPE 165/293 Value 0 -1 -101 -102 -103 -111 -112 -401 -402 -411 Description Success General error System has no license License does not match License has expired This function is not supported Input parameters are invalid Matching is timeout Matching is aborted Template type does not match BioMin SDK for Windows v3.6.0 5. JAVA Development 5.1 Environment Setting You need the following packages installed BioMini SDK, JAVA SDK 1.4 or higher, JNI package file (“BioMiniSDK.jar” is at the following location “ \bin\java”) 1. Install Java SDK You must install Java SDK 1.4 or higher version. For more information, please see http://www.oracle.com. 2. Set Classpath After java sdk installation, you must set classpath as following example. “CLASSPATH=.; ;” 3. Build and run sample You can build and run the JNI demo application in the following location. \samples\java\demoBioMini.java 166/293 BioMin SDK for Windows v3.6.0 Setting Guide 1. After creating the project, select “Add JAR?Folder…” by using right mouse button from the Library. 2. Add BioMiniSDK.jar & demoBioMini.jar from the bin folder as below. 3. Add /SDK_Dir/samples/java\demoBioMini.java file to the source packages 167/293 BioMin SDK for Windows v3.6.0 4. Can run as below once initiated after compile. 168/293 BioMin SDK for Windows v3.6.0 5.2 Java APIs The Java API is built as a wrapper to the JNI. The Java API is available for Windows. This page provides an overview of the API. For details of using the API on a specific reader platform, consult the appropriate Platform Guide. UFS_Init() Initializes a UFScanner module UFS_Update() Enforces a UFScanner module to update the connection state of scanners UFS_Uninit() Un-initializes a UFScanner module UFS_SetScannerCallback() Registers a scanner callback function UFS_RemoveScannerCallback() Removes a registered scanner callback function UFS_GetScannerNumber() Gets the number of scanners UFS_GetScannerHandle() Gets the scanner handle using the scanner index UFS_GetScannerHandleByID() Gets the scanner handle using a scanner ID UFS_GetScannerIndex() Gets the scanner index that is assigned to the scanner handle UFS_GetScannerID() Gets a scanner ID that is assigned to the scanner handle UFS_GetScannerType() Gets the scanner type that is assigned to the scanner handle UFS_GetParameter() Gets the parameter value of a UFScanner module UFS_SetParameter() Sets the parameter value of a UFScanner module 169/293 BioMin SDK for Windows v3.6.0 UFS_IsSensorOn() Checks whether a scanner is connected or not UFS_IsFingerOn() Checks whether a finger is placed on a scanner or not UFS_CaptureSingleImage() Captures single image. Captured image is stored to the internal buffer UFS_StartCapturing() Starts capturing. The capture is going on until the specified time exceeds UFS_StartAutoCapture() Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only UFS_IsCapturing() Checks if the specified scanner is running to capture which is started by UFS_CaptureSingleImage or UFS_StartCapturing UFS_AbortCapturing() Aborts capturing which is started by UFS_CaptureSingleImage() or UFS_StartCapturing() UFS_Extract() Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing() UFS_ExtractEx() Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage() or UFS_StartCapturing().This is extended version of UFS_Extract() function to accommodate a template with large size UFS_SetEncryptionKey() Sets the encryption key UFS_EncryptTemplate() Encrypts a template UFS_DecryptTemplate() Decrypt a template UFS_GetCaptureImageBufferInfo() Gets the information of the capture image buffer UFS_GetCaptureImageBuffer() Copies the capture image buffer to the specified image data array UFS_GetCaptureImageBufferToBMPImageBuffer() Copies the capture image buffer to the specified image data of bmp format UFS_GetCaptureImageBufferTo19794_4ImageBuffer() 170/293 BioMin SDK for Windows v3.6.0 Copies the capture image buffer to the specified image data of 19794_4 format UFS_GetCaptureImageBufferToWSQImageBuffer() Copies the capture image buffer to the specified image data of the WSQ format UFS_GetCaptureImageBufferToWSQImageBufferVar() Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format UFS_DecompressWSQBMP() Decompress a WSQ file and save to a BMP file UFS_DecompressWSQBMPMem() Decompress a WSQ buffer and save to the image data of the bmp format UFS_SaveCaptureImageBufferToBMP() Saves the capture image buffer to the specified file of the bitmap format UFS_SaveCaptureImageBufferTo19794_4() Saves the capture image buffer to the specified file of the 19794_4 format UFS_SaveCaptureImageBufferToWSQ() Saves the capture image buffer to the specified file of the WSQ format UFS_SaveCaptureImageBufferToWSQVar() Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format UFS_ClearCaptureImageBuffer() Clears the capture image buffer stored to the internal buffer UFS_GetErrorString() Gets the error string for specified UFS_STAUS value UFS_GetTemplateType() Gets the template type value UFS_SetTemplateType() Sets the template type value UFS_SelectTemplate() Selects n number of good templates from m number of input templates UFS_SelectTemplateEx() Selects n number of good templates from m number of input templates This is extended version of UFS_SelectTemplate function to accommodate the template with large size UFS_GetFPQuality() Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor) 171/293 BioMin SDK for Windows v3.6.0 UFS_GetFeatureNumber() Get number of Minutiae from template data UFM_Create() Creates a matcher object UFM_Delete() Deletes a specified matcher object UFM_GetParameter() Gets the parameter value of UFMatcher module UFM_SetParameter() Sets the parameter value of UFMatcher module UFM_Verify() Compares two extracted templates UFM_Identify(),IdentifyMT() Compares a template with given template array UFM_IdentifyMT() function uses multi threads internally for faster identifying in multi-core systems UFM_AbortIdentify() Aborts current identifying procedure started using UFM_Identify() UFM_IdentifyInit() Initializes identify with input template UFM_IdentifyNext() Matches one input template to the template specified in UFM_IdentifyInit() UFM_RotateTemplate() Rotates the specified template to the amount of 180 degrees UFM_GetErrorString() Gets the error string for the specified UFM_STAUS value UFM_GetTemplateType() Gets the parameter value UFM_SetTemplateType() Sets the parameter value 172/293 BioMin SDK for Windows v3.6.0 UFS_Init Initializes a UFScanner module. int UFS_Init(); Examples int nRes =; BioMiniSDK p = null; //make instance p = new BioMiniSDK(); nRes = p.UFS_Init(); if(nRes ==p.UFS_OK) { // UFS_Init is succeeded } else { // UFS_Init is failed // Use UFS_GetErrorString method to show error string } Return Values(refer to return values) 173/293 BioMin SDK for Windows v3.6.0 UFS_Update Enforces a UFScanner module to update the connection state of scanners. int UFS_Update(); Examples int ufs_res; //make class library instance(BioMiniSDK p) ufs_res = p.UFS_Update(); if (ufs_res == p.UFS_OK) { // UFS_Update is succeeded } else { // UFS_Update is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 174/293 BioMin SDK for Windows v3.6.0 UFS_Uninit Un-initializes a UFScanner module. int UFS_UnInit(); Examples int ufs_res; //make class library instance(BioMiniSDK p) ufs_res = p.UFS_Uninit(); if (ufs_res == p.UFS_OK) { // UFS_Uninit is succeeded } else { // UFS_Uninit is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 175/293 BioMin SDK for Windows v3.6.0 UFS_SetScannerCallback Registers the scanner callback function. int UFS_SetScannerCallback( String nCallbackFunctionName); Parameters nCallbackFunctionName[in] : Examples // Define scanner procedure public void scannerCallback(char[] szScannerID, int bSensorOn) { // ... } // Set parameter, the name of call function for scanner event (USB Plug) //make class library instance(BioMiniSDK p) ufs_res = p.UFS_SetScannerCallback("scannerCallback"); if(ufs_res==p.UFS_OK) { // UFS_SetScannerCallback is succeeded } else { // UFS_SetScannerCallback is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 176/293 BioMin SDK for Windows v3.6.0 UFS_RemoveScannerCallback Removes the registered scanner callback function. int UFS_RemoveScannerCallback(); Examples int ufs_res; //make class library instance(BioMiniSDK p) ufs_res = p.UFS_RemoveScannerCallback(); if (ufs_res == UFS_OK) { // UFS_RemoveScannerCallback is succeeded } else { // UFS_RemoveScannerCallback is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 177/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerNumber Gets the number of scanners. int UFS_GetScannerNumber( int[] pnScannerNumber ); Parameters pnScannerNumber [out] : Receive the number of scanners Examples int ufs_res; int[] nNumber = new int[1]; //make class library instance(BioMiniSDK p) ufs_res = p.UFS_GetScannerNumber(nNumber); if (ufs_res == UFS_OK) { // UFS_GetScannerNumber is succeeded nNumber[1] ... } else { // UFS_GetScannerNumber is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 178/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerHandle Gets the scanner handle using a scanner index. int UFS_GetScannerHandle( int nScannerIndex, long[] phScanner ); Parameters nScannerIndex [in] : Scanner index (0 ~ number of scanners - 1) phScanner [out] : Pointer to handle of the scanner object Examples int ufs_res; long[] hScanner = new long[1]; int index = ; // Set nScannerIndex to (0 ~ number of scanners - 1 ) // Number of scanner can be retrieved using UFS_GetScannerNumber function //make class library instance(BioMiniSDK p) ufs_res = p.UFS_GetScannerHandle(index, hScanner); if (ufs_res == UFS_OK) { // UFS_GetScannerHandle is succeeded // hScanner[0] is the handle } else { // UFS_GetScannerHandle is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 179/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerHandleByID Gets the scanner handle using a scanner ID. int UFS_GetScannerHandleByID( String szScannerID, long[] phScanner ); Parameters szScannerID [in] : Scanner ID phScanner [out] : Pointer to handle of the scanner object Return Values(refer to return values) 180/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerIndex Gets a scanner index that is assigned to the scanner handle. int UFS_GetScannerIndex( long hScanner, int[] pnScannerIndex ); Parameters hScanner [in] : Handle to the scanner object pnScannerIndex [out] : Receive scanner index of specified scanner handle Return Values(refer to return values) 181/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerID Gets scanner ID assigned to scanner handle. int UFS_GetScannerID( long hScanner, byte[] szScannerID ); Parameters hScanner [in] : Handle to the scanner object szScannerID [out] : Receive scanner ID of specified scanner handle; Scanner ID has maximum 32 characters. szScannerID must be allocated in user's applications and allocated size must be larger than 33 bytes for considering null character in 33th byte position. Examples int ufs_res; long[] hScanner = new long[1]; byte[] strID = new byte[128]; // Should be larger than 33 bytes // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_GetScannerID(hScanner[], strID); if (ufs_res == p.UFS_OK) { // UFS_GetScannerID is succeeded // byte to string.. } else { // UFS_GetScannerID is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 182/293 BioMin SDK for Windows v3.6.0 UFS_GetScannerType Gets the scanner type that is assigned to the scanner handle. int UFS_GetScannerType( long hScanner, int[] pnScannerType ); Parameters hScanner [in] : Handle to the scanner object pnScannerType [out] : Receives one of the scanner type Scanner type Code Description UFS_SCANNER_TYPE_SFR200 1001 Suprema SFR200 UFS_SCANNER_TYPE_SFR300 1002 Suprema SFR300-S UFS_SCANNER_TYPE_SFR300v2 1003 Suprema SFR300v2, SFR400 UFS_SCANNER_TYPE_SFR500 1004 Suprema SFR500 UFS_SCANNER_TYPE_SFR600 1005 Suprema SFR600 UFS_SCANNER_TYPE_SFR410 1006 Suprema SFR410 UFS_SCANNER_TYPE_SFR550 1007 Suprema SFR550 Examples int ufs_res; long[] hScanner = new long[1]; int[] nScannerType = new int[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_GetScannerType(hScanner[], nScannerType); if (ufs_res == UFS_OK) { // UFS_GetScannerType is succeeded // nScannerType[0] is the scanner type } else { // UFS_GetScannerType is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 183/293 BioMin SDK for Windows v3.6.0 UFS_GetParameter Gets parameter value of UFScanner module. int UFS_GetParameter( long hScanner, int nParam, int[] pValue ); Parameters hScanner [in] : Handle to the scanner object nParam [in] : Parameter type; one of parameters Parameter Code Default value Description UFS_PARAM_TIMEOUT 201 Timeout (millisecond unit) (0: infinite) 5000 UFS_PARAM_BRIGHTNESS Brightness (0 ~ 255); Higher value means darker image. 202 * Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) 100 UFS_PARAM_SENSITIVITY 203 Sensitivity (0 ~ 7); Higher value means more sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) 4 - UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) UFS_PARAM_TEMPLATE_SIZE 302 Template size (byte unit) (256 ~ 1024, 32 bytes step size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFS_PARAM_DETECT_FAKE Use live Finger Detection (0: not use LFD, 1 ~3 : use LFD); Higher 312 value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) 0 0 1024 pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples int ufs_res; long[] hScanner = new long[1]; int[] nValue = new int[1]; //make class library instance(BioMiniSDK p) // Get hScanner handle // Get timeout ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_TIMEOUT, nValue ); // Error handling routine is omitted // nValue[0] is the parameter value // Get brightness 184/293 BioMin SDK for Windows v3.6.0 ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_BRIGHTNESS, nValue ); // Error handling routine is omitted // Get sensitivity ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_SENSITIVITY, nValue ); // Error handling routine is omitted // Get detect core ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_DETECT_CORE, nValue ); // Error handling routine is omitted // Get template size ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_TEMPLATE_SIZE, nValue ); // Error handling routine is omitted // Get use SIF ufs_res = p.UFS_GetParameter(hScanner[], p.UFS_PARAM_USE_SIF, nValue ); // Error handling routine is omitted Return Values(refer to return values) 185/293 BioMin SDK for Windows v3.6.0 UFS_SetParameter Sets parameter value of UFScanner module. int UFS_SetParameter( long hScanner, int nParam, int[] pValue ); Parameters hScanner [in] : Handle to the scanner object nParam [in] : Parameter type; one of parameters Parameter Code Default value Description UFS_PARAM_TIMEOUT 201 Timeout (millisecond unit) (0: infinite) 5000 UFS_PARAM_BRIGHTNESS Brightness (0 ~ 255); Higher value means darker image. 202 * Not supported Device: BioMini-Slim(SFU-S20, SFU-S20B) BioMini(SFU-300) 100 UFS_PARAM_SENSITIVITY 203 Sensitivity (0 ~ 7); Higher value means more sensitive UFS_PARAM_SERIAL 204 Serial (get only) UFS_PARAM_SDK_VERSION 210 SDK Version (get only) 4 - UFS_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) UFS_PARAM_DETECT_CORE 301 Detect core (0: not use core, 1: use core) UFS_PARAM_TEMPLATE_SIZE 302 Template size (byte unit) (256 ~ 1024, 32 bytes step size) UFS_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFS_PARAM_DETECT_FAKE Use live Finger Detection (0: not use LFD, 1 ~3 : use LFD); Higher 312 value means more strong to fake finger * Supported Device: BioMini Slim(SFU-S20, SFU-S20B) 0 0 1024 pValue [in] : Pointer to parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples int ufs_res; long[] hScanner = new long[1]; int[] nValue = new int[1]; //make class library instance(BioMiniSDK p) // Get hScanner handle // Set timeout to nValue nValue[0] = 5000; ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_TIMEOUT, nValue); // Error handling routine is omitted // Set brightness to nValue nValue[0] = 100; ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_BRIGHTNESS, nValue); 186/293 BioMin SDK for Windows v3.6.0 // Error handling routine is omitted // Set sensitivity to nValue ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_SENSITIVITY, nValue); // Error handling routine is omitted // Set detect core to nValue ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_DETECT_CORE, nValue); // Error handling routine is omitted // Set template size to nValue ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_TEMPLATE_SIZE, nValue); // Error handling routine is omitted // Set use SIF to nValue ufs_res = p.UFS_SetParameter(hScanner[], p.UFS_PARAM_USE_SIF, nValue); // Error handling routine is omitted Return Values(refer to return values) 187/293 BioMin SDK for Windows v3.6.0 UFS_IsSensorOn Checks whether a scanner is connected or not. int UFS_IsSensorOn( long hScanner, int[] pbSensorOn ); Parameters hScanner [in] : Handle to the scanner object pbSensorOn [out] : Receive the status of specified scanner object; 1: the scanner is connected, 0: the scanner is disconnected Return Values(refer to return values) 188/293 BioMin SDK for Windows v3.6.0 UFS_IsFingerOn Checks whether a finger is placed on a scanner or not. int UFS_IsFingerOn( long hScanner, int[] pbFingerOn ); Parameters hScanner [in] : Handle to the scanner object pbFingerOn [out] : Checks if a finger is placed on the specified scanner; 1: a finger is on the scanner, 0: a finger is not on the scanner Return Values(refer to return values) 189/293 BioMin SDK for Windows v3.6.0 UFS_CaptureSingleImage Captures single image. Captured image is stored to the internal buffer. int UFS_CaptureSingleImage( long hScanner); Parameters hScanner [in] : Handle to the scanner object Examples int ufs_res; long[] hScanner = new long[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_CaptureSingleImage(hScanner[]); if (ufs_res == p.UFS_OK) { // UFS_CaptureSingleImage is succeeded } else { // UFS_CaptureSingleImage is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 190/293 BioMin SDK for Windows v3.6.0 UFS_StartCapturing Starts capturing. The capture is going on until the specified time exceeds. int UFS_StartCapturing( long hScanner, String nCallbackFunctionName ); Parameters hScanner [in] : Handle to the scanner object nCallbackFunctionName [in] : Examples // Define capture procedure public void captureCallback(int bFingerOn, byte[] pImage, int nWidth, int nHeight, int nResolution) { // .... // pMainInstance.drawCurrentFingerImage(); } int ufs_res; long[] hScanner = new long[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle // Set parameter, the name of your call function for getting captured image ufs_res = p.UFS_StartCapturing(hScanner[], "captureCallback"); if (ufs_res == p.UFS_OK) { // UFS_StartCapturing is succeeded } else { // UFS_StartCapturing is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 191/293 BioMin SDK for Windows v3.6.0 UFS_StartAutoCapture Starts the automatic capture. Currently this function is working for Suprema SFR600(BioMini Slim) only. int UFS_StartAutoCapture( long hScanner, String nCallbackFunctionName ); Parameters hScanner [in] : Handle to the scanner object nCallbackFunctionName [in] : Examples // Define capture procedure public void captureCallback(int bFingerOn, byte[] pImage, int nWidth, int nHeight, int nResolution) { // .... // pMainInstance.drawCurrentFingerImage(); } int ufs_res; long[] hScanner = new long[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle // Set parameter, the name of your call function for getting captured image ufs_res = p.UFS_StartAutoCapture(hScanner[], "captureCallback"); if (ufs_res == p.UFS_OK) { // UFS_StartAutoCapture is succeeded } else { // UFS_StartAutoCapture is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 192/293 BioMin SDK for Windows v3.6.0 UFS_IsCapturing Checks if the specified scanner is running to capture which is started by UFS_CaptureSingleImage or UFS_StartCapturing int UFS_IsCapturing( long hScanner, int[] bCapturing ); Parameters hScanner [in] : Handle to the scanner object bCapturing [out] : Checks if the specified scanner is running capturing; 1: the capture is running, 0: the capture is not running Return Values(refer to return values) 193/293 BioMin SDK for Windows v3.6.0 UFS_AbortCapturing Aborts capturing which is started by UFS_CaptureSingleImage or UFS_StartCapturing. int UFS_AbortCapturing( long hScanner); Parameters hScanner [in] : Handle to the scanner object Examples int ufs_res; long[] hScanner = new long[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_AbortCapturing(hScanner[]); if (ufs_res == p.UFS_OK) { // UFS_AbortCapturing is succeeded } else { // UFS_AbortCapturing is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 194/293 BioMin SDK for Windows v3.6.0 UFS_Extract Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. int UFS_Extract( long hScanner, byte[] pTemplate, int[] pnTemplateSize, int[] pnEnrollQuality ); Parameters hScanner [in] : Handle to the scanner object pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Return Values(refer to return values) 195/293 BioMin SDK for Windows v3.6.0 UFS_ExtractEx Extracts a template from the stored image buffer which is acquired using UFS_CaptureSingleImage or UFS_StartCapturing. This is extended version of UFS_Extract function to accommodate large size template. int UFS_ExtractEx( long hScanner, int nBufferSize, byte[] pTemplate, int[] pnTemplateSize, int[] pnEnrollQuality ); Parameters hScanner [in] : Handle to the scanner object nBufferSize [in] : Template buffer size pTemplate [out] : Pointer to the template array; The array must be allocated in advance pnTemplateSize [out] : Receives the size (in bytes) of pTemplate pnEnrollQuality [out] : Receives the quality of enrollment; Quality value ranges from 1 to 100. Typically this value should be above 30 for further processing such as enroll and matching. Especially in case of enrollment, the use of good quality image ( above 50 ) is highly recommended. Examples // Template size can be controlled by using UFS_SetParameter function // Default value is 1024 bytes int MAX_TEMPLATE_SIZE = 1024; int ufs_res; long[] hScanner = new long[1]; byte[] Template = new byte[MAX_TEMPLATE_SIZE]; int[] TemplateSize= new int[1]; int[] TemplateQuality= new int[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_ExtractEx(hScanner[], MAX_TEMPLATE_SIZE, Template, TemplateSize, TemplateQuality); if (ufs_res == p.UFS_OK) { // UFS_ExtractEx is succeeded } else { 196/293 BioMin SDK for Windows v3.6.0 // UFS_ExtractEx is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 197/293 BioMin SDK for Windows v3.6.0 UFS_SetEncryptionKey Sets encryption key. int UFS_SetEncryptionKey( long hScanner, byte[] pKey ); Parameters hScanner [in] : Handle to the scanner object pKey[out] : Pointer to the 32 bytes key array; default key is first byte is 1 and second to 32th byte are all 0 Return Values(refer to return values) 198/293 BioMin SDK for Windows v3.6.0 UFS_EncryptTemplate Encrypts template. int UFS_EncryptTemplate( long hScanner, byte[] pTemplateInput, int nTemplateInputSize, byte[] pTemplateOutput, int[] pnTemplateOutputSize ); Parameters hScanner [in] : Handle to the scanner object pTemplateInput [in] : Pointer to input template data nTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to encrypted template data pnTemplateOutputSize [in / out] : Inputs allocated size of encrypted template data; Receives output template size Return Values(refer to return values) 199/293 BioMin SDK for Windows v3.6.0 UFS_DecryptTemplate Decrypts template. int UFS_DecryptTemplate( long hScanner, byte[] pTemplateInput, int nTemplateInputSize, byte[] pTemplateOutput, int[] pnTemplateOutputSize ); Parameters hScanner [in] : Handle to the scanner object pTemplateInput [in] : Pointer to input template data(encrypted) nTemplateInputSize [in] : Input template size pTemplateOutput [out] : Pointer to output template data pnTemplateOutputSize [in / out] : Inputs allocated size of output template data; Receives output template size Return Values(refer to return values) 200/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferInfo Gets the information of the capture image buffer. int UFS_GetCaptureImageBufferInfo( long hScanner, int[] pnWidth, int[] pnHeight, int[] pnResolution ); Parameters hScanner [in] : Handle to the scanner object pnWidth [out] : Receives the width of the capture image buffer pnHeight [out] : Receives the height of the capture image buffer pnResolution [out] : Receives the resolution of the capture image buffer Examples int ufs_res; long[] hScanner = new long[1]; int[] nWidth = new int[1]; int[] nHeight = new int[1]; int[] nResolution = new int[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_GetCaptureImageBufferInfo(hScanner[], nWidth, nHeight, nResolution); if (ufs_res == p.UFS_OK) { // UFS_GetCaptureImageBufferInfo is succeeded } else { // UFS_GetCaptureImageBufferInfo is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 201/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBuffer Copies the capture image buffer to the specified image data array. int UFS_GetCaptureImageBuffer( long hScanner, byte[] pImageData ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to image data array; The array must be allocated bigger than the size of capture image buffer in advance Examples int ufs_res; long[] hScanner = int[]nWidth = new int[]nHeight= new int[]nResolution= new long[1]; int[1]; int[1]; new int[1]; // Get hScanner handle // Get capture image buffer information ufs_res = p.UFS_GetCaptureImageBufferInfo(hScanner[], nWidth, nHeight, nResolution); // Error handling routine is omitted // Allocate image buffer byte[] pImageData = new byte[nWidth * nHeight]; ufs_res = p.UFS_GetCaptureImageBuffer(hScanner[], pImageData); if (ufs_res == p.UFS_OK) { // UFS_GetCaptureImageBuffer is succeeded } else { // UFS_GetCaptureImageBuffer is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 202/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToBMPImageBuffer Copies the capture image buffer to the specified image data of bmp format. int UFS_GetCaptureImageBufferToBMPImageBuffer( long hScanner, byte[] pImageData, int[] pImageLength ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to bmp image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageLength [out] : pointer to bmp image data size Return Values(refer to return values) 203/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferTo19794_4ImageBuffer Copies the capture image buffer to the specified image data of 19794_4 format. int UFS_GetCaptureImageBufferTo19794_4ImageBuffer( long hScanner, byte[] pImageData, int[] pImageLength ); Parameters hScanner [in] : Handle to the scanner object pImageData [out] : Pointer to 19794_4 format image data; The buffer must be allocated bigger than the size of capture image buffer in advance pImageLength [out] : pointer to 19794_4 format image data size Return Values(refer to return values) 204/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToWSQImageBuffer Copies the capture image buffer to the specified image data of the WSQ format. int UFS_GetCaptureImageBufferToWSQImageBuffer( long hScanner, float ratio, byte[] wsqData, int[] wsqDataLen ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratioof image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size Return Values(refer to return values) 205/293 BioMin SDK for Windows v3.6.0 UFS_GetCaptureImageBufferToWSQImageBufferVar Copies the capture image buffer (cropped or expanded to the specified size) to the target image data buffer of the WSQ format. int UFS_GetCaptureImageBufferToWSQImageBufferVar( long hScanner, float ratio, byte[] wsqData, int[] wsqDataLen, int nWidth, int nHeight ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image wsqData [out] : Pointer to WSQ format image data; The buffer must be allocated bigger than the size of capture image buffer in advance wsqDataLen [out] : pointer to WSQ format image data size nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Return Values(refer to return values) 206/293 BioMin SDK for Windows v3.6.0 UFS_DecompressWSQBMP Decompress WSQ file and save to BMP file. int UFS_ DecompressWSQBMP( long hScanner, String wsqFile, String bmpFile ); Parameters hScanner [in] : Handle to the scanner object wsqFile [in] : Specifies file name to get wsq data buffer bmpFile [in] : Specifies file name to save image buffer Return Values(refer to return values) 207/293 BioMin SDK for Windows v3.6.0 UFS_DecompressWSQBMPMem Decompress WSQ buffer and save to image data of bmp format. int UFS_ DecompressWSQBMPMem( long hScanner, byte[] wsqBuffer, int wsqBufferLen, byte[] bmpBuffer, int[] bmpBufferLen ); Parameters hScanner [in] : Handle to the scanner object wsqBuffer [in] : Pointer to WSQ format image data wsqBufferLen [in] : Size of WSQ format image data bmpBuffer [out] : Pointer to bmp image data; The array must be allocated bigger than the size of capture image buffer in advance. bmpBufferLen [out] : pointer to bmp image data size Return Values(refer to return values) 208/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToBMP Saves the capture image buffer to the specified file of the bitmap format. int UFS_SaveCaptureImageBufferToBMP( long hScanner, String szFileName ); Parameters hScanner [in] : Handle to the scanner object szFileName [in] : Specfies file name to save image buffer Examples int ufs_res; long[] hScanner = new long[1]; String szFileName; // make class library instance(BioMiniSDK p) // Get hScanner handle // Get file name, szFileName ufs_res = p.UFS_SaveCaptureImageBufferToBMP(hScanner[], szFileName); if (ufs_res == p.UFS_OK) { // UFS_SaveCaptureImageBufferToBMP is succeeded } else { // UFS_SaveCaptureImageBufferToBMP is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 209/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferTo19794_4 Saves the capture image buffer to the specified file of the 19794_4 format. java int UFS_SaveCaptureImageBufferTo19794_4( long hScanner, String szFileName ); Parameters hScanner [in] : Handle to the scanner object szFileName [in] : Specifies file name to save image buffer Examples int ufs_res; long[] hScanner = new long[1]; String szFileName; // make class library instance(BioMiniSDK p) // Get hScanner handle // Get file name, szFileName ufs_res = p.UFS_SaveCaptureImageBufferTo19794_4(hScanner[], szFileName); if (ufs_res == p.UFS_OK) { // UFS_SaveCaptureImageBufferTo19794_4 is succeeded } else { // UFS_SaveCaptureImageBufferTo19794_4 is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 210/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToWSQ Saves the capture image buffer to the specified file of the WSQ format. int UFS_SaveCaptureImageBufferToWSQ( long hScanner, float ratio, String szFileName ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image szFileName [in] : Specifies file name to save image buffer Return Values(refer to return values) 211/293 BioMin SDK for Windows v3.6.0 UFS_SaveCaptureImageBufferToWSQVar Saves the capture image buffer (cropped or expanded to the specified size) to the target file of the WSQ format. int UFS_SaveCaptureImageBufferToWSQVar( long hScanner, float ratio, String szFileName, int nWidth, int nHeight ); Parameters hScanner [in] : Handle to the scanner object ratio [in] : Compression ratio of image szFileName [in] : Specfies file name to save image buffer nWidth [in] : Width to resize the capture image nHeight [in] : Height to resize the capture image Return Values(refer to return values) 212/293 BioMin SDK for Windows v3.6.0 UFS_ClearCaptureImageBuffer Clears the capture image buffer stored to the internal buffer. int UFS_ClearCaptureImageBuffer( long hScanner); Parameters hScanner [in] : Handle to the scanner object Examples int ufs_res; long[] hScanner = new long[1]; // make class library instance(BioMiniSDK p) // Get hScanner handle ufs_res = p.UFS_ClearCaptureImageBuffer(hScanner[]); if (ufs_res == p.UFS_OK) { // UFS_ClearCaptureImageBuffer is succeeded } else { // UFS_ClearCaptureImageBuffer is failed // Use UFS_GetErrorString function to show error string } Return Values(refer to return values) 213/293 BioMin SDK for Windows v3.6.0 UFS_GetErrorString Gets the error string for specified UFS_STAUS value. int UFS_GetErrorString( int res, byte[] szErrorString ); Parameters hScanner [in] : Handle to the scanner object szErrorString [out] : Receives error string Examples int ufs_res; byte[] strError = new byte[128]; // Get status return code, ufs_res ufs_res = p.UFS_GetErrorString(ufs_res, strError); if (ufs_res == p.UFS_OK) { // UFS_GetErrorString is succeeded } else { // UFS_GetErrorString is failed } Return Values(refer to return values) 214/293 BioMin SDK for Windows v3.6.0 UFS_GetTemplateType Gets the template type value. int UFS_GetTemplateType( long hScanner, int[] nTemplateType ); Parameters hScanner [in] : Handle to the scanner object nTemplateType [out] : Receives the parameter value of specified parameter type; 'pValue' must point to adequate type that is matched with the parameter type Template type UFS_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Return Values(refer to return values) 215/293 BioMin SDK for Windows v3.6.0 UFS_SetTemplateType Sets the template type value. int UFS_SetTemplateType( long hScanner, int nTemplateType ); Parameters hScanner [in] : Handle to the scanner object nTemplateType [in] : Parameter type; one of template type Template type UFS_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFS_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFS_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples int ufs_res; long[] hScanner = new long[1]; int nTemplateType; // make class library instance(BioMiniSDK p) // Get hScanner handle nTemplateType =UFS_TEMPLATE_TYPE_SUPREMA; ufs_res = p.UFS_SetTemplateType(hScanner[], nTemplateType); // Error handling routine is omitted Return Values(refer to return values) 216/293 BioMin SDK for Windows v3.6.0 UFS_SelectTemplate Selects n number of good templates from m number of input templates. int UFS_SelectTemplate( long hScanner, byte[][] ppTemplateInput, int[] pnTemplateInputSize, int nTemplateInputNum, byte[][] ppTemplateOutput, int[] pnTemplateOutputSize, int nTemplateOutputNum ); Parameters hScanner [in] : Handle to the scanner object ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Return Values(refer to return values) 217/293 BioMin SDK for Windows v3.6.0 UFS_SelectTemplateEx Selects n number of good templates from m number of input templates. This is extended version of UFS_SelectTemplate function to accommodate large size template. nt UFS_SelectTemplateEx( long hScanner, int nBufferSize, byte[][] ppTemplateInput, int[] pnTemplateInputSize, int nTemplateInputNum, byte[][] ppTemplateOutput, int[] pnTemplateOutputSize, int nTemplateOutputNum ); Parameters hScanner [in] : Handle to the scanner object nBufferSize [in] : Template buffer size ppTemplateInput [in] : Array pointer to the input template arrays pnTemplateInputSize [in] : Array pointer to the input templates'size nTemplateInputNum [in] : Number of input templates ppTemplateOutput [out] : Array pointer to the output template arrays pnTemplateOutputSize [out] : Array pointer to the output templates'size nTemplateOutputNum [in] : Number of output templates; should be less than input template number by more than one Return Values(refer to return values) 218/293 BioMin SDK for Windows v3.6.0 UFS_GetFPQuality Calculates the quality score of an image as defined in NISTIR 7151: FingerPrint Image Quality. The score would be between 1(excellent) and 5(poor). int UFS_GetFPQuality( long hScanner, byte[] pFPImage, int nWidth, int nHeight, int[] pnFPQuality ); Parameters hScanner [in] : Handle to the scanner object pFPImage [in] : Raw capture image data nWidth [in] : Width of capture image data nHeight [in] : Height of capture image data pnFPQuality [in] : NIST quality score of image data Return Values(refer to return values) 219/293 BioMin SDK for Windows v3.6.0 UFS_GetFeatureNumber Get the number of Minutiae from the template data. int UFS_GetFeatureNumber( long hScanner, byte[] pTemplate, int nTemplateSize, int[] pnFeatureNum ); Parameters hScanner [in] : Handle to the scanner object pTemplate [in] : Template data nTemplateSize [in] : Size of template data pnFeatureNum [out] : The number of minutiae from pTemplate Return Values(refer to return values) 220/293 BioMin SDK for Windows v3.6.0 UFM_Create Creates a matcher object. int UFM_Create( long hMatcher); Parameters hMatcher [out] : Pointer to handle of the matcher object Examples int ufm_res; long[] hMatcher = new long[1]; //make instance p = new BioMiniSDK(); ufm_res = p.UFM_Create(hMatcher); if (ufm_res == p.UFM_OK) { // UFM_Create is succeeded // hMatcher[0] is the handle } else { // UFM_Create is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 221/293 BioMin SDK for Windows v3.6.0 UFM_Delete Deletes specified matcher object. int UFM_Delete( long hMatcher); Parameters hMatcher [in] : Handle to the matcher object Examples int ufm_res; long[] hMatcher = new long[1]; // make class library instance(BioMiniSDK p) // Create hMatcher handle ufm_res = p.UFM_Delete(hMatcher[]); if (ufm_res == p.UFM_OK) { // UFM_Delete is succeeded } else { // UFM_Delete is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 222/293 BioMin SDK for Windows v3.6.0 UFM_GetParameter Gets parameter value of UFMatcher module. int UFM_GetParameter( long hMatcher, int nParam, int[] pValue ); Parameters hMatcher [in] : Handle to the matcher object nParam [in] : Parameter type; one of parameters Parameter UFM_PARAM_FAST_MODE Code Default value Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) 1 Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: UFM_PARAM_SECURITY_LEVEL 302 Below 0.01%, 4: Below 0.001%, 5: Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) 4 UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFM_PARAM_AUTO_ROTATE 321 Rotate Mode(0: not use rotate mode, 1: use rotate mode) 0 UFM_PARAM_SDK_VERSION 210 SDK Version (get only) - UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples int ufm_res; long[] hMatcher = new long[1]; int[] nValue = new int[1]; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Get fast mode ufm_res = p.UFM_GetParameter(hMatcher[], p.UFM_PARAM_FAST_MODE, nValue); // Error handling routine is omitted // Get security level ufm_res = p.UFM_GetParameter(hMatcher[], p.UFM_PARAM_SECURITY_LEVEL, nValue); // Error handling routine is omitted // Get use SIF ufm_res = p.UFM_GetParameter(hMatcher[], p.UFM_PARAM_USE_SIF, &nValue); // Error handling routine is omitted 223/293 BioMin SDK for Windows v3.6.0 Return Values(refer to return values) 224/293 BioMin SDK for Windows v3.6.0 UFM_SetParameter Sets parameter value of UFMatcher module. int UFM_SetParameter( long hMatcher, int nParam, int[] pValue ); Parameters hMatcher [in] : Handle to the matcher object nParam [in] : Parameter type; one of parameters Parameter UFM_PARAM_FAST_MODE Code Default value Description 301 Fast Mode (0: not use fast mode, 1: use fast mode) 1 Set the False Accept Ratio(FAR) (1: Below 1%, 2: Below 0.1%, 3: UFM_PARAM_SECURITY_LEVEL 302 Below 0.01%, 4: Below 0.001%, 5: Below 0.0001%, 6: Below 0.00001%, 7: Below 0.000001%) 4 UFM_PARAM_USE_SIF 311 Use SIF (0: not use SIF, 1: use SIF) 0 UFM_PARAM_AUTO_ROTATE 321 Rotate Mode(0: not use rotate mode, 1: use rotate mode) 0 UFM_PARAM_SDK_VERSION 210 SDK Version (get only) - UFM_PARAM_SDK_COPYRIGHT 211 SDK Copyright (get only) pValue [in] : Pointer to parameter value of specified parameter type; pValue must point to adequate storage type matched to parameter type Examples int_STATUS ufm_res; long[] hMatcher = new long[1]; int[] nValue = new int[1]; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Set fast mode to nValue nValue[] = 1; ufm_res = p.UFM_SetParameter(hMatcher[], p.UFM_PARAM_FAST_MODE, nValue); // Error handling routine is omitted // Set security level to nValue nValue[] = 4; ufm_res = UFM_SetParameter(hMatcher[], p.UFM_PARAM_SECURITY_LEVEL, nValue); // Error handling routine is omitted // Set use SIF to nValue nValue[] = ; 225/293 BioMin SDK for Windows v3.6.0 ufm_res = UFM_SetParameter(hMatcher[], p.UFM_PARAM_USE_SIF, nValue); // Error handling routine is omitted Return Values(refer to return values) 226/293 BioMin SDK for Windows v3.6.0 UFM_Verify Compares two extracted templates. int UFM_Verify( long hMatcher, byte[] pTemplate1, int nTemplate1Size, byte[] pTemplate2, int nTemplate2Size, int[] bVerifySucceed ); Parameters hMatcher [in] : Handle to the matcher object pTemplate1 [in] : Pointer to the template1 nTemplate1Size [in] : Specifies the size of the template1 pTemplate2 [in] : Pointer to the template2 nTemplate2Size [in] : Specifies the size of the template2 bVerifySucceed [out] : Receives, whether verification is succeed; 1: verification is succeed, 0: verification is failed Examples // Assume template size is 1024 bytes int MAX_TEMPLATE_SIZE = 1024; int ufm_res; Pointer hMatcher; byte[] Template1 = new byte[MAX_TEMPLATE_SIZE]; byte[] Template2 = new byte[MAX_TEMPLATE_SIZE]; int nTemplate1Size; int nTemplate2Size; int[] bVerifySucceed = new int[1]; int nSucceed; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Get two templates, Template1 and Template2 ufm_res = p.UFM_Verify(hMatcher[], Template1, nTemplate1Size, Template2, nTemplate2Size, bVerifySucceed); if (ufm_res == p.UFM_OK) { // UFM_Verify is succeeded nSucceed=bVerifySucceed[]; 227/293 BioMin SDK for Windows v3.6.0 if (nSucceed) { // Template1 is matched to Template2 } else { // Template1 is not matched to Template2 } } else { // UFM_Verify is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 228/293 BioMin SDK for Windows v3.6.0 UFM_Identify, UFM_IdentifyMT Compares a template with given template array. UFM_IdentifyMT function uses multi threads internally for faster identifying in multi-core systems. int UFM_Identify( long hMatcher, byte[] pTemplate1, int nTemplate1Size, byte[][] pTemplate2, int[] nTemplate2Size, int nTemplate2Num, int nTimeout, int[] nMatchTemplate2Index ); int UFM_IdentifyMT( long hMatcher, byte[] pTemplate1, int nTemplate1Size, byte[][] pTemplate2, int[] nTemplate2Size, int nTemplate2Num, int nTimeout, int[] nMatchTemplate2Index ); Parameters hMatcher [in] : Handle of the matcher object pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template ppTemplate2 [in] : Pointer to the template array pnTemplate2Size [in] : Pointer to the template size array nTemplate2Num [in] : Specifies the number of templates in the template array nTimeout [in] : Specifies maximum time for identifying in milliseconds; If elapsed time for identifying exceeds nTimeout, function stops further identifying and returns UFM_ERR_MATCH_TIMEOUT; 0 means infinity pnMatchTemplate2Index [out] : Receives the index of matched template in the template array; -1 means pTemplate1 is not matched to all of templates in ppTemplate2 Return Values(refer to return values) 229/293 BioMin SDK for Windows v3.6.0 UFM_AbortIdentify Aborts current identifying procedure started using UFM_Identify. int UFM_AbortIdentify( long hMatcher); Parameters hMatcher [in] : Handle to the matcher object Examples int ufm_res; long[] hMatcher = new long[1]; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Start UFM_Identify ufm_res = p.UFM_AbortIdentify(hMatcher); if (ufm_res == p.UFM_OK) { // UFM_AbortIdentify is succeeded } else { // UFM_AbortIdentify is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 230/293 BioMin SDK for Windows v3.6.0 UFM_IdentifyInit Initializes identify with input template. int UFM_IdentifyInit( long hMatcher, byte[] pTemplate1, int nTemplate1Size ); Parameters hMatcher [in] : Handle to the matcher object pTemplate1 [in] : Pointer to the template nTemplate1Size [in] : Specifies the size of the template Examples // Assume template size is 1024 bytes int MAX_TEMPLATE_SIZE = 1024; int ufm_res; long[] hMatcher = new long[1]; byte[] Template1 = new byte[MAX_TEMPLATE_SIZE]; int nTemplate1Size; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Get Template1 ufm_res = p.UFM_IdentifyInit(hMatcher[], Template1, nTemplate1Size); if (ufm_res == p.UFM_OK) { // UFM_IdentifyInit is succeeded } else { // UFM_IdentifyInit is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 231/293 BioMin SDK for Windows v3.6.0 UFM_IdentifyNext Matches one input template to the template specified in UFM_IdentifyInit. int UFM_IdentifyNext( long hMatcher, byte[] pTemplate2, int nTemplate2Size, int[] bIdentifySucceed ); Parameters hMatcher [in] : Handle to the matcher object pTemplate2 [in] : Pointer to the template array nTemplate2Size [in] : Specifies the size of the template array bIdentifySucceed [out] : Receives whether identification is succeed; 1: identification is succeed, 0: identification is failed Examples int MAX_TEMPLATE_NUM = 50; int ufm_res; long[] hMatcher = new long[1]; byte[] Template2 = new byte[MAX_TEMPLATE_NUM]; int[] nTemplate2Size = new byte[MAX_TEMPLATE_NUM]; int nTemplate2Num; int[] bIdentifySucceed = new int[1]; int i; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Get number of templates in DB or something, and save it to nTemplate2Num for (i = ; i < nTemplate2Num; i++) { // Get one template in DB or something, and save it to Template2 and nTemplate2Size ufm_res = p.UFM_IdentifyNext(hMatcher[], Template2[i], nTemplate2Size[i], bIdentifySucceed[]); if (ufm_res == p.UFM_OK) { // UFM_IdentifyNext is succeeded } else 232/293 BioMin SDK for Windows v3.6.0 { // UFM_IdentifyNext is failed // Use UFM_GetErrorString function to show error string // return; } if (bIdentifySucceed[]) { // Identification is succeed break; } } if (!bIdentifySucceed[]) { // Identification is failed } Return Values(refer to return values) 233/293 BioMin SDK for Windows v3.6.0 UFM_RotateTemplate Rotates the specified template to the amount of 180 degrees. int UFM_RotateTemplate( long hMatcher, byte[] pTemplate, int nTemplateSize ); Parameters hMatcher [in] : Handle to the matcher object pTemplate [in / out] : Pointer to the template nTemplateSize [in] : Specifies the size of the template Examples // Assume template size is 1024 bytes int MAX_TEMPLATE_SIZE = 1024; int ufm_res; long[] hMatcher = new long[1]; byte[] Template = new byte[MAX_TEMPLATE_SIZE]; int nTemplateSize; // make class library instance(BioMiniSDK p) // Create hMatcher handle // Get a template, and save it to Template and nTemplateSize ufm_res = p.UFM_RotateTemplate(hMatcher[], Template, nTemplateSize); if (ufm_res == p.UFM_OK) { // UFM_RotateTemplate is succeeded } else { // UFM_RotateTemplate is failed // Use UFM_GetErrorString function to show error string } Return Values(refer to return values) 234/293 BioMin SDK for Windows v3.6.0 UFM_GetErrorString Gets the error string for specified UFM_STATUS value. int UFM_GetErrorString( int res, byte[] szErrorString ); Parameters res [in] : Status return value szErrorString [out] : Receives error string Examples int ufs_res; byte[] strError = new byte[128]; // Get status return code, ufm_res ufs_res = p.UFM_GetErrorString(ufs_res, strError); if (ufs_res == p.UFS_OK) { // UFM_GetErrorString is succeeded } else { // UFM_GetErrorString is failed } Return Values(refer to return values) 235/293 BioMin SDK for Windows v3.6.0 UFM_GetTemplateType Gets the parameter value. int UFM_GetTemplateType( long hMatcher, int[] nTemplateType ); Parameters hMatcher [in] : Handle to the matcher object pValue [out] : Receives parameter value of specified parameter type; pValue must point to adequate storage type matched to template type Template type UFM_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples int ufm_res; long[] hMatcher = new long[1]; int[] nTemplateType = new int[1]; // make class library instance(BioMiniSDK p) // Create hMatcher handle ufm_res = p.UFM_GetTemplateType(hMatcher[], nTemplateType ); // Error handling routine is omitted Return Values(refer to return values) 236/293 BioMin SDK for Windows v3.6.0 UFM_SetTemplateType Gets parameter value. int UFM_SetTemplateType( long hMatcher, int nTemplateType ); Parameters hMatcher [in] : Handle to the matcher object nTemplateType [in] : Parameter type; one of template type Template type UFM_TEMPLATE_TYPE_SUPREMA Code Description 2001 Suprema template type UFM_TEMPLATE_TYPE_ISO19794_2 2002 ISO template type UFM_TEMPLATE_TYPE_ANSI378 2003 ANSI378 template type Examples int ufm_res; long[] hMatcher = new long[1]; int nTemplateType; // make class library instance(BioMiniSDK p) // Create hMatcher handle nTemplateType =p.UFM_TEMPLATE_TYPE_SUPREMA; ufm_res = p.UFM_SetTemplateType(hMatcher[], nTemplateType); // Error handling routine is omitted Return Values(refer to return values) 237/293 BioMin SDK for Windows v3.6.0 UFS_STATUS Every function in a UFScanner module returns UFS_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFS_STATUS (integer) value. Code UFS_OK UFS_ERROR UFS_ERR_NO_LICENSE UFS_ERR_LICENSE_NOT_MATCH UFS_ERR_LICENSE_EXPIRED UFS_ERR_NOT_SUPPORTED UFS_ERR_INVALID_PARAMETERS UFS_ERR_ALREADY_INITIALIZED UFS_ERR_NOT_INITIALIZED UFS_ERR_DEVICE_NUMBER_EXCEED UFS_ERR_LOAD_SCANNER_LIBRARY Value 0 -1 -101 -102 -103 -111 -112 -201 -202 -203 -204 UFS_ERR_CAPTURE_RUNNING -211 UFS_ERR_CAPTURE_FAILED UFS_ERR_NOT_GOOD_IMAGE UFS_ERR_EXTRACTION_FAILED UFS_ERR_CORE_NOT_DETECTED UFS_ERR_CORE_TO_LEFT_TOP UFS_ERR_CORE_TO_TOP UFS_ERR_CORE_TO_RIGHT_TOP UFS_ERR_CORE_TO_RIGHT UFS_ERR_CORE_TO_RIGHT_BOTTOM UFS_ERR_CORE_TO_BOTTOM UFS_ERR_CORE_TO_LEFT_BOTTOM -212 -301 -302 -351 -353 -354 -355 -356 -357 -358 -359 238/293 Description Success General error Device is not connected or License is not located License does not match License has expired This function is not supported Input parameters are invalid Module is already initialized Module is not initialized Device number exceeds Error on loading the library of a scanner Capturing is started using UFS_CaptureSingleImage or UFS_StartCapturing Capturing is timeout or aborted Input image is not good Extraction is failed Core is not detected Move finger to left-top Move finger to top Move finger to right-top Move finger to right Move finger to right-bottom Move finger to bottom Move finger to left-bottom BioMin SDK for Windows v3.6.0 UFM_STATUS Every function in a UFMatcher module returns UFM_OK when it succeeds. When it fails, it returns a value corresponding to a error code. Please find the error code on the followings if you'd like to know the information about the UFM_STATUS (integer) value. Code UFM_OK UFM_ERROR UFM_ERR_NO_LICENSE UFM_ERR_LICENSE_NOT_MATCH UFM_ERR_LICENSE_EXPIRED UFM_ERR_NOT_SUPPORTED UFM_ERR_INVALID_PARAMETERS UFM_ERR_MATCH_TIMEOUT UFM_ERR_MATCH_ABORTED UFM_ERR_TEMPLATE_TYPE 239/293 Value 0 -1 -101 -102 -103 -111 -112 -401 -402 -411 Description Success General error System has no license License does not match License has expired This function is not supported Input parameters are invalid Matching is timeout Matching is aborted Template type does not match BioMin SDK for Windows v3.6.0 6. WebAgent Able to use as below package by installing Web-Agent to the client and multiple access is supported according to the network and RDP server performance, theoretically thre is no limitation. But only the minimum requirements must met to perform. (Minimum Atom 1.5GHz Dual core) This page describes the basic functions of BioMini-WebAgent in a step-by-step manner. The Guide contains following topics, Introduction APIs 240/293 BioMin SDK for Windows v3.6.0 6.1 Introduction Contents of Web-agent packages Directory Sub Directory - /bin/ html cert Contents AgentCntrl.exe : Agent Control UI BioMini_WebAgent.exe : Web-Agent console UI index.html : Example page for Web-API connected with Web-Agent favicon.ico : Icon for localhost URL jquery.min.js : IJQuery script (replaceable) BioMiniWebAgent.js : Example code of Web-API script localhost_set.crt : Certification file for locallost URL localhost_cert.key : Key of the same Usage Installing Weg-Agent By executing Setup_Suprema_BioMini_SDK.exe, Web-agent and Web-agent control UI will be installed in C:\Program Files\Suprema\BioMini\bin directory. User may register AgentCtrl.exe as a start-up program manually When you run ‘AgentCtrl.exe’, Control UI will be appeared, and you may hide it by clicking ‘Hide’ button. You can find the minimized icon at the tray bar By double-clicking the tray icon, control UI will be shown again. If VC 2013 Redistributable package isn’t installed, you should install it during the installation of BioMini SDK by enabling check box. Embedding in HTML 241/293 BioMin SDK for Windows v3.6.0 You may add JavaScript as guided in the example code located in bin/html folder of SDK. You may simply embed java script file of the example as the following code. There are several target ID as below ID Fpimg(img/Preview_Fingerprint image to be updated by SDK) Tb_DisplayLog(text/Log message from JavaScript) Tb_Sensitivity(button/Scanner optioin_Capture sensitivity) Tb_BrightnessValue(text/Scanner option_Brightness) DDb SecuLevOpt(text/Scanner option_Security level) DDb TimeoutOpt(text/Scanner option_capture timeout) DDb Tpltype(text/Extraction option_Template type) DDb CompRatio(text/Extraction option _compression ratio) DDb QltyLv(text/Matching option_Quality level) DDb Tftype(text/Save option/Fingerprint image file type) You may use following JavaScript functions or you may modify it for your own purpose Function Name Init (Initialize the device_api/initDevice) UnInit (Reset device to be Initialized again _api/uninitDevice) OnSelectScannerOptions(Updates message tagged with ‘Tb_DisplayLog’ ID._ api/getScannerStatus) StartCapture (Start the capture process _ api/startCapturing) AbortCapture (Abort on going capture process_/api/abortCapture) GetTemplateData (Get template data of the fingerprint image which is most recently captured _ /api/getTemplateData) SendParameter (/api/setParameters) CaptureSingle (Capture fingerprint image without showing preview image – result will be shown directly after the detection of a finger _ /api/captureSingle) AutoCapture(Capture fingerprint by the condition of finger-on_/api/autoCapture) SaveImageBuffer(Save the current image buffer to a predefined location (convertedCaptureImage.*)._/api/saveImageBuffer) UpdateTemplate(Update specific data given as a parameter_/api/update) InfoDelAll(Delete all user data registered in the user database of the web-agent _ /api/deleteAll) SaveTemplate(Save template file of selected user in the user database of the webagent_/api/saveTemplate) Identify(Identify the fingerprint from the user database of the web-agent _ /api/identify) 242/293 BioMin SDK for Windows v3.6.0 AbortIdentify(Abort identification process. _ /api/abortIdentify) DelTpl(Delete a specific user at the user database of the web-agent _ /api/delete) Using Web-API Web-Agent works on localhost domain address as a web-page follows. Option 1 Option 2 Address localhost localhost Protocol HTTP HTTPS Port 8084 8083 You may use any internet browser, but there may be issues when adapting JQuery JavaScript library, or using HTTPS certification. You may refer to the trouble-shooting guide ‘BioMini_Web_Agent_TS Guide.pdf’ or contact technical support to solve the issues. Basic use of each functions on Web-API is based on URL. For example, you can initialize the device (UFS_InitDevice in native language API), by accessing API URL ‘https://localhost:8083/api/initDevice’. The input parameters can be delivered with JSON formatted text such as { sHandle:99999, brightness: 100 }. You can also get the server response by parsing the JSON formatted text such as { brightness: 100, sensitivity: 3, … } delivered from the server. Session Management For security reasons, some API can’t share data with access from another web page. You need a basic understanding of session cookie to prevent some security related issues. When the API (ex. captureSingle) which uses ‘session’ is called, new specific session will be opened. Once the connection with the device is established (session is open), the access from another web browser (ex. Chrome, IE) is always blocked. When the session is open, Web-agent keeps unique session information which is corresponding to a combination of current device handle, session cookie and Page ID (optional) until the connection is lost. You can manage the session by using ‘createSessionID’ and ‘sessionClear’ APIs. You can also control the access from another tab in the same browser by using ‘Page ID’ (which is optionally provided). In order to enable this, send Page ID when accessing the API (which enables session checking – refer the below chart) is called. Basically Page ID is a non-reproducible number. It is assumed to be generated by client, and sent to the web-agent. The following example would help to implement your own application session blocking. The condition to disable session is classified into two conditions. 1st condition is that any operation is not issued for the pre-defined timeout period (default value is set up as 5 minutes). And the 2nd is that page calls ‘sessionClear’ API. 2nd condition is controlled by JavaScript, and can be bound to the 243/293 BioMin SDK for Windows v3.6.0 page unload event. Constraints Session Cookie is generated only once. In case of provided example, session cookie is generated when the page is loaded If session cookie is not set, web-agent gets error (No session cookie is passed) Example var pageID = ; function InitPage() { pageID = Math.random(); } Session Check APIs No Session Check APIs isFingerOn initDevice captureSingle uninitDevice startCapturing getScannerStatus /api/ autoCapture getParameters getTemplateData setParameters getImageData abortCapture saveImageBuffer version update abortIdentify enroll deleteAll verify delete /db/ verifyTemplate queryData identify getTemplateData 244/293 BioMin SDK for Windows v3.6.0 6.2 WebAgent APIs Device control APIs api/createSessionID This API creates new session and returns sessionID which can be used to create a cookie by the web application. Session ID consists of current time and client’s IP address. Refer the below example api/sessionClear This API clears existing session which was created by createSessionID API. If page ID for the session is existing, you should send page ID (parameter_id) to get the authority to clear it api/version add description api/initDevice Equivalent to UFS_Init & UFS_Update API. UFS_Update is functionally integrated in this API and went to be obsolete api/uninitDevice Equivalent to UFS_Uninit API api/close Unloads BioMini PC SDK and prepare exit. This API call causes the background server to be end. User should run BioMini_WebAgent.exe again to use Web-API again api/getScannerStatus Gets scanner with the given device index value api/isFingerOn Returns results whether any finger is on the scanner api/setParameters Sets scanner option parameters composed of one or more of the followings api/getParameters Gets scanner option parameters composed of one or more of the parameters as described at ‘setParameters’ API section api/captureSingle Start capturing a fingerprint image without any preview images api/startCapturing Starts capturing thread to be stopped by timeout (set with ‘setParameters’ API). You may finish the running thread by calling ‘abortCapture’ API api/autoCapture 245/293 BioMin SDK for Windows v3.6.0 Starts iterative capturing process of waiting for the finger and capture the image automatically. The iteration can be canceled by ‘abortCapture’ API api/abortCapture Aborts capture thread running by calling ‘startCapturing’ or ‘autoCapture’ API api/getTemplateData Extract template from the last captured image api/getImageData Get image data in base64 format from the last captured image api/saveImageBuffer Saves a fingerprint image at the specific remote folder. User may access the file and download it Enrollment test APIs db/enroll Enrolls user data into a memory managed by SDK. If ‘userSerialNo’ is bigger than the last index of previously enrolled data, will add new user. ‘userSerialNo’ should be in the rage of 0 to N. Data is never saved in the fixed disk – all data will be gone if the web-agent is terminated. Webagent tries 4 times fingerprint capture to enroll the user, instead of 1 time fingerprint capture in default mode (0) |db/verify Verifies selected user (should be enrolled previously) is matched with currently selected user db/identify Returns identification result of scanned fingerprint by comparing with registered users in the Web-agent software db/update Updates specified user data in web-agent db/delete Deletes specified user data in web-agent db/deleteAll Delete all the user data in web-agent db/queryData Retrieves all the user information registered db/abortIdentify 246/293 BioMin SDK for Windows v3.6.0 Aborts currently running identifying process. If the capturing process is running, this API has no effect db/getTemplateData Aborts currently running identifying process. If the capturing process is running, this API has no effect Image APIs img/captureImgbmp Get captured image file from ‘captureSingle’ API. When the time is up, this image data disappears automatically. So ‘captureSingle’ API is needed to pass resetTimer value img/previewImgbmp Get preview image file from ‘startCapturing’ or ‘autoCapture’ API for IE browser. Refer to the example code(BiominiWebAgent.js) to update preview image continuously img/previewStreaming.bmp Web-page application would provide a preview image by accessing virtual preview image file, named previewStreaming.bmp. Preview image is updated from the time ‘startCapturing’ or ‘autoCapture’ API called. Any refreshing technic is not needed to get the newly captured image, for this virtual file access. This API does not support IE browser. For the IE browsers, you have to use ‘previewImg.bmp’ instead img/convertedCaptureImage.bmp(.dat/ .wsq) You can convert the image at the capture buffer to the image format by simply calling ‘convertedCaptureImage.[extension]’. Each image file extension insists ‘bmp for windows bitmap image file’, ‘dat for ISO 19794-4 fingerprint image file’ and ‘wsq for WSQ compressed fingerprint image format 247/293 BioMin SDK for Windows v3.6.0 api/createSessionID This API creates new session and returns sessionID which can be used to create a cookie by the web application. Session ID consists of current time and client’s IP address. Refer the below example. Examples function InitPage () { jQuery.ajax({ type: "GET", url: urlStr + "/api/createSessionID", dataType: "json" success: function (msg) { if (msg.retValue == ) { session Id = msg.sseionId; //TODO: session ID can be used to set cookie. } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Returns Session ID like. {“sessionID”:“20151129483_2130706433”} 248/293 BioMin SDK for Windows v3.6.0 api/sessionClear This API clears existing session which was created by createSessionID API. If page ID for the session is existing, you should send page ID (parameter : id) to get the authority to clear it. Examples function DeletePage () { jQuery.ajax({ type: "GET" url: urlStr + "/api/sessionClear", data: { id: pageID } }); } Parameters : id(pageID) 249/293 BioMin SDK for Windows v3.6.0 api/version Examples function Init () { jQuery.ajax({ type: "GET" url: urlStr + "/api/version", datatype: "json", success: function (msg) { if (msg.retValue == ) { api version = msg.api; //TODO: API version can be used to deal with compatibility } } error: function (request, status, error) { // TODO: your error handling code } }}; } Returns API version like : {“api”:“0.1”} 250/293 BioMin SDK for Windows v3.6.0 api/initDevice Equivalent to UFS_Init & UFS_Update API. UFS_Update is functionally integrated in this API and went to be obsolete. Examples function Init () { jQuery.ajax({ type: "GET" url: urlStr + "/api/initDevice", datatype: "json", success: function (msg) { if (msg.retValue == ) { deviceInfos = msg.ScannerInfos; //TODO: add enumerated scanners info to your HTML page } } error: function (request, status, error) { // TODO: your error handling code } }}; } Return value : Device information composed of the followings. Category - ScannerInfos [Common return values] Name Description Etc ScannerCount DeviceIndex Sequential device index of an order of enumeration Scanner name composed of model name, serial number and Scannername extra digits DeviceHandle Device handle value same as HUFScanner in native SDK DeviceType User friendly scanner model name request initDevice(echo) retString Return string(error info) retValue Return value(error code) # Common return values will be ignored at the following API descriptions. 251/293 BioMin SDK for Windows v3.6.0 api/uninitDevice Equivalent to UFS_Uninit API. Examples function unInit () { jQuery.ajax({ type: "GET" url: urlStr + "/api/uninitDevice", datatype: "json", success: function (msg) { if (msg.retValue == ) { deviceInfos = msg.ScannerInfos; //TODO: remove listed scanners info from your HTML page } } error: function (request, status, error) { // TODO: your error handling code } }}; } Return value : Device information same as the return value of initDevice API. 252/293 BioMin SDK for Windows v3.6.0 api/close Unloads BioMini PC SDK and prepare exit. This API call causes the background server to be end. User should run BioMini_WebAgent.exe again to use Web-API again. Return value : None. 253/293 BioMin SDK for Windows v3.6.0 api/getScannerStatus Gets scanner with the given device index value Examples function OnSelectScannerOptions () { jQuery.ajax({ type: "GET" url: urlStr + "/api/getScannerStatus", datatype: "json", data: { sHandle: deviceInfos [currentDeviceIndex].DeviceHandle success: function (msg) { if (msg.retValue == ) { //TODO: collect details of the scanner of id 'idx' } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : handle (device handle) Return value : Device status compose of the followings. Category - Name Description Etc SensorValid Flag that senses the validity of given device index SensorOn Flag that senses if device of given device index is turned on IsCapturing Flag that senses if device of given device index is running or idle 254/293 BioMin SDK for Windows v3.6.0 api/isFingerOn Returns results whether any finger is on the scanner. Examples function IsFingerOn () { jQuery.ajax({ type: "GET" url: urlStr + "/api/isFingerOn", datatype: "json", data: { sHandle: deviceInfos [currentDeviceIndex].DeviceHandle }, success: function (msg) { if (msg.retValue == ) { //TODO: handle finger-on status } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : handle (device handle) Return value : Device status compose of the followings. Category - Name Description Etc SensorValid Flag that senses the validity of given device index Flag that senses if there is a finger on the sensor surface of the device of FingerOn given device index 255/293 BioMin SDK for Windows v3.6.0 api/setParameters Sets scanner option parameters composed of one or more of the followings. Examples function SetSensitivity(isensitivity) { jQuery.ajax({ type: "GET" url: urlStr + "/api/setParameters", datatype: "json", data: { sHandle: deviceInfos [currentDeviceIndex].DeviceHandle sensitivity: isensitivity }, success: function (msg) { if (msg.retValue == ) { //TODO: may update your HTML page } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : Category - Name sHandle brightness fastmode securitylevel sensitivity Timeout Description Device Handle to set parameters Fingerprint images brightness Matcher option that defines security level Matcher option that defines security level Capture sensitivity option in level Capture timeout value in milliseconds Extractor option of the output file type. Integer range of 1 to 3 that templateType indexes Suprema, ISO 19794-2 or ANSI 378 256/293 Etc BioMin SDK for Windows v3.6.0 api/getParameters Gets scanner option parameters composed of one or more of the parameters as described at ‘setParameters’ API section. Examples function GetSensitivity(isensitivity) { jQuery.ajax({ type: "GET" url: urlStr + "/api/getParameters", datatype: "json", data: { sHandle: deviceInfos [currentDeviceIndex].DeviceHandle sensitivity: isensitivity }, success: function (msg) { if (msg.retValue == ) { //TODO: may update your HTML page } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : Category - Name sHandle brightness fastmode securitylevel sensitivity Timeout Description Device Handle to get parameters Fingerprint images brightness Matcher option that defines security level Matcher option that defines security level Capture sensitivity option in level Capture timeout value in milliseconds Extractor option of the output file type. Integer range of 1 to 3 that templateType indexes Suprema, ISO 19794-2 or ANSI 378 257/293 Etc BioMin SDK for Windows v3.6.0 api/captureSingle Start capturing a fingerprint image without any preview images. Examples function CaptureSingle() { if (isExistScannerHandle() == false) { alert('Scanner Init First'); return; } clearTimeout(flag); $('#Fpimg').attr('src', 'data:image/gif;base64,R01GOD1hAQABAIAAAAAAP///ywAAAAAAQABAAACAUwAOw=='); alert("Placed your Finger on Camera"); jQuery.ajax({ type: "GET" url: urlStr + "/api/captureSingle", datatype: "json", data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, resetTimer: delayVal sensitivity: isensitivity }, success: function (msg) { AppendLog("captureSingle", msg.retString); if (msg.retValue == ) { //TODO: display or save the last captured image } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : Category - Name Description sHandle Device Handle to set parameters id Client Page ID to manage client session Fingerprint images and template data is removed for the security resetTimer reason.‘resetTimer’parameter sets the life-time of last capture data in milliseconds. Default value is 30,000. Valid range is 5,000 to 600,000 258/293 Etc BioMin SDK for Windows v3.6.0 api/startCapturing Starts capturing thread to be stopped by timeout (set with ‘setParameters’ API). You may finish the running thread by calling ‘abortCapture’ API. Examples function StartCapture() { if (isExistScannerHandle() == false) { alert('Scanner Init First'); return; } jQuery.ajax({ type: "GET" url: urlStr + "/api/startCapturing", datatype: "json", data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, resetTimer: delayVal }, success: function (msg) { //TODO: do something to enable preview } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), id (page ID), resetTimer (delay value) 259/293 BioMin SDK for Windows v3.6.0 api/autoCapture Starts iterative capturing process of waiting for the finger and capture the image automatically. The iteration can be canceled by ‘abortCapture’ API Examples function AutoCapture() { if (isExistScannerHandle() == false) { alert('Scanner Init First'); return; } clearTimeout(flag); jQuery.ajax({ type: "GET" url: urlStr + "/api/autoCapturing", data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, }, success: function (msg) { //TODO: do something to enable preview }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), id (page ID) 260/293 BioMin SDK for Windows v3.6.0 api/abortCapture Aborts capture thread running by calling ‘startCapturing’ or ‘autoCapture’ API. Examples function AutoCapture() { jQuery.ajax({ type: "GET" url: urlStr + "/api/abortCapturing", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle resetTimer: delayVal }, success: function (msg) { if (msg.retValue == ) { //TODO: scanning process safely aborted } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), resetTimer (delay value) 261/293 BioMin SDK for Windows v3.6.0 api/getTemplateData Extract template from the last captured image. Examples function GetTemplateData() { jQuery.ajax({ type: "GET" url: urlStr + "/api/getTemplateData", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, encrypt: encryptmode, encryptkey: encryptkey, extractEX: extractExMode, qualityLevel: qualityLevVal }, success: function (msg) { if (msg.retValue == ) { //TODO: handle template data encoded in base64 format templateData = msg.templateBase64; } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : Category - Name sHandle id Description Etc Device Handle to set parameters Client Page ID to manage client session Template data encryption mode. 1 for encrypted template, 0 for raw encrypt template The key value of template data encryption. Unpredictable text within size encryptKey of 8 (MAX) characters preferred Boolean flag that defines ‘extract’ API option. 1 for using extended mode extractEx (enables larger size template), 0 for default quality Threshold of extracted template quality 262/293 BioMin SDK for Windows v3.6.0 api/getImageData Get image data in base64 format from the last captured image. Examples function GetImageData() { jQuery.ajax({ type: "GET" url: urlStr + "/api/getImageData", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, fileType: formatType // 1: BMP*, 2: 19794-4, 3: WSQ compressionRatio: compRatioVal }, success: function (msg) { if (msg.retValue == ) { //TODO: handle 'bmp' image data encoded in base64 format imageData = msg.templateBase64; } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : Category - Description Device Handle to set parameters Client Page ID to manage client session File type selection option for ‘saveImageBuffer’ API. 1 for ‘bmp’ fileType image, 2 for ISO 19794-4, and 3 for WSQ file format compressionRatio Compression ratio of image. Valid range is 0.1 to 1 263/293 Name sHandle id Etc BioMin SDK for Windows v3.6.0 api/saveImageBuffer Saves a fingerprint image at the specific remote folder. User may access the file and download it. Examples function LoadConvertedImageBuffer(imgUrl) { var iframe = document.createElement("iframe"); iframe.src = imgUrl; iframe.style.display = "none"; document.body.appendchild(iframe); } function SaveImageBuffer() { jQuery.ajax({ type: "GET" url: urlStr + "/api/saveImageBuffer", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, fileType: formatType // 1: BMP*, 2: 19794-4, 3: WSQ compressionRatio: compRatioVal }, success: function (msg) { if (msg.retValue == ) { if(formatType == 1) LoadConvertedImageBuffer( urlStr + "/img/convertedCaptureImage.bmp"); else if(formatType == 2) LoadConvertedImageBuffer( urlStr + "/img/convertedCaptureImage.dat"); else if(formatType == 3) LoadConvertedImageBuffer( urlStr + "/img/convertedCaptureImage.wsq"); } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : same as parameter of ‘getImageData’ API Return value : 1~3 integer variable stands for the type of files. Intput variable ‘dataType’ and return value should be the same. 1: BMP, 2: 19794-4, 3: WSQ If target folder(html/img/) doesn’t have a permission to write file, this api returns error string of ‘cannot write file’. To solve this problem, refer to the details of measures below 264/293 BioMin SDK for Windows v3.6.0 1) Execute web-agent as an administrator 2) Give write permission to the target folder. 265/293 BioMin SDK for Windows v3.6.0 db/enroll Enrolls user data into a memory managed by SDK. If ‘userSerialNo’ is bigger than the last index of previously enrolled data, will add new user. ‘userSerialNo’ should be in the rage of 0 to N. Data is never saved in the fixed disk – all data will be gone if the web-agent is terminated. Web-agent tries 4 times fingerprint capture to enroll the user, instead of 1 time fingerprint capture in default mode (0). Examples function Enroll() { jQuery.ajax({ type: "GET" url: urlStr + "/db/enroll", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, UserID: strUserID, selectTemplate: selectTemplateOpt, encrypt: encryptMode, encryptkey: encryptkey, extractEx: extractExMode, qualityLevel: qualityLevVal }, success: function (msg) { if (msg.retValue == ) { // TODO: scannig process safely aborted } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : 266/293 BioMin SDK for Windows v3.6.0 Category - Name sHandle id userID userSerialNo Description Etc Device Handle PageID Identical user ID(string) Identical user serial number(0~N-1) Select template mode. selects 2 number of good templates from 4 selectTemplate number of input template Template data encryption mode. 1 for encrypted template, 0 for raw encrypt template The key value of template data encryption. Unpredictable text within encryptKey size of 8 (MAX) characters preferred encrypEx Boolean flag that defines 'extract' API option qualityLevel Threshold of extracted template quality 267/293 BioMin SDK for Windows v3.6.0 db/verify Verifies selected user (should be enrolled previously) is matched with currently selected user. Examples function Verify() { jQuery.ajax({ type: "GET" url: urlStr + "/db/verify", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, UserSerialNo: numEnrolledUser, extractEx: extractExMode, qualityLevel: qualityLevVal }, success: function (msg) { if (msg.retValue == ) { // TODO: matching succeeeded, you should handle the result } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle, id(pageID), userSerialNo, extractEx, qualityLevel 268/293 BioMin SDK for Windows v3.6.0 db/identify Returns identification result of scanned fingerprint by comparing with registered users in the Webagent software. Examples function Identify() { jQuery.ajax({ type: "GET" url: urlStr + "/db/identify", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, extractEx: extractExMode, qualityLevel: qualityLevVal }, success: function (msg) { if (msg.retIdentify == 1) { // TODO: matching failed, you should handle the result } else { // TODO: matching succeeded, you should handle the result }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), id(pageID), extractEx, qualityLevel Return value : retIdentify (-1: does not match with any of registered templates, others: index of matched user) 269/293 BioMin SDK for Windows v3.6.0 db/update Updates specified user data in web-agent. Examples function Update() { jQuery.ajax({ type: "GET" url: urlStr + "/db/update?dummy" + Math.random(), dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle id: pageID, userSerialNo: selectedUserNo, extractEx: cb_extractExMode, qualityLevel: document.getElementById("DDb_Q1tyLv").value }, success: function (msg) { if (msg.retValue == ) { // TODO: updating process safely finished } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), id(pageID), extractEx, qualityLevel 270/293 BioMin SDK for Windows v3.6.0 db/delete Deletes specified user data in web-agent. Examples function Delete() { jQuery.ajax({ type: "GET" url: urlStr + "/db/delete", dataType: "json" data: { sHandle: deviceInfos [selectedDeviceIndex].DeviceHandle userSerialNo: selectedUserNo, }, success: function (msg) { if (msg.retValue == ) { // TODO: updating process safely finished } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), userSerialNo 271/293 BioMin SDK for Windows v3.6.0 db/deleteAll Delete all the user data in web-agent. Examples function DeleteAll() { jQuery.ajax({ type: "GET" url: urlStr + "/db/deleteAll", dataType: "json" success: function (msg) { // TODO: deleting process safely finished }, error: function (request, status, error) { // TODO: your error handling code } }}; } 272/293 BioMin SDK for Windows v3.6.0 db/queryData Retrieves all the user information registered. Examples function QueryData() { jQuery.ajax({ type: "GET" url: urlStr + "/db/queryData", dataType: "json" data: { sHandle: deviceInfos[selectedDeviceIndex].DeviceHandle, }, success: function (msg) { if (msg.retValue == ) { var n users = parseInt(msg.db.size); for (var i = ; i < n_users; i++) { var id i = msg.db[i].id; var tmp2 size = msg.db[i].template2; if (tmp2 size == ) { // the enrolled type is 1-template } else { // the enrolled type is 2-template type_i = 1; } // handle the enrolled type (type_i == 0: 1-template) // handle the data queried } } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle) Return value 273/293 BioMin SDK for Windows v3.6.0 Category Name size db index(integer) * indices are at the range of 0~(size-1) total number of indices is 'size'. 274/293 Description Etc Size of database (number of users registered) id User ID (name) of the enrolled template template1 1st template data size 1st template quality (if the templates are captured quality1 with ‘select template’ option, quality1 is always 100. template2 2nd template data size 2nd template quality (if the templates are captured quality2 with ‘select template’ option, quality2 is always 100. BioMin SDK for Windows v3.6.0 db/abortIdentify Aborts currently running identifying process. If the capturing process is running, this API has no effect. Examples function QueryData() { jQuery.ajax({ type: "GET" url: urlStr + "/db/abortIdentify", dataType: "json" data: { success: function (msg) { if (msg.retValue == ) { // TODO: succeeded, you should handle the result } }, error: function (request, status, error) { // TODO: your error handling code } }}; } 275/293 BioMin SDK for Windows v3.6.0 db/getTemplateData Aborts currently running identifying process. If the capturing process is running, this API has no effect. Examples function SaveTemplate() { jQuery.ajax({ type: "GET" url: urlStr + "/db/getTemplateData", dataType: "json" data: { sHandle: deviceInfos[selectedDeviceIndex].DeviceHandle, id: pageID, userSerialNo: selectedUserNo, encrypt: encryptMode, encryptkey: encryptkeyVal, } success: function (msg) { if (msg.retValue == ) { // TODO: handle template data encoded in base64 format templateData = msg.templateBase64; } }, error: function (request, status, error) { // TODO: your error handling code } }}; } Parameters : sHandle (device handle), id (Page ID), userSerialNo, encrypt, encryptKey Category - Name sHandle id userSerialNo Description Etc Device Handle PageID Identical user serial number(0~N-1) Template data encryption mode. 1 for encrypted template, 0 for raw encrypt template The key value of template data encryption. Unpredictable text within size encryptKey of 8 (MAX) characters preferred 276/293 BioMin SDK for Windows v3.6.0 img/captureImg.bmp Get captured image file from ‘captureSingle’ API. When the time is up, this image data disappears automatically. So ‘captureSingle’ API is needed to pass resetTimer value. Examples function LoadImage() { var sessionData = "&shandle=" + deviceInfos[currentIdx].DeviceHandle + "&id=" + pageID; $('#Fpimg').removeAttr(); $('#Fpimg').attr("src", urlStr+"/img/captureImg.bmp" + sessionData); } Parameters : sHandle(device handle), id(Page ID) 277/293 BioMin SDK for Windows v3.6.0 img/previewImg.bmp Get preview image file from ‘startCapturing’ or ‘autoCapture’ API for IE browser. Refer to the example code(BiominiWebAgent.js) to update preview image continuously. Examples function PreviewLoop() { var sessionData = "&shandle=" + deviceInfos[currentIdx].DeviceHandle + "&id=" + pageID; var imgUrl = urlStr + "/img/previewImg.bmp" + sessionData; $('#Fpimg').removeAttr(); $('#Fpimg').attr("src", imgUrl); }} Parameters : sHandle(device handle), id(Page ID) 278/293 BioMin SDK for Windows v3.6.0 img/previewStreaming.bmp Web-page application would provide a preview image by accessing virtual preview image file, named previewStreaming.bmp. Preview image is updated from the time ‘startCapturing’ or ‘autoCapture’ API called. Any refreshing technic is not needed to get the newly captured image, for this virtual file access. This API does not support IE browser. For the IE browsers, you have to use ‘previewImg.bmp’ instead. Examples function PreviewOnChecked() { var browser = navigator.userAgent.toLowerCase(); if(browser.indexOf("chrome") != -1){ var imgUrl = urlStr + "/img/previewStreaming.bmp" + sessionData; $('#Fpimg').removeAttr(); $('#Fpimg').attr("src", imgUrl); } }} Parameters : sHandle(device handle), id(Page ID) 279/293 BioMin SDK for Windows v3.6.0 img/convertedCaptureImage.bmp(.dat/.wsq) You can convert the image at the capture buffer to the image format by simply calling ‘convertedCaptureImage.[extension]’. Each image file extension insists ‘bmp for windows bitmap image file’, ‘dat for ISO 19794-4 fingerprint image file’ and ‘wsq for WSQ compressed fingerprint image format. Examples function LoadConvertedImageBuffer() { var iframe = document.createElement("ifame"); iframe.src = urlStr + "/img/convertedCaptureImage.bmp" Iframe.style.display = "none"; Document.body.appendChild(iframe); } 280/293 BioMin SDK for Windows v3.6.0 281/293 BioMin SDK for Windows v3.6.0 7. Appendix What is Biometrics? Identifying individuals based on their distinctive anatomical(fingerprint, face, iris, hand geometry) and behavioral(signature, voice) characteristics is called biometrics. Because biometric identifiers cannot be shared or misplaced, they intrinsically represent an individual's identify. Biometrics is quickly becoming an essential component of effective identification solutions. Recognition of a person by their body, then linking that body to an externally established “identity”, forms a powerful authentication tool. Fingerprint identification has been widely used for a long time because individual’s unique Fingerprint pattern cannot be shared or misplaced, they essentially represent an individual’s identity. Fingerprint contains rich information in a small area compared to other biological anatomical (face, iris, hand geometry) and behavioral (signature, voice) characteristics. Identifying individuals based on fingerprint is well-known as the most feasible method compared to other biometrical characteristics. Among the other biometric identification methods, fingerprint identification has a good balance of qualities including accuracy, throughput, size and cost of scan devices, maturity of technology and convenience of use, making it the dominant biometric technology in industry. Two major methods are being used in fingerprint identification; matching based on feature point and filter bank. Matching algorithm based on feature point extract “local minutiae from Thinning fingerprint image or gray scale fingerprint image. Thereafter a method for matching using the location relationship between the feature point in the fingerprint template stored image and the input fingerprint image. he feature point matching takes relatively short processing time however matching performance could be deceased on noised fingerprint images. Filters bank matching algorithm extract fingerprint ridge using Gabor filters bank. Measured by means of an automated device for physical and behavioral characteristics, Technology to utilize as a means of personal identification Physical characteristics available - fingerprint, palm print, face, iris veins, etc. Physical and behavioral features available - voice, signature, key tapping, Gait, etc. Fingerprint is specified patterned from finger’s sweat gland which is consisting of ridge and Valley. Ridge has a certain direction at even interval. Also Ridge (Ridge) has characteristics where lean towards end from certain direction and the ridge (Ridge) part (Junction birurcation) which is divided into two directions. Classfication of fingerprint recoginition 282/293 BioMin SDK for Windows v3.6.0 Fingerprint recognition is divided into classification (Classification) and matching (Matching). Classification (Classification) is a way of determine that fingerprint belongs to a particular group based on the overall form of a fingerprint. Matching (Matching) is to compare the fingerprints match with the fingerprints stored in the input. Matching (Matching) is divided into 2 different methods; 1: N matching (Identification) and 1: 1 matching (Verification). The extracted fingerprint minute is used to do matching. The minutiae can be divided into Local feature and global feature by its own characteristic The Global feature can be determined by formation of fingerprint and direction pattern of ridge & location of ridge minutiae determines the Local feature. Fingerprint recoginition Basic formation of fingerprint recognition system is as below. Preprocess the fingerprint image which was entered by fingerprint reader. Then recognize the fingerprint by extracting the features and comparing with saved fingerprint data stored in database. a. Preprocessing To extract features from the fingerprint image, follow through below process. Clarifying the image by removing the noise and also ridge ending, minutiae placement, crossed features caused by the noise. This process is called the preprocessing. Here, 3 preprocessing methods are performed; smoothing, binarization and thinning. b. Feature Extraction Fingerprint features can be performed as below methods; End point of ridge, minutiae placement, ridge direction pattern, connecting information between core and ridge, local feature containing ridge formation. 283/293 BioMin SDK for Windows v3.6.0 The feature extraction can be effected by fingerprint pressure, direction, location, placement, and condition of the fingerprint. c. Feature Matching The matching is comparing saved template pattern in the database with fingerprint features taken from the device. To determine the match, may use pattern matching, statistics identification, structure identification. About FAR, FRR and EER Here, we discusses some general principles of biometric recognition systems, describes different classification errors and explains how the quality of two systems can be compared objectively. a. Identification vs. Verification A biometric recognition system can run in two different modes: identification or verification. Identification is the process of trying to find out a person's identity by examining a biometric pattern calculated from the person's biometric features. In the identification case, the system is trained with the patterns of several persons. For each of the persons, a biometric template is calculated in this training stage. A pattern that is going to be identified is matched against every known template, yielding either a score or a distance describing the similarity between the pattern and the template. The system assigns the pattern to the person with the most similar biometric template. To prevent impostor patterns (in this case all patterns of persons not known by the system) from being correctly identified, the similarity has to exceed a certain level. If this level is not reached, the pattern is rejected. In the verification case, a person's identity is claimed a priori. The pattern that is verified only is compared with the person's individual template. Similar to identification, it is checked whether the similarity between pattern and template is sufficient to provide access to the secured system or area. b. Thresholding (False Acceptance / False Rejection) The threshold depending fraction of the falsely accepted patterns divided by the number of all impostor patterns is called False Acceptance Rate (FAR). Its value is one, if all impostor patterns are falsely accepted and zero, if none of the impostor patterns is accepted. Look on the graphic on the right to see the values of the FAR for the score distribution of the left image for varying threshold. 284/293 BioMin SDK for Windows v3.6.0 Now let's change to the client patterns. Similar to the impostor scores, the client pattern's scores vary around a certain mean value. The mean score of the client patterns is higher than the mean value of the impostor patterns, as shown in the left of the following two images. If a classification threshold that is too high is applied to the classification scores, some of the client patterns are falsely rejected. Depending on the value of the threshold, between none and all of the client patterns will be falsely rejected. The fraction of the number of rejected client patterns divided by the total number of client patterns is called False Rejection Rate (FRR). According to the FAR, its value lies in between zero and one. The image on the right shows the FAR for a varying threshold for the score distribution shown in the image on the left. The choice of the threshold value becomes a problem if the distributions of the client and the impostor scores overlap, as shown in the next image on the left. On the right, the corresponding false acceptance and false rejection rates are displayed. Note that if the score distributions overlap, the FAR and FRR intersect at a certain point. The value of the FAR and the FRR at this point, which is of course the same for both of them, is called the Equal Error Rate (EER). 285/293 BioMin SDK for Windows v3.6.0 Scanners BioMini Plus2 FBI PIV Approved Authentication Scanner BioMini Plus 2 is an USB fingerprint scanner designed to provide high level security solution for identity access management solutions. BioMini Plus 2 features Suprema’s latest live finger detection technology for protection against fake fingerprints. The device features sleek and ergonomic design with scratch resistant IP65 sensor surface securing high usability. The usability is further extended with integration of MDR technology that allows effective capture of fingerprints even under direct sunlight. Combined with its comprehensive SDK solution, BioMini Plus 2 is a versatile and optimal platform for system integrators, hardware manufacturers and security companies. Specification Main Sensor Type(Optical) Resolution(500dpi/256gray) Sensing Area(16.0x18.0mm) Image Size(315×354 pixels) Compression Standards(WSQ) Template Format(Suprema,ISO19794-2, ANSI-378) Image Format(ISO19794-4) IP Rating(IP65) Interface USB(2.0 High-speed) Hardware Operating Temperature(-10°C ~ 50°C) Certification(CE,FCC,UL,WHQL,USB-IF RoHS,WEEE) Dimensions(66x90x58mm/WxLxH) Compatibility Operating System(Windows, Linux, Android4.1/Jelly Bean and Above) 286/293 BioMin SDK for Windows v3.6.0 BioMini Slim FBI PIV and Mobile ID FAP20 Certified USB Fingerprint Scanner BioMini Slim has been designed to provide a high level security solution for identity access management solutions for authentication. With IP65 grade dust and waterproof form factor, BioMini Slim features a sleek ergonomic design with the latest 500dpi slim optical sensor, which boasts a large platen size for easy and reliable fingerprints capturing as well as advanced LFD (Live Finger Detection) technology. Specification Main Sensor Type(Optical) Resolution(500dpi/256gray) Platen Size(18×25.4mm) Sensing Area(17x25mm) Image Size(320×480 pixels) Compression Standards(WSQ) Template Format(Suprema,ISO19794-2, ANSI-378) Image Format(ISO19797-4) IP Rating(IP65) Interface USB(2.0 High-speed) Hardware Operating Temperature(-10°C ~ 50°C) Certification(CE,FCC,KC,UL,WHQL, USB-IF,WEEE) Dimensions(82×57.7x27mm/WxLxH) Compatibility Operating System(Windows, Linux, Android4.1/Jelly Bean and Above) 287/293 BioMin SDK for Windows v3.6.0 BioMini Combo Contact Smart Card Reader with USB Fingerprint Scanner Suprema BioMini Combo has been designed to provide two factor authentication security solutions for authentication purposes. The scanner features Suprema’s latest slim optical sensor with large platen size for easier capturing. Smart card reader functionality and advanced Live Finger Detection technology enhances security makes BioMini Combo a secure platform for developers. Specification Main Sensor Type(Optical) Resolution(500dpi/256gray) Platen Size(18×25.4mm) Sensing Area(17x25mm) Image Size(320×480 pixels) Compression Standards(WSQ) Template Format(Suprema,ISO19794-2, ANSI-378) Image Format(ISO19797-4) Card Support CardType(ISO 7816/EMV 2000with SAM Slot_optical) Interface USB(2.0 High-speed) Hardware Operating Temperature(-10°C ~ 50°C) Certification(CE,FCC,KC,UL,WHQL, USB-IF,WEEE) Dimensions(82×57.7x27mm/WxLxH) Compatibility Operating System(Windows, Linux) 288/293 BioMin SDK for Windows v3.6.0 BioMini Plus FBI PIV Approved Authentication Scanner Suprema BioMiniPlus has been designed to provide high level security solution with its proven reliability through FBI-PIV certification. BioMini Plus features hybrid live finger detection (LFD) technology and multi award-winning Suprema Algorithm. Packed in a sleek and ergonomic design, it features durable 500dpi optical sensor and high speed USB 2.0 interface. Combined with its comprehensive SDK solution, Specification Main Sensor Type(Optical) Resolution(500dpi/256gray) Sensing Area(15.5×18.8mm) Image Size(260×340 pixels) Compression Standards(WSQ) Template Format(Suprema,ISO19794-2, ANSI-378) Image Format(ISO19797-4) IP Rating(IP65) Interface USB(2.0 High-speed) Hardware Operating Temperature(-10°C ~ 50°C) Certification(CE,FCC,KC,UL,WHQL, USB-IF,WEEE) Dimensions(66x90x58mm/WxLxH) Compatibility Operating System(Windows, Linux, Android4.1/Jelly Bean and Above) 289/293 BioMin SDK for Windows v3.6.0 BioMini High Performance Authentication Scanner Our latest range of high performance fingerprint scanners are supported by powerful software development kit (SDK) which features Suprema's award-winning algorithm that ranked 1st in FVC and NIST MINEX tests. Suprema Authentication Scanners offers unrivaled versatile platform for development to leading security companies, system integrators and hardware manufacturers. Specification Main Sensor Type(Optical) Resolution(500dpi/256gray) Sensing Area(16x18mm) Image Size(288×320 pixels) Compression Standards(WSQ) Template Format(Suprema,ISO19794-2, ANSI-378) Image Format(ISO19797-4) Interface USB(2.0 High-speed) Hardware Operating Temperature(-10°C ~ 50°C) Certification(CE,FCC,KC,WHQL) Dimensions(66x90x58mm/WxLxH) Compatibility Operating System(Windows, Linux, Android4.1/Jelly Bean and Above) 290/293 BioMin SDK for Windows v3.6.0 TroubleShooting Q. When i tried the 'init' on the sample, i faced "ERROR:No license" error(No licensed device or file found). !!! A. In order to use the BioMini SDK, a scanner should be connected to PC. Please install the driver from \install\drivers\SFR Driver(unified), and then connect the scanner. Q. I have an error "Unable to load DLL 'UFScanner.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)”. How can i solve the error? A. Please try to do the following way. 1. Check a output path on Reference in Visual Studio as below image. 2. Confirm whether there is the 'UFScanner.dll' file on the output path. If there isn't, put the 'UFScanner.dll' file into the output path. 3. Try doing it again. Q. I have tried copying all dlls from \bin folder to the bin directory of my project. But it gives the given error: "System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)". A. You can get the “0x8007000B” error since you used the dll files for 32bit in the 64bit environment, so please put following dll files from \bin\x64 folder into \bin directory of your project and re-build it. - UFScanner.dll - UFMatcher.dll - UFExtract.dll - Suprema.UFScanner.dll (This is a wrapper dll. Please copy this if you use the C# language.) - Suprema.UFMatcher.dll (This is a wrapper dll. Please copy this if you use the C# language.) - Suprema.UFExtract.dll (This is a wrapper dll. Please copy this if you use the C# language.) 291/293 BioMin SDK for Windows v3.6.0 Q. When i try to execute a diagnosis tool, i got an error "Unable to start program because mfc120u.dll or msvcr120.dll is not present in your computer". A. Please download Visual C++ 2013 Redistributable package on the following link according to their environment. https://www.microsoft.com/en-US/download/details.aspx?id=40784 Q. When i click "Create log" on a diagnosis tool, this is crashed. A. Please run the diagnosis tool as administrator. Q. [Web agent] When i launched 'BioMini_WebAgent.exe' application, i got “Web-Agent server failed to start" error. A. If ‘Biomini_WebAgent.exe’ application failed to launch and print “Web-Agent server failed to start” error on the screen, please check the following file’s existence where ‘Biomini_WebAgent.exe’ installed. ssleay32.dll, libeay32.dll Q. [Web agent] I'm facing “network error 0x2efd" error in Microsoft Edge browser. (Windows 10) A. - Make sure ‘localhost loopback’ option is enabled. - Run ‘cmd.exe' with Administrator authority, and execute following script. CheckNetIsolation.exeLoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe - Type about:flagsin the address edit box, and check if “Allow localhost loopback” option is enabled. 292/293 BioMin SDK for Windows v3.6.0 Q. [Web agent] I get “This Connection is Untrusted” error on Firefox browser. A. Click “I Understand the Risks” and then click “Add Exception” button. 293/293 BioMin SDK for Windows v3.6.0
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : Yes Create Date : 2016:08:19 14:55:10+09:00 Modify Date : 2016:08:19 15:00:34+09:00 XMP Toolkit : Adobe XMP Core 5.6-c015 84.158975, 2016/02/13-02:40:29 Metadata Date : 2016:08:19 15:00:34+09:00 Producer : mPDF 6.0 Format : application/pdf Title : BioMiniSDK for Windows v3.6.0 Document ID : uuid:06aef605-89e8-40f7-8b8c-8ca178deae7d Instance ID : uuid:f53e43a7-970a-452c-8258-c794228304d6 Page Layout : OneColumn Page Mode : UseOutlines Page Count : 300EXIF Metadata provided by EXIF.tools