FDX SDK Pro .NET Programming Manual (Windows) SG1-0030B-011
FDX SDK Pro .NET Programming Manual (Windows) SG1-0030B-011
SG1-0030B-011 (03/19)
Copyright © 1998-2019 SecuGen Corporation. ALL RIGHTS RESERVED. Information in this document is subject to
change without notice. The software described in this document is furnished under a license agreement or
nondisclosure agreement. The software may be used only in accordance with the terms of the agreement. SecuGen,
Auto-On, FDP02, FDU01, FDU02, FDU03, FDU04, SDU03, SDU04, U10, U20, UPx and U20-ASF-BT are trademarks or
registered trademarks of SecuGen Corporation. All other brands or product names may be trademarks, service marks
or registered trademarks of their respective owners.
Contents
CHAPTER 1. OVERVIEW......................................................................................................... 3
1.1. SYSTEM REQUIREMENTS ..............................................................................................................3
1.2. ASSEMBLY .......................................................................................................................................3
1.3. NAMESPACES ..................................................................................................................................3
1.4. RUNTIME FILES ...............................................................................................................................3
Chapter 1. Overview
FDx SDK Pro provides a .NET assembly (SecuGen.FDxSDKPro.Windows.dll) for .NET developers to use
SecuGen technology in a .NET framework.
Programming with SecuGen’s .NET library is easy. The inclusion of fingerprint reader control, extraction,
and matching algorithms in the SDK allows programmers to build biometric applications quickly and
easily. All fingerprint functionality provided by the SDK is called through
SecuGen.FDxSDKPro.Windows.dll and is accessed through the SGFingerPrintManager class.
SecuGen USB readers capture and digitize fingerprint images. The host system then retrieves the image
through its USB port for subsequent processing. All SecuGen USB readers, except for those based on
FDU01 sensors, are supported in this SDK.
1.2. Assembly
Windows SecuGen.FDxSDKPro.Windows.dll
1.3. Namespaces
This namespace contains the SecuGen Fingerprint Management class that supports the .NET Framework
Windows SecuGen.FDxSDKPro.Windows
For more information, refer to the separate document FDx SDK Pro Programming Manual.
Chapter 2. Programming
All SDK functions are implemented as members of the SGFingerPrintManager class. This chapter
explains how to use the SGFingerPrintManager class to integrate SecuGen fingerprint technology
into .NET applications.
[C#]
private SGFingerPrintManager m_FPM; //member variable
…
m_FPM = new SGFingerPrintManager();
[VB.NET]
Dim m_FPM As SGFingerPrintManager 'member variable
…
m_FPM = New SGFingerPrintManager()
The Init(SGFPMDeviceName devName) function takes a device name as a parameter. Based on the
device name, SGFingerPrintManager loads the required device driver module and initializes the extraction
and matching modules based on device information. The following table summarizes the relationships
among Device Type, Device Name, loaded Device Driver, and initial Image Size when the
Init(SGFPMDeviceName devName) function is called.
[C#]
private SGFingerPrintManager m_FPM; //member variable
…
SGFPMDeviceName device_name = SGFPMDeviceName.DEV_FDU02;
m_FPM = new SGFingerPrintManager(device_name);
[VB.NET]
Dim m_FPM As SGFingerPrintManager 'member variable
…
Dim device_name As SGFPMDeviceName
device_name = SGFPMDeviceName.DEV_FDU02
[C#]
private SGFingerPrintManager m_FPM; //member variable
…
Int32 image_width = 260;
Int32 image_height = 300;
Int32 image_dpi = 500;
[VB.NET]
Dim m_FPM As SGFingerPrintManager 'member variable
…
Dim image_width As Int32
Dim image_height As Int32
Dim image_dpi As Int32
image_width = 260
image_height = 300
image_dpi = 500
For USB readers, portAddr represents the device ID. If only one USB fingerprint reader is connected to
the PC, the device ID will have the value 0. If multiple USB fingerprint readers are connected to one PC,
portAddr can range from 0 to 9. The maximum number of SecuGen USB readers that can be connected to
one PC is 10.
For Parallel readers, portAddr is the actual parallel port address. Generally, if portAddr is 0
(AUTO_DETECT), the device driver will find the port address automatically.
In general, if only one USB reader is connected to the PC, then SGFPMPortAddr.USB_AUTO_DETECT
is recommended.
[C#]
Int32 port_addr;
…
port_addr = SGFPMPortAddr.USB_AUTO_DETECT;
iError = m_FPM.OpenDevice(port_addr);
if (iError == (Int32)SGFPMError.ERROR_NONE)
StatusBar.Text = "Initialization Success";
else
StatusBar.Text = "OpenDevice() Error : " + iError;
[VB.NET]
Dim port_addr As Int32
port_addr = SGFPMPortAddr.USB_AUTO_DETECT;
iError = m_FPM.OpenDevice(port_addr)
[C#]
SGFPMDeviceInfoParam pInfo = new SGFPMDeviceInfoParam();
pInfo = new SGFPMDeviceInfoParam ();
Int32 iError = m_FPM.GetDeviceInfo(pInfo);
if (iError == (Int32)SGFPMError.ERROR_NONE)
{
// This should be done GetDeviceInfo();
m_ImageWidth = pInfo.ImageWidth;
m_ImageHeight = pInfo.ImageHeight;
}
[VB.NET]
Dim pInfo As SGFPMDeviceInfoParam
Dim iError As Int32
GetImage() captures an image without checking for the presence of a finger or checking image quality.
GetImageEx() captures fingerprint images continuously, checks the image quality against a specified
quality value, and ignores the image if it does not contain a fingerprint or if the quality of the fingerprint is
not acceptable. If a quality image is captured within the given time (the second parameter), GetImageEx()
ends its processing.
• GetImage() Example
[C#]
Byte[] fp_image = new Byte[m_ImageWidth*m_ImageHeight];
Int32 iError;
iError = m_FPM.GetImage(fp_image);
if (iError == (Int32)SGFPMError.ERROR_NONE)
{
DrawImage(fp_image, pictureBox1 );
}
else
StatusBar.Text = "GetImage() Error : " + iError;
[VB.NET]
Dim fp_image() As Byte
Dim iError As Int32
• GetImageEx() Example
[C#]
Int32 iError;
Int32 timeout = 10000;
Int32 quality = 80;
[VB.NET]
Dim fp_image() As Byte
Dim iError As Int32
Dim timeout As Int32
Dim quality As Int32
timeout = 10000
quality = 80
[C#]
m_FPM.GetImageQuality(m_ImageWidth, m_ImageHeight, fp_image, ref img_qlty);
if (img_qlty < 80)
// Capture again
[VB.NET]
m_FPM.GetImageQuality(m_ImageWidth, m_ImageHeight, fp_image, img_qlty)
If img_qlty < 80 then
' Capture again
• SetBrightness () Example
[C#]
iError = m_FPM.SetBrightness(70);
[VB.NET]
iError = m_FPM.SetBrightness(70)
• Configure() Example
[C#]
iError = m_FPM.Configure();
[VB.NET]
iError = m_FPM.Configure()
Use CreateTemplate() to extract minutiae from a fingerprint image to form a template. The buffer should
be assigned by the application. To get the buffer size of the minutiae, call GetMaxTemplateSize(). It will
return the maximum buffer size for data in one template. The actual template size can be obtained by calling
GetTemplateSize() after the template is created. The CreateTemplate() API creates only one set of data
from an image.
Note: Templates having the ANSI378, ISO19794-2, or ISO19794-2 compact card formats may be merged.
For more information about template formats and merging formats, refer to the following Sections:
Section 2.14 Template Format
Section 2.15 Manipulating ANSI378, ISO19794-2, and ISO19794-2 Compact Templates
[C#]
Byte[] fp_image = new Byte[m_ImageWidth*m_ImageHeight];
Int32 iError = m_FPM.GetImage(fp_image);
[VB.NET]
Dim fp_image() As Byte
iError = m_FPM.GetImage(fp_image)
iError = m_FPM.CreateTemplate (fp_image, m_RegMin1)
When templated is created, template information such as fingerprint position and view number can be
inserted into a template. To insert a template information, use CreateTemplate(SGFPMFingerInfo*
fingerInfo, Byte rawImage[], Byte minTemplate[])
[C#]
SGFPMFingerInfo finger_info = new SGFPMFingerInfo();
finger_info.FingerNumber = SGFPMFingerPosition.FINGPOS_RT;
finger_info.ImageQuality = (Int16)img_qlty;
finger_info.ImpressionType = (Int16)SGFPMImpressionType.IMPTYPE_LP;
finger_info.ViewNumber = 1;
During verification, newly input minutiae data is compared against registered minutiae data. Similar to the
registration process, verification requires the capture of a fingerprint image followed by extraction of the
minutiae data from the captured image into a template. The security level can be adjusted according to the
type of application. For example, the security level for an application using fingerprint-only authentication
can be set higher than SGFPMSecurityLevel.Normal to reduce false acceptance (FAR).
To match templates, the FDx SDK Pro provides four kinds of matching functions. Each function requires
two sets of template data for matching.
• MatchTemplate(): This function matches templates having the same format as the default format.
When calling this function, each template should include only one sample (or view) per template.
The default format is SG400 (SecuGen proprietary format) but can be changed by calling
SetTemplateFormat(). For more information about template formats, refer to Section 2.14 Template
Format.
• MatchTemplateEx(): This function can match templates having different template formats. This
function can also specify the template format for each template and can match templates that have
multiple views per template.
• MatchAnsiTemplate(): This function is the same as MatchTemplateEx() except that it supports only
ANSI378 templates.
• MatchIsoCompactTemplate(): This function is the same as MatchTemplateEx() except that it
supports only ISO19794-2 compact card templates.
• MatchTemplate() Example
[C#]
Int32 iError;
bool matched = false;
SGFPMSecurityLevel secu_level = SGFPMSecurityLevel.Normal; // Adjust this
value according to application type
[VB.NET]
Dim iError As Int32
Dim matched As Boolean
secu_level = SGFPMSecurityLevel.Normal
iError = m_FPM.MatchTemplate(m_RegMin1, m_RegMin2, secu_level, matched)
• MatchAnsiTemplate () Example
[C#]
Int32 iError;
bool matched = false;
SGFPMSecurityLevel secu_level = SGFPMSecurityLevel.Normal; // Adjust this
value according to application type
[VB.NET]
Dim iError As Int32
Dim matched As Boolean
Dim secu_level As SGFPMSecurityLevel
• MatchTemplateEx() Example
[C#]
Int32 iError;
bool matched = false;
SGFPMSecurityLevel secu_level = SGFPMSecurityLevel.Normal; // Adjust this
value according to application type
[VB.NET]
Dim iError As Int32
Dim matched As Boolean
Dim secu_level As SGFPMSecurityLevel
(i.e. matched) to confirm the quality of the registered fingerprints. This comparison is analogous to a
password confirmation routine that is commonly required for entering a new password.
[C#]
Int32 max_template_size = 0;
m_FPM.GetMaxTemplateSize(ref max_template_size);
[VB.NET]
Dim max_template_size As Int32
Dim fp_image() As Byte
Dim matched As Boolean
Dim secu_level As SGFPMSecurityLevel
- Adjust the security level according to the type of application. For example, if fingerprint-only
authentication is used, the security level can be set higher than SGFPMSecurityLevel.Normal to
reduce false acceptance (FAR).
Example: Input minutiae data is matched against two registered minutiae data samples
[C#]
Int32 iError;
Byte[] fp_image = new Byte[m_ImageWidth*m_ImageHeight];
SGFPMSecurityLevel secu_level = SGFPMSecurityLevel.Normal; // Adjust this value
according to application type
bool matched1 = false;
bool matched2 = false;
if (iError == (Int32)SGFPMError.ERROR_NONE)
{
if (matched1 & matched2)
StatusBar.Text = "Verification Success";
else
StatusBar.Text = "Verification Failed";
}
else
StatusBar.Text = "MatchTemplate() Error : " + iError;
[VB.NET]
Dim iError As Int32
Dim fp_image() As Byte
Dim matched1 As Boolean
Dim matched2 As Boolean
Dim secu_level As SGFPMSecurityLevel
[C#]
Int32 match_score = 0;
m_FPM.GetMatchingScore(m_RegMin1, m_RegMin2, ref match_score);
[VB.NET]
Dim match_score As Int32
match_score = 0
m_FPM.GetMatchingScore(m_RegMin1, m_RegMin2, match_score)
To understand how the matching score correlates with typical security levels, refer to the following chart.
For more information about security levels, refer to Section 3.1.2.4 Matching Functions.
When calling EnableAutoOnEvent(), pass the handle of the window which will receive the Auto-On
message. The Auto-On message is defined as 0x8100 (FDxMessage.DEV_AUTOONEVENT).
• Enabling Auto-On
[C#]
m_FPM.EnableAutoOnEvent(true, (int)this.Handle);
[VB.NET]
m_FPM.EnableAutoOnEvent(True, Me.Handle.ToInt32())
• Disabling Auto-On
[C#]
m_FPM.EnableAutoOnEvent(false, 0);
[VB.NET]
m_FPM.EnableAutoOnEvent(False, 0)
[C#]
protected override void WndProc(ref Message message)
{
if (message.Msg == (int)SGFPMMessages.DEV_AUTOONEVENT)
{
if (message.WParam.ToInt32() == (Int32)SGFPMAutoOnEvent.FINGER_ON)
StatusBar.Text = "Device Message: Finger On";
else if (message.WParam.ToInt32() == (Int32)SGFPMAutoOnEvent.FINGER_OFF)
StatusBar.Text = "Device Message: Finger Off";
}
base.WndProc(ref message);
}
[VB.NET]
Protected Overrides Sub WndProc(ByRef msg As Message)
If (msg.Msg = SGFPMMessages.DEV_AUTOONEVENT) Then
If (msg.WParam.ToInt32() = SGFPMAutoOnEvent.FINGER_ON) Then
StatusBar.Text = "Device Message: Finger On"
ElseIf (msg.WParam.ToInt32() = SGFPMAutoOnEvent.FINGER_OFF) Then
StatusBar.Text = "Device Message: Finger Off"
End If
End If
MyBase.WndProc(msg)
End Sub
SG400 templates are encrypted for high security and have a size of 400 bytes. ANSI378 and ISO19794-2
templates are not encrypted, and their size is variable depending on how many fingers are in the structure
and how many minutiae points are found.
For more information about the ANSI378 template, refer to the standard document titled “Information
technology - Finger Minutiae Format for Data Interchange,” (document number ANSI-INCITS 378-2004)
available at the ANSI website http://webstore.ansi.org.
For more information about the ISO19794-2 and ISO19794-2 Compact templates, refer to the standard
document titled “Information technology--Biometric Data Interchange Formats--Part 2: Finger Minutiae
Data,” (document number ISO / IEC 19794-2:2005) available at the ISO website
https://www.iso.org/standard/38746.html.
Template format
[C#]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ANSI378);
[VB.NET]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ANSI378);
[C#]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794);
[VB.NET]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794);
[C#]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794_COMPACT);
[VB.NET]
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794_COMPACT);
[C#]
m_FPM.SetTemplateFormat(m_SGFPMTemplateFormat.SG400);
[VB.NET]
m_FPM.SetTemplateFormat(m_SGFPMTemplateFormat.SG400)
The following APIs work only when the template format is ANSI378:
- GetTemplateSizeAfterMerge()
- MergeAnsiTemplate()
- MergeMultipleAnsiTemplate()
- GetAnsiTemplateInfo()
- MatchAnsiTemplate()
- GetAnsiMatchingScore()
The following APIs work only when the template format is ISO19794:
- GetIsoTemplateSizeAfterMerge()
- MergeIsoTemplate()
- MergeMultipleIsoTemplate()
- GetIsoTemplateInfo()
- MatchIsoTemplate()
- GetIsoMatchingScore()
The following APIs work only when the template format is ISO19794_COMPACT:
- GetIsoCompactTemplateSizeAfterMerge()
- MergeIsoCompactTemplate()
- MergeMultipleIsoCompactTemplate()
- GetIsoCompactTemplateInfo()
- MatchIsoCompactTemplate()
- GetIsoCompactMatchingScore()
- GetIsoCompactMatchingScore()
[C#]
// Get first fingerprint image and create template from the image
err = GetImageEx(m_ImgBuf);
err = CreateTemplate(m_ImgBuf, m_ RegMin1);
// Get second fingerprint image and create template from the image
err = GetImageEx(m_ImgBuf);
err = CreateTemplate(m_ImgBuf, m_ RegMin2);
Byte[] merged_template;
Int32 buf_size = 0;
[C#]
Int32 err;
SGFPMFingerPosition finger_pos = SGFPMFingerPosition.FINGPOS_UK;
bool finger_found = false;
if (err == (Int32)SGFPMError.ERROR_NONE)
{
if (finger_found)
[C#]
Int32 extractor = 0
Int32 matcher = 0;
err = m_FPM.GetMinexVersion(ref extractor, ref matcher);
Chapter 3. SecuGen.FDxSDKPro.Windows
Reference
3.1. SGFingerPrintManager Class
Name Space: SecuGen.FDxSDKPro.Windows
Assembly Name: SecuGen.FDxSDKPro.Windows.dll
3.1.1. Constructor
SGFingerPrintManager()
Creates a new instance of the SGFingerPrintManager class. This constructor takes the device name or
device type as an argument.
3.1.2. Methods
• Parameters
deviceName :
Specifies SecuGen device name. The device name determines how the driver, extraction and
matching modules are initialized.
DEV_FDP02: device name for FDP02-based parallel port readers
DEV_FDU02: device name for FDU02-based USB readers
DEV_FDU03: device name for FDU03 and SDU03-based USB readers
DEV_FDU04: device name for FDU04 and SDU04-based USB readers
DEV_FDU05: device name for U20-based USB readers
DEV_FDU06: device name for UPx-based USB readers
DEV_FDU06P: device name for UPx-P based USB readers
DEV_FDU07: device name for U10-based USB readers
DEV_FDU07A: device name for U10-AP based USB readers
DEV_FDU08: device name for U20-A based USB readers
DEV_FDU08P: device name for U20-AP based USB readers
DEV_FDUSDA: device name for U20-ASF-BT (SPP) based readers
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_LOAD_DRIVER_MODULE = Failed to load device driver
SGFPMError::ERROR_LOAD_EXTRACTION_MODULE = Failed to load extraction module
SGFPMError::ERROR_LOAD_MATCHING_MODULE = Failed to load matching module
• Parameters
imageWidth:
Image width in pixels
imageHeight:
Image height in pixels
imageDPI::
Image resolution in DPI
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_LOAD_EXTRACTION_MODULE = Failed to load extraction module
SGFPMError::ERROR_LOAD_MATCHING_MODULE = Failed to load matching module
• Parameters
Format:
template format
ANSI378: ANSI-INCITS 378-2004 format
ISO19794: ISO/IEC 19794-2:2005 format
ISO19794_COMPACT: ISO/IEC 19794-2:2005 compact card format
SG400: SecuGen proprietary format
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE: Wrong template format
Int32 EnumerateDevice()
Enumerates reader(s) currently attached to the system. After calling this function, use
NumberOfDevice property and GetEnumDeviceInfo() method to get enumerated reader(s).
• Returned values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_FUNCTION_FAILED = General function fail error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter has been used
• Parameters
ndevs
The number of attached USB readers
devList
Buffer that contains device ID and device serial number. For more information, see Section 3.3
SGFPMDeviceList structure
• Parameters
port:
If a USB reader is attached, the argument specifies the device ID (from 0 to 9). If the device
ID is unknown, pass SGFPMProtAddr::USB_AUTO_DETECT. If parallel reader is attached,
the argument specifies the parallel port address. If the port is
SGFPMPortAddr::AUTO_DETECT, the device driver will find its port address automatically.
For USB readers, pass SGFPMPortAddr::USB_AUTO_DETECT or 0 – 9.
For Parallel readers, pass SGFPMPortAddr::AUTO_DETECT,
SGFPMPortAddr::LPT1_378, SGFPMPortAddr::LPT1_278 or
SGFPMPortAddr::LPT1_3BC.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter was used
SGFPMError::ERROR_SYSLOAD_FAILED = Failed to load system files
SGFPMError::ERROR_INITIALIZE_FAILED = Failed to initialize chip
SGFPMError::ERROR_DLLLOAD_FAILED = Failed to load module
SGFPMError::ERROR_DEVICE_NOT_FOUND = Device not found
Int32 CloseDevice()
Closes a currently opened reader
• Parameters
None
• Return values
SGFPMError::ERROR_NONE = No error
• Parameters
hwnd
The parent window handle
• Return values
SGFPMError::ERROR_NONE = No error
• Parameters
brightness
Brightness value (from 0 to 100)
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter was used
• Parameters
on
true: Turns on LED
• Parameters
buffer
A pointer to the buffer containing a fingerprint image. The image size can be retrieved by calling
GetDeviceInfo()
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_WRONG_IMAGE = Captured image is not a real fingerprint
SGFPMError::ERROR_INVALID_PARAM = An invalid parameter has been used
SGFPMError::ERROR_LINE_DROPPED = Image data is lost
Note: The returned quality value is different from the value used in GetImageEx(). The quality value in
GetImageEx() represents only the ratio of the fingerprint image area to the whole scanned area.
• Parameters
width
Image width in pixels
height
Image height in pixels
imgBuf
Fingerprint image data
quality
The return value indicating image quality
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter was used
Note: The returned quality value is different from the value used in GetImage(). The quality value in
GetImageEx() represents only the ratio of the fingerprint image area to the whole scanned area.
• Parameters
buffer
Pointer to buffer containing a fingerprint image
timeout
The timeout value (in milliseconds) used to specify the amount of time the function will wait for
a valid fingerprint to be input on the fingerprint reader
dispWnd
Window handle used for displaying fingerprint images
quality
The minimum quality value of an image, used to determine whether to accept the captured
image
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = An invalid parameter has been used
SGFPMError::ERROR_LINE_DROPPED = Image data was lost
SGFPMError::ERROR_TIME_OUT = No valid fingerprint captured in the given time
When calling EnableAutoOnEvent(), pass the handle of the window that will receive the Auto-On
message. The Auto-On message(SGFPMMessages) is defined as 0x8100.
• Parameters
enable
true: enables Auto-On
false: disables Auto-On
hwnd
Window handle to receive Auto-On message
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = An invalid parameter has been used
• Remarks
When the application receives an Auto-On message, wParam will have event type (Finger ON
or OFF) and lParam will have information of the device from which the event occurred.
wParam:
Contains event type.
SGFPMAutoOnEvent::FINGER_ON(1) = Finger is on the sensor
SGFPMAutoOnEvent::FINGER_OFF(0) = Finger is removed from the sensor
lParam:
Contains device information. The device information is contained in
SGFPMDeviceInfoParam.
• Parameters
size
The pointer to contain template size
• Return values
SGFPMError::ERROR_NONE = No error
• Parameters
rawImage
256 Gray-level fingerprint image data
minTemplate
Pointer to buffer containing minutiae data extracted from a fingerprint image
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_FEAT_NUMBER = Inadequate number of minutia
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = 103 = Error while decoding template 1
SGFPMError::ERROR_INVALID_TEMPLATE2 = 104 = Error while decoding template 2
• Parameters
fpInfo
Fingerprint information stored in a template. For ANSI378 templates, this information can be
retrieved from the template using GetAnsiTemplateInfo(). For ISO19794 templates, this
information can be retrieved from the template using GetIsoTemplateInfo(). For
ISO19794_COMPACT templates, this information can be retrieved from the template using
GetIsoCompactTemplateInfo(). For SG400 templates, this information cannot be seen in the
template. For more information, refer to Section 3.4 SGFPMFingerInfo Structure.
rawImage
256 Gray-level fingerprint image data
minTemplate
Pointer to buffer containing minutiae data extracted from a fingerprint image
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_FEAT_NUMBER = Inadequate number of minutia
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = 103 = Error while decoding template 1
SGFPMError::ERROR_INVALID_TEMPLATE2 = 104 = Error while decoding template 2
• Parameters
minTemplate
Pointer to buffer containing minutiae data extracted from a fingerprint image
size
The pointer to contain template size
• Return values
SGFPMError::ERROR_NONE = No error
• Parameters
minTemplate1
A pointer to the buffer containing minutiae data extracted from a fingerprint image
minTemplate2
A pointer to the buffer containing minutiae data extracted from a fingerprint image
secuLevel
Security level (NORMAL is recommended for most purposes)
LOWEST
LOWER
LOW
BELOW_NORMAL
NORMAL
ABOVE_NORMAL
HIGH
HIGHER
HIGHEST
Matched
Contains matching result. If the passed templates are the same, then true is returned. If not,
false is returned.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in minTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in minTemplate2
• Parameters
minTemplate1
A pointer to the buffer containing minutiae data extracted from a fingerprint image
templateType1
Specifies format of minTemplate1 (SG400, ANSI378, ISO19794, or ISO19794_COMPACT)
sampleNum1
Position of a sample to be matched in minTemplate1. If templateType1 is ANSI378, ISO19794,
or ISO19794_COMPACT, it can have a value from 0 to the number of samples minus 1 in
minTemplate1. If templateType1 is SG400, this value is ignored.
minTemplate2
A pointer to the buffer containing minutiae data extracted from a fingerprint image
templateType2
Specifies format of minTemplate2 (SG400, ANSI378, ISO19794, or ISO19794_COMPACT)
sampleNum2
Position of a sample to be matched in minTemplate2. If templateType2 is ANSI378, ISO19794,
or ISO19794_COMPACT, it can have a value from 0 to the number of samples minus 1 in
minTemplate2. If templateType2 is SG400, this value is ignored.
secuLevel
Security level (NORMAL is recommended for most purposes)
LOWEST
LOWER
LOW
BELOW_NORMAL
NORMAL
ABOVE_NORMAL
HIGH
HIGHER
HIGHEST
matched
Contains matching result. If the passed templates are the same, then true is returned. If not,
false is returned.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in minTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in minTemplate2
• Parameters
minTemplate1
A pointer to the buffer containing minutiae data extracted from a fingerprint image
minTemplate2
A pointer to the buffer containing minutiae data extracted from a fingerprint image
score
Matching score (from 0 to 199)
• Returned values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in minTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in minTemplate2
• Parameters
minTemplate1
A pointer to the buffer containing minutiae data extracted from a fingerprint image
templateType1
Specifies format of minTemplate1 (SG400, ANSI378, ISO19794, or ISO19794_COMPACT)
sampleNum1
Position of a sample to be matched in minTemplate1. If templateType1 is ANSI378, ISO19794,
or ISO19794_COMPACT, it can have a value from 0 to the number of samples minus 1 in
minTemplate1. If templateType1 is SG400, this value is ignored.
minTemplate2
A pointer to the buffer containing minutiae data extracted from a fingerprint image
templateType2
Specifies format of minTemplate2 (SG400, ANSI378, ISO19794, or ISO19794_COMPACT)
sampleNum2
Position of a sample to be matched in minTemplate2. If templateType2 is ANSI378, ISO19794,
or ISO19794_COMPACT, it can have a value from 0 to the number of samples minus 1 in
minTemplate2. If templateType2 is SG400, this value is ignored.
score
Matching score (from 0 to 199)
• Returned values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in minTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in minTemplate2
• Parameters
ansiTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
ansiTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
size
Template size if two templates are merged
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in ansiTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in ansiTemplate2
• Parameters
ansiTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
asniTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
outTemplate
The buffer containing merged data. The buffer should be assigned by the application. To
determine the exact buffer size, call GetTemplateSizeAfterMerge().
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in ansiTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in ansiTemplate2
• Parameters
inTemplates
A series of ANSI378 templates [ANSITemplate-1, ANSITemplate-2, ANSITemplate-3, ...
ANSITemplate-n]
nTemplates
The number of templates in inTemplates
outTemplate
The buffer containing newly merged template data. The buffer should be assigned by the
application.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
ansiTemplate
ANSI378 template
templateInfo
The buffer that contains template information. For more information see
SGFPMANSITemplateInfo structure.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
ansiTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in ansiTemplate1. It can be from 0 to the number of samples
minus 1 in ansiTemplate1.
ansiTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in ansiTemplate2. It can be from 0 to the number of samples
minus 1 in ansiTemplate2.
secuLevel
Security level (NORMAL is recommended for most purposes)
LOWEST
LOWER
LOW
BELOW_NORMAL
NORMAL
ABOVE_NORMAL
HIGH
HIGHER
HIGHEST
matched
Contains matching result. If the passed templates are the same, then true is returned. If not,
false is returned.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in ansiTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in ansiTemplate2
• Parameters
ansiTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in ansiTemplate1. It can be from 0 to the number of samples
minus 1 in ansiTemplate1.
ansiTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in ansiTemplate2. It can be from 0 to the number of samples
minus 1 in ansiTemplate2.
score
Matching score (from 0 to 199)
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in ansiTemplate1
SGFPMError.ERROR_INVALID_TEMPLATE2 = Error in ansiTemplate2
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
size
Template size if two templates are merged
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
outTemplate
The buffer containing merged data. The buffer should be assigned by the application. To
determine the exact buffer size, call GetIsoTemplateSizeAfterMerge().
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
inTemplates
A series of ISO19794 templates [ISOTemplate-1, ISOTemplate-2, ISOTemplate-3, ...
ISOTemplate-n]
nTemplates
The number of templates in inTemplates
outTemplate
The buffer containing newly merged template data. The buffer should be assigned by the
application.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
isoTemplate
ISO19794 template
templateInfo
The buffer that contains template information. For more information, see
SGFPMANSITemplateInfo structure.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in isoTemplate1. It can be from 0 to the number of samples
minus 1 in isoTemplate1.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in isoTemplate2. It can be from 0 to the number of samples
minus 1 in isoTemplate2.
secuLevel
Security level (NORMAL is recommended for most purposes)
LOWEST
LOWER
LOW
BELOW_NORMAL
NORMAL
ABOVE_NORMAL
HIGH
HIGHER
HIGHEST
matched
Contains matching result. If the passed templates are the same, then true is returned. If not,
false is returned.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in isoTemplate1. It can be from 0 to the number of samples
minus 1 in isoTemplate1.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in isoTemplate2. It can be from 0 to the number of samples
minus 1 in isoTemplate2.
score
Matching score (from 0 to 199)
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
size
Template size if two templates are merged
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
outTemplate
The buffer containing merged data. The buffer should be assigned by the application. To
determine the exact buffer size, call GetIsoCompactTemplateSizeAfterMerge().
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
• Parameters
inTemplates
A series of ISO19794 compact card templates [ISOTemplate-1, ISOTemplate-2,
ISOTemplate-3, ... ISOTemplate-n]
nTemplates
The number of templates in inTemplates
outTemplate
The buffer containing newly merged template data. The buffer should be assigned by the
application.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
isoTemplate
ISO19794 compact card template
templateInfo
The buffer that contains template information. For more information, see
SGFPMANSITemplateInfo structure.
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_PARAM = Invalid parameter
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in isoTemplate1. It can be from 0 to the number of samples
minus 1 in isoTemplate1.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in isoTemplate2. It can be from 0 to the number of samples
minus 1 in isoTemplate2.
secuLevel
• Parameters
isoTemplate1
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum1
Position of sample to be matched in isoTemplate1. It can be from 0 to the number of samples
minus 1 in isoTemplate1.
isoTemplate2
A pointer to the buffer containing minutiae data. A template can have more than one sample.
sampleNum2
Position of sample to be matched in isoTemplate2. It can be from 0 to the number of samples
minus 1 in isoTemplate2.
score
Matching score (from 0 to 199)
• Return values
SGFPMError::ERROR_NONE = No error
SGFPMError::ERROR_INVALID_TEMPLATE_TYPE = Wrong template type
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
SGFPMError::ERROR_INVALID_TEMPLATE1 = Error in isoTemplate1
SGFPMError::ERROR_INVALID_TEMPLATE2 = Error in isoTemplate2
3.1.2.8. Other
• Parameters
extractor
MINEX compliant extractor version number
matcher
3.1.3. Property
Property NumberOfDevice
• Description
Contains number of devices after calling EnumerateDevice()
Description
SGFPMDeviceInfoParam is used to obtain device information when calling GetDeviceInfo()
Constructor
SGFPMDeviceInfoParam()
Members
DeviceID Contains device ID for USB readers only (0 –9)
DeviceSN Contains device serial number for USB readers. Exception: FDU01-based and parallel
readers do not have device serial numbers
ComPort Contains parallel port address for parallel readers. Contains Device ID for USB readers.
ComSpeed Communication speed (not used in this version)
ImageWidth Fingerprint image width in pixels
ImageHeight Fingerprint image height in pixels
Brightness Current Brightness value (0-100)
Contrast Current Contrast value (0-100)
Gain Amplification (1, 2, 4, or 8) of image brightness (higher value yields darker image)
ImageDPI Image resolution of the reader in DPI
FWVersion Device firmware version number for USB readers only
Description
Used to obtain a list of currently attached reader(s) in GetEnumDeviceInfo() after calling
EnumerateDevice()
Constructor
SGFPMDeviceList()
Members
DevName
Contains device name (either SG_DEV_FDP02, SG_DEV_FDU02, SG_DEV_FDU03,
SG_DEV_FDU04, SG_DEV_FDU05, SG_DEV_FDU06 or SG_DEV_FDU07)
DevID
Contains USB device ID if the device type is USB
DevType
Not used
DeviceSN
Contains device serial number of USB readers (except for FDU01-based and parallel readers).
Length is defined in DEV_SN_LEN(15)
Description
Used when calling CreateTemplate(). The provided information will be put into the template. For
ANSI378, ISO19794-2, and ISO19794-2 Compact templates, this information can be seen from the
template structure format. For SG400 templates, this information cannot be seen in the template.
Constructor
SGFPMFingerInfo();
Members
FingerNumber
Finger position number Finger
FINGPOS_UK (0x00): Unknown finger
FINGPOS_RT (0x01): Right thumb
ViewNumber
Sample number for each finger (starts at 0)
ImpressionType
Impression type (should be 0 for SecuGen readers)
IMPTYPE_LP (0x00): Live-scan plain
IMPTYPE_LR (0x01): Live-scan rolled
IMPTYPE_NP (0x02): Non-live-scan plain
IMPTYPE_NR (0x03): Non-live-scan rolled
ImageQuality
Image quality value (0 – 100). To obtain image quality, use GetImageQuality().
Description
Used when calling GetAnsiTemplateInfo (). The provided information will be put into the template. For
ANSI378, ISO19794-2, and ISO19794-2 Compact templates, this information can be seen from the
template structure format. For SG400 templates, this information cannot be seen in the template.
Constructor
SGFPMANSITemplateInfo();
Members
TotalSamples
Indicates the number of samples in a template. One template can have a maximum of 225 samples.
Number of samples = Max finger number 15 * Max View Number 15 = 225
SampleInfo
Information of each sample in a template. Refer to section 3.4 SGFPMFingerInfo Structure.
WSQ Related
ERROR_NO_IMAGE 600 Invalid image