Sunteți pe pagina 1din 61

ZKSoftwareInc. ZKFingerSDK4.

0 Manual

ZKFinger SDK4.0 Manual


ZKFinger SDK4.0 ZKSoftwareInc. AllRightReserved

ZKFinger SDKCopyrightDeclaration
ZKFingerSDKandthesoftwaredevelopmentlicenseagreementdefineyour rightrelatedtothecopyrightofthisdevelopmentkitandifyoudontagreewith the following agreement, please return the product to the place you bought it immediately. I. UsageLicense You can only copy one software package related to this SDKincluding Setup.exeLicense.rtfBiokey.ocxManual.doc andpertinentsamplesto one single PCand without written license from Zhongkong Automation System Inc., Ltd, content of the software package related to this SDK and this manualcannotbecopied orreprintedinits originalform oranyother formsbymeansofpaper,electronicsoranyothers.

II. TrademarkRegistration ZKSoftware., ZKFinger, and ZKSoftware are registered trademarks owned by Zhongkong AutomationSystem Inc., Ltd, protected bylaws ofPeoples Republic of China, and any illegitimate usage is forbidden. Microsoft is a registered trademark of Microsoft Corporation, and any other products and company names mentioned in this manual can be trademarks of respective owners.

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

Ifthe content ofthis manualischanged,sorryfor nofurthernotice willbe given.

ZKSoftware Inc.

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

UserRegistration
After you have bought this product, please fill in User Registration Form carefully. If you send the completed form to our company by fax or email, you will become a legitimate user of this product, and you are able to obtain our total technical support service and information related to upgrading of this software version! User Registration Form 1 You bought the software on (Date):____/__/__ at (Place):___________________ ___________________ 2Your name: ___________ Position: ___________ Addressing: [ ] Sir [ ] Madam Telephone: _______________ E-mail: _______________ Address: _____________________________ 3The name of your company:_________________________ _________________________ The abbreviation of your company: _________________________ Company address: _______Province/City, ______City/District, ________________ Zip code: _______ Company Telephone: (____) ____________
ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

Staff number: [ ] <100 persons [ ] 101to 200 persons [ ] 201to 500 persons [ ] 501to 1000 persons [ ] above 1000 persons Website: _________________________ Email address: _________________________ 4Are you willing to receive our Product upgrading notice? New product advertisement? Technique information express? Website upgrading notice?

[ [ [ [

] ] ] ]

Yes Yes Yes Yes

Please fax to: 010-51518015 Or Email to: support@biometric.com.cn

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

TableofContents
1.ZKFingerAlgorithmDescription .....................................................................1 2.ZKFingerSDKArchitect...................................................................................3 3.SoftwareInstallation..........................................................................................5
3.1DiscFilesandDirectory ............................................................................................... 5 3.2SoftwareInstallation .................................................................................................... 6

4.ActiveXControlReference................................................................................7
4.1Property....................................................................................................................... 7 4.1.1ActiveasBoolean ................................................................................................. 7 4.1.2EngineValidasBoolean......................................................................................... 7 4.1.3EnrollIndexAsLong ............................................................................................. 7 4.1.4EnrollCountAsLong ............................................................................................ 8 4.1.5FPEngineVersionASString................................................................................... 8 4.1.6ImageHeightASinteger ........................................................................................ 8 4.1.7ImageWidthASinteger ......................................................................................... 8 4.1.8IsRegisterAsBoolean ........................................................................................... 8 4.1.9OneToOneThresholdAsBoolean........................................................................... 8 4.1.10RegTplFileNameAsString.................................................................................. 9 4.1.11SensorCountAsLong.......................................................................................... 9 4.1.12SensorIndexASLong.......................................................................................... 9 4.1.13SensorSNAsString............................................................................................. 9 4.1.14TemplateLenAsLong ......................................................................................... 9 4.1.15ThresholdAsLong.............................................................................................. 9 4.1.16VerTplFileNameAsString..................................................................................10 4.2Method .......................................................................................................................10 4.2.1TheMethodsfortheControlInterfacesof1:1and1:N ..........................................10 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.1SubBeginEnroll() .............................................................................10 4.2.2SubCancelEnroll()............................................................................10 4.2.3FunctionDongleIsExistAsBoolean .................................................10 4.2.4FunctionDongleSeed(Byvallp2AsLong,Byvalp1,p2,p3,p4As Integer)AsBoolean....................................................................................10 4.2.5FunctionDongleUserIDAsLong .....................................................11 4.2.6FunctionDongleMemRead(Byvalp1,p2AsInteger,buf)As Boolean ......................................................................................................11 4.2.7FunctionDongleMemWrite(Byvalp1,p2AsInteger,buf)As Boolean ......................................................................................................11 4.2.8FunctionGetTemplate() ....................................................................11 4.2.9FunctionGetFingerImage(ByvalAFingerImage)AsBoolean..........11 4.2.10FunctionInitEngine()AsLong .......................................................12 4.2.11FunctionVerFinger(byvalregTemplate,verTemplate,AdoLearning AsBoolean,byvalAregFeatureChangedAsBoolean)AsBoolean ...........12 4.2.12FunctionVerFingerFromFile(regTemplateFileAsString, verTemplateFileAsStringAdoLearningAsBoolean,byval AregFeatureChangedAsBoolean)AsBoolean .........................................12 4.2.13FunctionVerRegFingerFile(RegTemplateFileAsString, verTemplateAdoLearningAsBoolean,byvalAregFeatureChangedAs Boolean)AsBoolean..................................................................................13 4.2.14SubPrintImageAt(HDCAsOLE_HANDLE,XAsLong,YAs Long,aWidthAsLong,aHeightAsLong).................................................13 4.2.15SubPrintImageEllipseAt(HDCAsOLE_HANDLE,XAsLong,Y AsLong,aWidthAsLong,aHeightAsLong,bkColorAsOLE_COLOR)14 4.2.16SubSaveBitmap(FileNameAsString)............................................14 4.2.17SubSaveJPG(FileNameAsString).................................................14 4.2.18FunctionSaveTemplate(FileNameAsString,Template)AsBoolean14 4.2.19functionEncodeTemplate(ASour,varADestAsString)AsBoolean14 4.2.20functionDecodeTemplate(constASourAsString,ADest)As
ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

Boolean ......................................................................................................14 4.2.21functionEncodeTemplate1(ASour)AsString.................................15 4.2.22functionDecodeTemplate1(constASourAsString)AsVariant......15 4.2.23SubBeginCapture().........................................................................15 4.2.24SubEndEngine() .............................................................................15 4.2.25functionVerFingerFromStr(regTemplateStrAsString, verTemplateStrAsString,AdoLearningAsBoolean,byval AregFeatureChangedAsBoolean)AsBoolean .........................................15 4.2.26functionGetTemplateAsString()AsString .....................................16 4.2.27functionControlSensor(ACodeAsLongAValueAsLong)AsLong16
4.2.2Methodfor1:NControlInterface .........................................................................16

4.2.28FunctionAddRegTemplateToFPCacheDB(fpcHandleAsLong, FPIDAsLong,pRegTemplate)AsLong ...................................................16 4.2.29FunctionAddRegTemplateFileToFPCacheDB(fpcHandleAsLong, FPIDAsLong,pRegTemplateFileAsString)AsLong .............................16 4.2.30FunctionCreateFPCacheDBAsLong.............................................17 4.2.31SubFlushFPImages() .....................................................................17 4.2.32SubFreeFPCacheDB(fpcHandleAsLong)....................................17 4.2.33FunctionIdentificationFromFileInFPCacheDB(fpcHandleAsLong, pVerTemplateFileAsString,ByvalScoreAsLong,Byval ProcessedFPNumberAsLong)AsLong....................................................18 4.2.34FunctionIdentificationInFPCacheDB(fpcHandleAsLong, pVerTemplate,ByvalScoreAsLong,ByvalProcessedFPNumberAsLong) AsLong......................................................................................................18 4.2.35FunctionIsOneToOneTemplate(ATemplate)AsBoolean ..............19 4.2.36FunctionModifyTemplate(byvalAtemplate,AOneToOneAs Boolean)AsBoolean..................................................................................19 4.2.37FunctionRemoveRegTemplateFromFPCacheDB(fpcHandleAs Long,FPIDAsLong)AsLong ..................................................................20 4.2.38SubCancelCapture() .......................................................................20
ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.39FunctionAddRegTemplateStrToFPCacheDB(fpcHandleAsLong, FPIDAsLong,ARegTemplateStr AsString)AsLong ..............................20 4.2.40FunctionIdentificationFromStrInFPCacheDB(fpcHandleAsLong, AVerTemplateStrAsString,ByvalScoreAsLong,Byval ProcessedFPNumberAsLong)AsLong....................................................20 4.2.41SubSetAutoIdentifyPara(AutoIndentifyAsBoolean,fpcHandleAs Long,ScoreAsLong) ................................................................................21
4.2.3Methodsfor1:1ControlInterface.........................................................................21

4.2.42FunctionAddBitmap(BitmapHandleAsOLE_HANDLE, ValidRectX1AsLong,ValidRectY1AsLong,ValidRectX2AsLong, ValidRectY2AsLong,DPIAsLong)AsBoolean.....................................21 4.2.43FunctionAddImageFile(FileNameAsString,DPIAsLong)As Boolean ......................................................................................................22


4.2.4MethodsforExternal ImageFileInterface ............................................................22

4.2.44FunctionAddBitmap(BitmapHandleAsOLE_HANDLE, ValidRectX1AsLong,ValidRectY1AsLong,ValidRectX2AsLong, ValidRectY2AsLong,DPIAsLong)AsBoolean.....................................22 4.2.45FunctionAddImageFile(FileNameAsString,DPIAsLong)As Boolean ......................................................................................................22


4.2.5MethodsforExternalInterface .............................................................................23

4.2.46FunctionCreateFPCacheDBExAsInteger .....................................23 4.2.47SubFreeFPCacheDBEx(fpcHandleAsLong) ................................23 4.2.48FunctionAddRegTemplateStrToFPCacheDBEx(fpcHandleAs Integer,FPIDAsInteger,ARegTemplateStrAsStirng, ARegTemplate10StrAsString)AsLong ...................................................23 4.2.49FunctionAddRegTemplateToFPCacheDBEx(fpcHandleAsInteger, FPIDAsInteger,pRegTemplate,pRegTemplate10)AsLong ...................23 4.2.50FunctionAddRegTemplateFileToFPCacheDBEx(fpcHandleAs Integer,FPIDAsInteger,pRegTemplateFile AsString, pRegTemplateFile10AsString)AsLong...................................................23
ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.51FunctionRemoveRegTemplateFromFPCacheDBEx(fpcHandleAs Long,FPIDAsLong)AsLong ..................................................................24 4.2.52FunctionGetTemplateEx(AFPEngineVersionAsString)AsVariant24 4.2.53FunctionGetTemplateAsStringEx(AFPEngineVersionAsString) AsString ....................................................................................................24 4.3Events ..............................................................................................................24


4.3.1OnCapture(ActionResultASBoolean,ATemplate) ................................................24 4.3.2OnCaptureToFile(ActionResultASBoolean) ........................................................25 4.3.3OnEnroll(ActionResultASBoolean,ATemplate)...................................................25 4.3.4OnEnrollToFile(ActionResultASBoolean)...........................................................25 4.3.5OnFeatureInfo(AQualityAsLong) .......................................................................25 4.3.6OnImageReceived(byvalAImageValidAsBoolean)..............................................26 4.3.7OnFingerTouching ...............................................................................................26 4.3.8OnFingerLeaving.................................................................................................26

5.TaskFlowDescription .....................................................................................27 6.CommonQuestionsDescription .....................................................................30


6.1Thedifferencebetween1:1and1:NControl.................................................................30 6.2ReadinandReadoutFingerprintTemplatesinDatabase .............................................30 6.3SoftwareDoggleandAuthorizedLicenseDocumentation.............................................32 6.4Theuseof1:Nhighspeedbuffer .................................................................................33 6.5Usingfingerprintimages .............................................................................................33 6.6Settingfingerprintidentificationthreshold ...................................................................34 6.7Solutionstolowqualityfingerprinttemplatesfor1:Nidentification .............................34 6.8ConnectingmultiplefingerprintSensors.......................................................................37

7.DEMOProgramDescription ..........................................................................38 8.ZKFingerSDKDevelopmentLicenseAgreement.........................................43


ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

9.SoftwareAftersaleService..............................................................................49 10.ContactUs.......................................................................................................51

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

1. ZKFinger AlgorithmDescription
ZKFingeralgorithmisakindofquickandaccurate1:1 and1:Nfingerprint identificationalgorithm,whichistotallyopentosoftwaredevelopersandsystem integrators. If you use ZKFinger to identify fingerprints (20006000 pieces of fingerprints)youcancompletetheidentificationtaskeasilywithin15seconds (thefollowingtestsrequirePentiumIII900MHz+128MBEMSmemory)without categorizing fingerprints by names, PIN or any others in advance. ZKFinger algorithmhasthefollowingfeatures: 1 ZKFingersoftwaredevelopment packagecanbequicklyintegrated to customers systems, and can support any scanner device and fingerprint Sensor (Image quality >=300DPI) through open image processinterface. By strainer mirrors and adequate valve values which are selfadaptive orcanbeeasily matched, ZKFingeralgorithmisable toweakennoise,increasethecontrastdegreeofthebridgeandvale, andeventocapturewholeorpartialfeaturepointsfromfingerprint ofbadquality(fingerprintwhichisdirty,toodryorwet,broken,or withwounds,scarsandmarks). ZKFinger algorithm identification supports the translation of fingerprints (>=35%of the fingerprint size) and circumrotation for 360degree.Specialtechnologyisusedtorealizespeedyverification when the fingerprint is translated or rotated for 360 degree (the averagespeedis3000pieces/second).Evenwhenthefingerprinthas few feature points (<=10 normally fingerprints feature points >=15)thisfunctioncanalsobeachieved.
ZKSoftwareInc. http://www.zksoftware.com 1

ZKSoftwareInc. ZKFingerSDK4.0 Manual

ZKFinger algorithm does not require global feature points (core point,triangularpoint),andidentificationcanbecompletedbylocal featurepoints. Throughclassificationalgorithm(fingerprintsareclassifiedintofive categories:archcategory,leftloopcategory,rightloopcategory,tine arch category, and vortex category), ZKFinger use global feature ordering in advance, which accelerates the process of fingerprint verificationremarkably. ZKFingeralgorithmisquiteconcise:dataonlyneed350Kmemory, sothattheycaneasilybeimportedintoembeddedsystems.

ZKFinger was used to test 2000 pieces of fingerprints collected from four Sensors(YLC,DFR200,U.are.U,andAuthentec),everypieceoffingerprintwas verified with the other ones, and verification and test were carried out for altogether 4,000,000 times, and eventually the following test results were achieved: Templatesize Rotation FAR FRR Registrationtime Averageverificationspeed Imagequality 310or1152Byte 0 360degree <=0.001% <=2.0% 0.5second 2500pieces/second >=300DPI

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

2. ZKFinger SDKArchitect
ZKFinger SDK 4.0 Pro (Software Development Kit) mainly exists in the form of ActiveX, and users can develop application programs relative to fingerprint sensors by means of varied development languages (such as VC++,C++Builder,Delphi,VB,VisualFoxPro,PBandsoon). FilesIncluded: Operation System Files Setup.exe WindowsXP Windows2003 WindowsVista Windows7 License.rtf Development Agreement \Sdk\Manual.doc Program Manual \Sdk\One\Biokey.ocx ZKFinger Control \Sdk\Many\Biokey.ocx ZKFinger Control 1:N ActiveX 1:1 ActiveX Development License Description Installation program for

fingerprintSensordriverand Doggledriver

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

SDKArchitecture:

ApplicationProgram

ActiveXControl OCX

DeviceDriver

Otherfingerprint Readers

FingerprintSensor ZKorURU2000Sensor

FingerprintImage

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

3. SoftwareInstallation
3.1DiscFilesandDirectory
OpentheZKFingerSDKdisc,andinformationaboutthedirectoryand file

willappearasthefollowing:

Setup.exeItincludestheinstallationprogramforfingerprintReaderdriver andDoggledriver. License.rtf:DevelopmentLicenseAgreement. Open the SDK directory, and the following directory and file information willbeshown:

Manual.doc:SDKInstructionManual Many:1:Nidentificationdevelopment One:1:1identificationdevelopment. Open the one or many directory, the following information about the directoryandfileswillbeshown: Samples:samplesforvariousdevelopmentlanguages Biokey.ocxControllibraryfiles.

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

3.2SoftwareInstallation
Before installing ZKFinger SDK, please make sure that your operation systemandtheconfigurationofyourcomputermeettherequirementstorun thesoftware. Before the installation, if your computer has been connected with a fingerprint Reader, youd better pull it out. 1Puttheinstallationdiscinthedriver,andthecomputerwillautomatically run the installation software. Click Next button, and you can enter the followingoperationsteps: PressInstallationbutton,andbegintoinstallFingerprintdriverandDoggle driver. 2 Copy the following file to Windows system directory (c:\windows\system) Biokey.ocx ControlBaseFile 3RegistercontrolBiokey.ocx c:\windows\system\regsvr32.exe c:\windows\system\Biokey.ocx Note: 1 The installation program only installs fingerprint Reader driver and Doggledriver,andotherdevelopmentfilesshouldbecopiedbyusersto respectivedirectoriesbyhand

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4. ActiveX ControlReference
ZKFingerSDK4.0Proisdividedintotwocontrols:1:1 and1:N.Forthese two, their interfaces are basically of the same property and method, and the methodsforthetwointerfacesonlydifferintheverificationrelatedto1:N.Inour further description,wewilltryto displaythetwocontrolscomprehensively,and theirdifferenceswillbelabeledandilluminated. VB language expression is used here, and fingerprint template Variant variableshowasonedimensionbytearrays.

4.1Property 4.1.1 ActiveasBoolean


Readonly ItindicateswhetherthefingerprintReadersetbycurrentSensorIndexhasgot readyornot.

4.1.2EngineValidasBoolean
Readonly It indicates whether the fingerprint identification system is performing normallyornot.IfthefunctioninitEnginehasbeenused,effectiveresultwillbe returned.

4.1.3 EnrollIndexAsLong
Readonly The sampling order number at fingerprint registration, that is, the effective timesforsuccessfulfingerprintregistrationatpresent.
ZKSoftwareInc. http://www.zksoftware.com 7

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.1.4 EnrollCountAsLong
The times for sampling fingerprints at registration, whose value ranges is 14.

4.1.5 FPEngineVersion ASString


Readonly Itindicatestheversionnumberof thefingerprintidentificationsystem.

4.1.6 ImageHeightASinteger
Readonly Itindicatestheheightofthefingerprintimage.

4.1.7 ImageWidthASinteger
Readonly Itindicatesthewidthofthefingerprintimage.

4.1.8IsRegisterAsBoolean
Readonly Itindicateswhetherafingerprintisbeingregisteredornot.

4.1.9 OneToOneThresholdAsBoolean
Set the identification threshold value (1100) for ZKFinger lowspeed fingerprintverificationonetoone,andthedefaultvalueis10.Thelargerofthe value,thelowertheFARandthehighertheFRRare. Note:1:1controldoesnthavethisproperty.

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.1.10 RegTplFileName AsString


Set to save the file name of the fingerprint registration template when the eventOnEnrollToFile istakingplace.

4.1.11SensorCountAsLong
Readonly It indicates the number of fingerprint Readers which are connected to the computer,andifEngineValidisinvalid,0isreturned.

4.1.12SensorIndex ASLong
Select the order number of the fingerprint head when multiple fingerprint Readers are connected. The serial number starts from 0, and if the number is smallerthan0,thefingerprintReaderwillnotwork.

4.1.13SensorSNAsString
ItindicatestheserialnumberforhardwareofthefingerprintReader.

4.1.14TemplateLenAsLong
Readonly Itindicatesthebytelengthofthefingerprintregistrationtemplate. Note:Thetemplatelengthis1152bytesfor1:N,andthetemplatelengthis 310bytesfor1:1.

4.1.15 ThresholdAsLong
Set the verification and identification threshold value (1100) for the fingerprintidentificationsystem,andthedefaultvalueis10.Thelargerthevalue, thelowertheFARandthehighertheFRRare.
ZKSoftwareInc. http://www.zksoftware.com 9

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.1.16 VerTplFileName AsString


Set to save the file name of the fingerprint verification template when the eventOnCaptureToFile istakingplace.

4.2Method 4.2.1The MethodsfortheControl Interfacesof 1:1and1:N


4.2.1SubBeginEnroll() Begintoregisterfingerprints,andtheeventOnEnroll willtake placewhen theregistrationcompletes. 4.2.2SubCancelEnroll() Cancel the current status of fingerprint registration, that is, the operation startedfromBeginEnrollwillbecancelledbythisfunction. 4.2.3Function DongleIsExistAsBoolean ExaminewhetherDoggleisexistingornot. 4.2.4 Function DongleSeed(Byval lp2 As Long, Byval p1, p2, p3, p4 As Integer)AsBoolean Obtainfour16digitalintegral(p1,p2,p3,p4)returnvaluesfortheseedcode lp2.Dogglecancomputeaseedcodebyinterioralgorithm,whichresultsinfour return codes. Seed code algorithm is not open, and by examining whether the returncodesareoftheexpectedvaluewecanexaminewhetherDoggleisexisting ornot.
10 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.5Function DongleUserIDAsLong Read User ID in Doggle, and User ID will not repeat. Save it in specific locationwithinDoggle. This function has been canceled, here in order to compatible with before,wekeepupthisfunction. 4.2.6Function DongleMemRead(Byvalp1,p2AsInteger,buf)AsBoolean Read the p2 bytes started from p1 located in Doggle memory to Variant variable buf (onedimension byte array). There are altogether 24 bytes in the memory,locatedfrom0to23. Thisfunctionhasbeencanceled,hereinordertocompatiblewithbefore, wekeepupthisfunction. 4.2.7Function DongleMemWrite(Byvalp1,p2AsInteger,buf)AsBoolean WriteVariantvariablebuf(onedimensionbytearray)tothep2bytesstarted fromp1locatedinDogglememory.Therearealtogether24bytesinthememory, locatedfrom0to23. Thisfunctionhasbeencanceled,hereinordertocompatiblewithbefore, wekeepupthisfunction. 4.2.8FunctionGetTemplate() Getthefingerprinttemplate,whichisobtainedmostrecently. 4.2.9FunctionGetFingerImage(ByvalAFingerImage) AsBoolean Getthefingerprintimage(BMPformat),whichisobtainedmostrecently.

ZKSoftwareInc.

http://www.zksoftware.com

11

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.10FunctionInitEngine()AsLong Initializethefingerprintidentificationsystem.PropertysuchasSensorCount, SensorSN, EngineValid, ImageHeight and ImageWidth will not return accurate resultsonlyafterthisfunctionhasbeencalled.Returnvalues: 0Initializationsucceeded. 1 Theloadingofthefingerprintidentificationdriverfailed. 2FingerprintSensorhasnotbeenconnected. 3 The fingerprint Reader appointed by the property SensorIndex dose not exist(Note:SetthepropertySensorIndexbeforecallingthefunction). MethodEndEnginecanbeusedtoreleasethefingerprintdevice system. 4.2.11FunctionVerFinger(byvalregTemplate,verTemplate,AdoLearningAs Boolean,byval AregFeatureChanged AsBoolean)AsBoolean Compare whether the feature templates for two pieces of fingerprints are matched or not. Here, regTemplate represents fingerprint registration feature templates,verTemplateexpressesfingerprintverificationfeaturetemplateswhich are collected on the spot, AdoLearning denotes whether to carry out fingerprint feature template learning updating or not, and AregFeatureChanged shows whethertheregistrationtemplateregTemplatehasbeenchangedornot.Truewill be returned when the two pieces of fingerprints are matched, and False will be returnedwhennotmatched. Explanation: Thefingerprintfeaturewillvarytocertainextentwiththetime,usuallywhich willnotposeaninfluenceontheverificationoffingerprints.Whilebyfingerpirnt feature template learning updating, the system can obtain an integrated new template,soastolowertheFRR. 4.2.12 Function VerFingerFromFile(regTemplateFile As String, verTemplateFile As String AdoLearning As Boolean, byval
12 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

AregFeatureChanged AsBoolean)AsBoolean Compare whether the feature templates for two pieces of fingerprints are matched or not. Here, regTemplate represents fingerprint registration feature templates,verTemplateexpressesfingerprintverificationfeaturetemplateswhich are collected on the spot, AdoLearning denotes whether to carry out fingerprint feature template learning updating or not, and AregFeatureChanged shows whethertheregistrationtemplateregTemplatehasbeenchangedornot.Truewill be returned when the two pieces of fingerprints are matched, and False will be returnedwhennotmatched. 4.2.13Function VerRegFingerFile(RegTemplateFileAsString,verTemplate AdoLearning As Boolean, byval AregFeatureChanged As Boolean) As Boolean Compare whether the feature templates for two pieces of fingerprints are matched or not. Here, regTemplate represents previous fingerprint registration feature templates in the file specified by FileName, verTemplate expresses fingerprint feature templates which are collected on the spot, AdoLearning denoteswhethertocarryoutfingerprintfeaturetemplatelearningupdatingornot, and AregFeatureChanged shows whether the registration template regTemplate hasbeenchangedornot.Truewillbereturnedwhenthetwopiecesoffingerprints arematched,andFalsewillbereturnedwhennotmatched. 4.2.14Sub PrintImageAt(HDC AsOLE_HANDLE,X AsLong,Y AsLong, aWidthAsLong,aHeightAsLong) At the location specified by (x,y), display the fingerprint image in accordancewiththesizespecifiedby(aWidth,aHeight).HDCistheHDCforthe windowinwhichthefingerprintwillbeshown.

ZKSoftwareInc.

http://www.zksoftware.com

13

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.15Sub PrintImageEllipseAt(HDCAsOLE_HANDLE,XAsLong,Y As Long,aWidthAsLong,aHeightAsLong,bkColorAsOLE_COLOR) At the location specified by (x,y), display the fingerprint image in accordancewiththesizespecifiedby(aWidth,aHeight).HDCistheHDCforthe window in which the fingerprint will be shown. Here the fingerprint image is surroundedbyanellipse. 4.2.16SubSaveBitmap(FileNameAsString) SavethelastfingerprintimagetothebitmapfilespecifiedbyFileName. 4.2.17SubSaveJPG(FileNameAsString) Savethelastfingerprintimage astheJpegfile thatspecifiedbyFileName. 4.2.18FunctionSaveTemplate(FileNameAsString, Template)AsBoolean SavethefeaturetemplatefortheTemplatefingerprinttothefilespecifiedby FileName. 4.2.19functionEncodeTemplate(ASour,varADest AsString)AsBoolean Transfer the Variant template Asour used by the control into the template stringAdest,whichisBASE64formatted. 4.2.20functionDecodeTemplate(constASourAsString,ADest)AsBoolean Transfer the template string Asour which is BASE64 formatted into the VarianttypedtemplateAsourusedbythecontrol. The abovementioned two methods are mainly used for saving database of templates. Varianttyped templates are saved in the manner of binaryformatted arrays, which are quite difficult for languages such as PB, VB, etc. Method
14 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

EncodeTemplate can transfer Varianttyped codes into strings, and method DecodeTemplatecantransferstringtypedcodesintocodesofVarianttyped.Here, we should pay attention that the template length will be increased after the templatevariableBASE64codehasbeentransferredintothestring. 4.2.21functionEncodeTemplate1(ASour)AsString Transfer the Variant template Asour used by the control into the template string,whichisBASE64formatted. 4.2.22functionDecodeTemplate1(constASourAsString)AsVariant Transfer the template string Asour which is BASE64 formatted into the Varianttypedtemplateusedbythecontrol. 4.2.23SubBeginCapture() Set the current fingerprint device to begin to capture images, and method CancelCapturecanbeusedtoforbidthecurrentdevicetocaptureimages. 4.2.24SubEndEngine() ReleasethefingerprintdeviceinitializedbymethodInitEngine,andmethod InitEngine canbeutilizedtoreinitializefingerprintdevice. 4.2.25functionVerFingerFromStr(regTemplateStrAsString,verTemplateStr AsString,AdoLearningAsBoolean,byvalAregFeatureChangedAsBoolean) AsBoolean Compare whether the feature templates for two pieces of fingerprints are matched or not. Here, regTemplateStr(BASE64 formatted string) represents fingerprint registration feature templates, verTemplateStr(BASE64 formatted string)expressesfingerprintverificationfeaturetemplateswhicharecollectedon
ZKSoftwareInc. http://www.zksoftware.com 15

ZKSoftwareInc. ZKFingerSDK4.0 Manual

the spot, AdoLearning denotes whether to carry out fingerprint feature template learningupdatingornot,andAregFeatureChangedshowswhethertheregistration template regTemplate has been changed or not. True will be returned when the two pieces of fingerprints are matched, and False will be returned when not matched. 4.2.26functionGetTemplateAsString() AsString Get the fingerprint Verify or Register template, which is obtained most recently. It may be called on OnCapture OnEnroll, OnCaptureToFile, OnEnrollToFileevent.ThereturnresultisBASE64formattedtemplatestring. 4.2.27functionControlSensor(ACode AsLongAValue AsLong)AsLong IfACode=11,controlthegreenlight,ifits12,controltheredlight,ifits13, controlthebeep. IfAValue=1,lightson,ifits0,lightsoff.

4.2.2Methodfor 1:NControl Interface


4.2.28 Function AddRegTemplateToFPCacheDB(fpcHandle As Long, FPID AsLong,pRegTemplate)AsLong Add the fingerprint registration template pRegTemplate to the fingerprint sensors highspeed buffer fpcHandle, and FPID is the label for adding registrationtemplate. 4.2.29 Function AddRegTemplateFileToFPCacheDB(fpcHandle As Long, FPID AsLong,pRegTemplateFileAsString)AsLong Addthepreviousfingerprintregistrationfeaturetemplateinthefilespecified by pRegTemplateFile to the fingerprint identification highspeed buffer
16 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

fpcHandleandFPID, which must be equal to or larger than 0, is the label for addingtheregistrationtemplate.Ifthereturnvalueis1,itindicatesasuccess,and 0indicatesafailure. 4.2.30Function CreateFPCacheDBAsLong Create the fingerprint identification highspeed buffer. As for 1:N identification, this function must be first called so as to obtain the fingerprint identificationbufferhandle. Explanation: ZKFinger1:1lowspeedverificationspeedisratherslow(about30msforPII 233), so fingerprints of 1:1 genre added to the buffer by calling the function AddRegTemplateToFPCache can not be too many otherwise, the verification speed will be impacted. By IsOneToOneTemplate, we can judge whether the fingerprintisof 1:1typeornot. At the same time multiple buffers can be created for group comparison and others. 4.2.31SubFlushFPImages() Deletebufferimagesinthecurrentfingerprintdevice. 4.2.32SubFreeFPCacheDB(fpcHandleAsLong) Release the fingerprint identification highspeed buffer. FpcHandle is the fingerprint identification buffer handle obtained by calling the function CreateFPCacheDB.

ZKSoftwareInc.

http://www.zksoftware.com

17

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.33 Function IdentificationFromFileInFPCacheDB (fpcHandle As Long, pVerTemplateFile As String, Byval Score As Long, Byval ProcessedFPNumber AsLong)AsLong Compare all the registration templates in the fingerprint identification highspeedbufferfpcHandlewiththe fingerprint verificationtemplateinthe file pVerTemplateFile.ScorerepresentsthehighestscoreamongProcessedFPNumber times of verification, and ProcessedFPNumber shows the times of verification. Thefingerprintlabelwillbereturnediftheidentificationissuccessful,and1is returnediffailed. Note: During the process of identification, if the verification score is equal to or larger than the property Threshold, then it is considered that the verification is successful.In thiscase, no further verification willbecarriedout fortherest of fingerprint registration templates in the buffer, and this function returns the fingerprint label for the fingerprint registration template which is matched successfully If all the scores for the verification between all the fingerprint verification templatesandallthefingerprintidentificationtemplateslocatedinthefingerprint identification highspeed buffer, but meanwhile the highest score for the verificationisequaltoorlargerthanScore,thenitisviewedthattheverification is matched successfully. In this case, this function will return the label of the fingerprintregistrationtemplatewhich getsthehighestverificationscore,whose recommendedvalueis9. 4.2.34 Function IdentificationInFPCacheDB (fpcHandle As Long, pVerTemplate, ByvalScore AsLong,ByvalProcessedFPNumber AsLong)As Long Compare all the registration templates in the fingerprint identification highspeed buffer fpcHandle with the fingerprint verification template
18 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

pVerTemplate. Score represents the highest score among ProcessedFPNumber times of verification, and ProcessedFPNumber shows the times of verification. Thefingerprintlabelwillbereturnediftheidentificationissuccessful,and1is returnediffailed. Note: During the process of identification, if the verification score is equal to or larger than the property Threshold, then it is considered that the verification is successful.In thiscase, no further verification willbecarriedout fortherest of fingerprint registration templates in the buffer, and this function returns the fingerprint label for the fingerprint registration template which is matched successfully If all the scores for the verification between all the fingerprint verification templatesandallthefingerprintidentificationtemplateslocatedinthefingerprint identification highspeed buffer, but meanwhile the highest score for the verificationisequaltoorlargerthanScore,thenitisviewedthattheverification is matched successfully. In this case, this function will return the label of the fingerprintregistrationtemplatewhich getsthehighestverificationscore,whose recommendedvalueis9. 4.2.35FunctionIsOneToOneTemplate(ATemplate)AsBoolean Judge the current fingerprint feature templateAtemplate is a ZKFinger 1:1 lowspeedverificationfeaturetemplate. 4.2.36FunctionModifyTemplate(byvalAtemplate,AOneToOneAsBoolean) AsBoolean AccordingAoneToOnemodifythefingerprintfeaturetemplateAtemplateto a ZKFinger 1:1 lowspeed verification feature template or a highspeed verificationfeaturetemplate.

ZKSoftwareInc.

http://www.zksoftware.com

19

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.37FunctionRemoveRegTemplateFromFPCacheDB(fpcHandleAsLong, FPIDAsLong) AsLong DeletethefingerprintregistrationtemplatewhichislabeledasFPIDlocated inthefingerprintidentificationhighspeedbufferfpcHandle.Ifthereturnvalueis 1,itindicatesasuccess,and0representsafailure. 4.2.38SubCancelCapture() Forbid the current fingerprint device to capture images, and the method BeginCapture canbeusedforthefingerprintdevicetobegintocaptureimages. 4.2.39 Function AddRegTemplateStrToFPCacheDB(fpcHandle As Long, FPID AsLong, ARegTemplateStrAsString)AsLong Addtheprevious fingerprintregistration featuretemplateARegTemplateStr which is BASE64 code string to the fingerprint identification highspeed buffer fpcHandleandFPID, which must be equal to or larger than 0, is the label for addingtheregistrationtemplate.Ifthereturnvalueis1,itindicatesasuccess,and 0indicatesafailure. 4.2.40 Function IdentificationFromStrInFPCacheDB (fpcHandle As Long, AVerTemplateStr As String, Byval Score As Long, Byval ProcessedFPNumber AsLong)AsLong Compare all the registration templates in the fingerprint identification highspeed buffer fpcHandle with the verification template AverTemplateStr, whichisBASE64codeformattedstring.Scorerepresentsthehighestscoreamong ProcessedFPNumber times of verification, and ProcessedFPNumber shows the timesofverification.Thefingerprintlabelwillbereturnediftheidentificationis successful,and 1isreturnediffailed. Note:
20 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

During the process of identification, if the verification score is equal to or larger than the property Threshold, then it is considered that the verification is successful.In thiscase, no further verification willbecarriedout fortherest of fingerprint registration templates in the buffer, and this function returns the fingerprint label for the fingerprint registration template which is matched successfully If all the scores for the verification between all the fingerprint verification templatesandallthefingerprintidentificationtemplateslocatedinthefingerprint identification highspeed buffer, but meanwhile the highest score for the verificationisequaltoorlargerthanScore,thenitisviewedthattheverification is matched successfully. In this case, this function will return the label of the fingerprintregistrationtemplatewhich getsthehighestverificationscore,whose recommendedvalueis9. 4.2.41 Sub SetAutoIdentifyPara(AutoIndentify As Boolean, fpcHandle As Long,Score AsLong) Set the Internal Recognition Style AutoIndentify, fingerprint identification highspeed buffer fpcHandle and the SCORE which the same as the parameter Score of IdentificationFromInFPCacheDBmethod.ReferOnCaptureevent.

4.2.3Methodsfor 1:1Control Interface


4.2.42FunctionAddBitmap(BitmapHandleAsOLE_HANDLE,ValidRectX1 AsLong,ValidRectY1AsLong,ValidRectX2AsLong,ValidRectY2AsLong, DPIAsLong)AsBoolean Use the bitmap specified by BitmapHandle for registration or verification. Thesefourparameters, ValidRectX1ValidRectY1ValidRectX2ValidRectY2 definetheeffectiveareafortheimage.Ifthedefinedimageareaisinvalid,then thewholetargetedimagewillbecaptured,andDPIdefinestheresolutionofthe
ZKSoftwareInc. http://www.zksoftware.com 21

ZKSoftwareInc. ZKFingerSDK4.0 Manual

image. 4.2.43FunctionAddImageFile(FileNameAsString,DPIAsLong)AsBoolean Usethefingerprintimagefile(supportingsuchformatsasBMP,TIFF,JPG, GIF) specified by FileName for registration or verification. DPI defines the resolutionoftheimage.

4.2.4MethodsforExternalImageFileInterface

4.2.44FunctionAddBitmap(BitmapHandleAsOLE_HANDLE,ValidRectX1 AsLong,ValidRectY1AsLong,ValidRectX2AsLong,ValidRectY2AsLong, DPIAsLong)AsBoolean Enroll or verify the user with bitmap specified by BitmapHandle. The parameters ValidRectX1, ValidRectY1, ValidRectX2 and ValidRectY2 specify theeffectiveareaoftheimage.Ifthespecifiedareaisinvalid,thewholeimageis effective.DPIspecifiestheresolutionoftheimage. 4.2.45FunctionAddImageFile(FileNameAsString,DPIAsLong)AsBoolean Enroll or verify the user with fingerprint image (supports BMP or JPG format)specifiedby FileName.DPIspecifiestheresolutionoftheimage. Before using these two functions, if the image is used for fingerprint enrollment, use BeginEnroll first and then set EnrollCount. Otherwise, if the imageisused for verification, useBeginCapturefirstandthenset AddImageFile or AddBitmap,andthesystemwilltriggerOnEnrollorOnCapture event. The two external image interfaces are not support in ZKFinger 5.0 Lite Version.

22

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.5 MethodsforExternalInterface
4.2.46Function CreateFPCacheDBEx AsInteger The functionissimilarto CreateFPCacheDB,exceptthatitcancreateboth 9.0and10.0fingerprintidentificationhighspeed cache atthesametime. 4.2.47SubFreeFPCacheDBEx(fpcHandle AsLong) ThefunctionissimilartoFreeFPCacheDB,exceptthatitcancreateboth9.0 and10.0fingerprintidentificationhighspeedcacheatthesametime. 4.2.48FunctionAddRegTemplateStrToFPCacheDBEx(fpcHandleAsInteger, FPIDAsInteger, ARegTemplateStr AsStirng,ARegTemplate10Str AsString) AsLong The functionissimilartoAddRegTemplateStrToFPCacheDB,exceptthatit can create both 9.0 and 10.0 fingerprint identification high speed cache at the sametime. 4.2.49 Function AddRegTemplateToFPCacheDBEx (fpcHandle As Integer, FPID AsInteger,pRegTemplate,pRegTemplate10) AsLong ThefunctionissimilartoAddRegTemplateStrToFPCacheDBEx,exceptthat ituses Variantfingerprinttemplate. 4.2.50Function AddRegTemplateFileToFPCacheDBEx(fpcHandleAsInteger, FPIDAsInteger,pRegTemplateFileAsString,pRegTemplateFile10AsString) AsLong ThefunctionissimilartoAddRegTemplateStrToFPCacheDBEx,exceptthat itwillupload thefingerprinttemplatefromthefile.
ZKSoftwareInc. http://www.zksoftware.com 23

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.2.51 Function RemoveRegTemplateFromFPCacheDBEx(fpcHandle As Long,FPIDAsLong) AsLong The function is similar to RemoveRegTemplateFromFPCacheDB, except thatitwillclearboth9.0and10.0fingerprinttemplate atthesametime. 4.2.52FunctionGetTemplateEx(AFPEngineVersion AsString) As Variant The function is similar to GetTemplate, except that it can import AFPEngineVersionparametertoget9.0or10.0fingerprinttemplate. IfAFPEngineVersionis9,getthe9.0fingerprinttemplate.Ifits10,getthe 10.0fingerprinttemplate. 4.2.53 Function GetTemplateAsStringEx(AFPEngineVersion As String) As String The function is similar to GetTemplateEx, except that the return template string isconvertedto BASE64format.

4.3Events 4.3.1OnCapture(ActionResult ASBoolean,ATemplate)


When the AutoIdentify (set by SetAutoIdentifyPara method) value set to False, Capture the fingerprint verification template Atemplate for verification. ActionResult=trueindicatesthatthefingerprinttemplateisobtainedsuccessfully, andFalserepresentsafailure. When the AutoIdentify (set by SetAutoIdentifyPara method) value set to True, the ATemplate is fingerprint identification result. The result is onedimension arraypleasereferthefollowingdefinition ATemplate[0] IDvalue,IDvalue is1iffailed ATemplate[1] returnonetomany recognition score
24 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

ATemplate[2] theprocessedfingerprintnumberfor1:N ATemplate[3] theprocessedfingerprintnumberfor1:1

4.3.2OnCaptureToFile(ActionResult ASBoolean)
Obtainthefingerprintverificationtemplateforverification,andthetemplate is saved in a file, whose name is set by the property VerTplFileName. ActionResult=trueindicatesthatthefingerprinttemplateisobtainedsuccessfully, andFalserepresentsafailure.

4.3.3OnEnroll(ActionResult ASBoolean,ATemplate)
Callthiseventwhentheuserfingerprintregistrationcompletes.ActionResult =true indicates that the registration is successful, and the fingerprint feature templatecanbecapturedbyusingpTemplatepropertyFalserepresentsafailure.

4.3.4OnEnrollToFile(ActionResult ASBoolean)
Callthiseventwhentheuserfingerprintregistrationcompletes.ActionResult =true indicates that the registration is successful, and the fingerprint feature template is saved in a file, whose name is set as the propertyRegTplFileName Falserepresentsafailure.

4.3.5 OnFeatureInfo(AQualityAsLong)
Obtainthefingerprintsinitialfeature.Qualityrepresentsthequality of this fingerprintsfeature,anditmayhavethefollowingvalues: 0:Goodfingerprintfeature 1:Insufficientfeaturepoints 2: Other reasons resulting in the incapability to capture the fingerprint feature.

ZKSoftwareInc.

http://www.zksoftware.com

25

ZKSoftwareInc. ZKFingerSDK4.0 Manual

4.3.6OnImageReceived(byval AImageValid AsBoolean)


Callthiseventifthedevicereceivesthefingerprintimage,orthefingerprint imageisaddedbyAddImageFileandAddBitmap.AimageValid indicateswhether to extract a template or not. If it is set as False, the system will not extract templatesafterithascapturedthefingerprintimage.

4.3.7 OnFingerTouching
Callthiseventwhenpressfingeronsensor.

4.3.8 OnFingerLeaving
Callthiseventwhenremovedfingerfromsensor.

26

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

5. TaskFlowDescription
IsRegister=True BeginEnroll Image OnImageReceived

OnFeatureInfo

No 14 Yes OnEnroll OnEnrollToFile Template

ZKSoftwareInc.

http://www.zksoftware.com

27

ZKSoftwareInc. ZKFingerSDK4.0 Manual

IsRegister=False BeginCapture

OnImageReceived

Image

OnFeatureInfo

Template OnCapture OnCaptureToFile

28

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

TaskFlowDescription: AfterthefingerprintSensorhasenteredtheworkingstatus,callBeginEnroll toenterfingerprintregistrationstatus,andcallBeginCapturetoenterfingerprint verification status. The working mode is based on event motivation, and events canbetriggeredinanorderasshownintheabovesketchgraph. Itisusuallyneededtopressthesamefingerfor1to4timesforfingerprint registration, and a fingerprint registration template will be obtained after the identificationsystemintegratesthem. Thetimes numberneededfor pressingthe finger at registration is defined by the control property EnrollCount, and events OnEnroll and OnEnrollToFile will be triggered if the defined times number is arrivedat. At fingerprint verification, events OnCaptureand OnCaptureToFile will be triggered after pressing the finger. At this moment, VerFinger or IdentificationInFPCacheDBcanbecalledtocarryout1:1or1:Nverification. It should be paid attention to that event OnFeatureInfo will be triggered when a finger is being pressed for each time. If the fingerprint template of the finger which is being pressed is not qualified, this time the image captured is invalid,andthefingershouldberepressed.

ZKSoftwareInc.

http://www.zksoftware.com

29

ZKSoftwareInc. ZKFingerSDK4.0 Manual

6. CommonQuestionsDescription
6.1Thedifferencebetween1:1and1:NControl
1 1 Control is mainly used for development projects which need 1:1 verification, and usually the currentlyverified clients PIN should be entered in advance,andafterthatoneorseveraltemplateshe/shehasregisteredareobtained forverificationwhile1:NControldoesnotrequireenteringtheclientsPIN,and this client can be identified by the clients fingerprint out of the registered fingerprinttemplates. 1:1 Control mainly aims to achieve a high pass rate and a relatively high accuracy rate 1:N Control is principally designed to obtain a high verification speedandarelativelyhighaccuracyrate. 1 1Controlsmaximumtemplatelengthisonly310bytes,whilethatfor1:N Control is 1152 bytes. Because 1:N requires highspeed verification, and a remarkably low RAR, relatively more template feature information should be saved.

6.2ReadinandReadoutFingerprintTemplatesinDatabase
In SDK fingerprint templates are saved and called by means of Variant variable.Whatisstoredisonedimensionbinaryarrays,whichcannotbereadin andreadoutbySQLsentencesasforcharacterstrings.Therearetwosolutions: 1 Method EncodeTemplate and method DecodeTemplate are able to make BASE64 code transfer between Variant variables and string variables. One point,whichshouldbeimproved,isthataftervariablesbeingtransferredinto strings,thetemplatelengthwillbeincreasedbyabout1/3. 2 Directly work on Variant variables. An example is shown as the following: Delphi,CB
30 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual procedureTFPProcess.SaveFPData(AQuery:TADOQueryAFingerID:IntegerAFPData: OleVariant) var pData:PChar begin withAQuery dobegin Close SQL.Clear SQL.Add('SELECT*FROMzkFingerPrintWHEREFingerID='+IntToStr(AFingerID)) Open ifIsEmptythen Append else Edit FieldByName('FingerID').Value:=AFingerID //Savethefingerprinttemplate withTBlobStream(CreateBlobStream(FieldByName('Template'),bmWrite))dobegin pData:=VarArrayLock(AFPData) try Write(pData^,VarArrayHighBound(AFPData,1)VarArrayLowBound(AFPData,1)+1) finally VarArrayUnlock(AFPData) end Free end Post Close end end procedure TFPProcess.GetFPData(AQuery: TADOQuery AFingerID: Integer var AFPData: ZKSoftwareInc. http://www.zksoftware.com 31

ZKSoftwareInc. ZKFingerSDK4.0 Manual OleVariant) var pData:PChar begin withAQuerydobegin Close SQL.Clear SQL.Add('SELECT*FROMzkFingerPrintWHEREFingerID='+IntToStr(AFingerID)) Open //readoutdata ifnotIsEmptythen withTBlobStream(CreateBlobStream(FieldByName('Template'),bmRead))dobegin AFPData:=VarArrayCreate([0,Size+1],varByte) pData:=VarArrayLock(AFPData) try Read(pData^,Size) finally VarArrayUnlock(AFPData) end Free end Close end end

For other languages, please refer to the technical discussion forum on www.zksoftware.com.

6.3SoftwareDoggleandAuthorizedLicenseDocumentation
The running of SDK requires software Doggle and authorized license
32 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

documentation. The difference between software Doggle and authorized license documentation is that software Doggle is independent of the fingerprint Sensor which is being used, while authorized license documentation corresponds to the fingerprintSensorwhichisbeingused.Thatis,softwareDogglecanbeusedwith all fingerprint Sensors, but authorized license documentation can only be used withtheauthorizedfingerprintSensor. Thisitemhasbeencanceledinthe 4.0 Version

6.4Theuseof1:Nhighspeedbuffer
For1:Nverification,itisneededtocategorizethetemplatestobeverifiedat thesametime,inordertoachievehigherspeed,SDKneedstocreatememoryfirst, andthenaddregisteredfingerprintstothememory.Infact,highspeedbufferisa kind of memory. In practice, firstly we need to create the buffer by the method CreateFPCahceDB, and then by methods such as, AddRegTemplateToFPCahceDBRemoveRegTemplateFromFPCacheDB and so on,toaddordeletefingerprintregistrationtemplates,andlastlyfreethememory bythemethodFreeFPCacheDB. Wecancreate multiple highspeedbuffersatthesametimesoastorealize suchfunctionsasgroupingquery.

6.5Usingfingerprintimages
In projects where 1:1 Control is used, quite often you are required to save fingerprintimages, orto obtain plane fingerprint imagesdirectlyfromscanning. Thus, 1:1 Control SDK provides methods, which are capable of capturing fingerprintregistrationtemplates directlyfrom plane fingerprintimages,suchas AddImageFile. But what should be paid attention to is that images should be capturedcorrectly,andtheirresolutionmustnotbelessthan 350DPI. Note:SDKin Lite Versiondosenotprovidethesemethods.

ZKSoftwareInc.

http://www.zksoftware.com

33

ZKSoftwareInc. ZKFingerSDK4.0 Manual

6.6Settingfingerprintidentificationthreshold
In1:1Control,therecommendationvalue forthe property Thresholdis10. Inthiscase,FARisabout0.01%,andFRRrangesfrom1.5%to2%. In1:1Control,therecommendationvalue forthe property Thresholdis10. In this case, FAR is about 0.001%, FRR is about 3%, and the recommendation valuefortheproperty OneToOneThreshold is10.

6.7 Solutions to lowquality fingerprint templates for 1:N identification


In1:NControl,atfingerprintregistration,thesystemwillautomaticallylabel fingerprints by categories in terms of quality, and save them in templates. TemplatesoflowqualityaretitledasZKFinger1:1lowspeedverificationfeature templates,and1:1inthistermisaconceptquitedifferentfrom1:1in1:1Control, whichshouldnotbemixedup.Registrationtemplatesofhighqualityarelabeled asZKFingerhighspeedverificationfeaturetemplates. In normal application environments, about 5% of the total fingerprint registrationtemplateswillbelabeledaslowspeedverificationfeaturetemplates. ThemethodIsOneToOneTemplatecanbeusedtojudgewhetherthetemplateisa lowspeed verificationfeaturetemplate,andthe methodModifyTemplatecanbe usedtomodifygroupinglabelswhichdistinguishtemplatesofhighqualityfrom thoseoflowqualityforcefully. ZKFinger1:1lowspeedverificationisquiteslow(about30msforPII233), thus not too many lowspeed verification feature templates can be added to the highspeed buffer by the method AddRegTemplateToFPCache otherwise the verificationspeedwillbeimpacted. In 1:N Control, fingerprint identification by IdentificationInFPCacheDB is carriedoutinthewayasshowninthefollowingflowchart:

34

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual IdentificationFromFileInFPCacheDB (fpcHandle As Long, pVerTemplateFile As String, ByvalScore AsLong,ByvalProcessedFPNumber AsLong)AsLong

Verification Templates

ClassifyTemplates

Searchforfingerprintsinthehighspeedbufferaccordingtogroupingquery

VerifyFingerprints

Yes
VerificationScore>=Threshold

N Verification Y

AllVerification

Y
Highestscoreforquestion fingerprints>=Score

Saveinto questionable fingerprintslist

ZKSoftwareInc.

http://www.zksoftware.com

35

ZKSoftwareInc. ZKFingerSDK4.0 Manual

1:1lowspeedverifyquestionablefingerprints

Verificationresult FALSE N
All

TRUE

Y 1:1verifylowspeedfingerprintsinthehighspeedbuffer

TRUE Verification Y N
All

Yes Verificatio

Return

Verification

36

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

6.8ConnectingmultiplefingerprintSensors
In the window one control responds to one fingerprint Sensor. Different fingerprint Sensors can be set by using SensorIndex, and the number of fingerprintSensorscanbeobtainedbythepropertySensorCount.Ifyouwantto differentiate the fingerprint Sensors from each other, utilize the property SensorSN,whichisuniqueforeachfingerprintSensor. ZK6000Fingerprintsensoronlyisaollowedtooneunitconnectwith

ZKSoftwareInc.

http://www.zksoftware.com

37

ZKSoftwareInc. ZKFingerSDK4.0 Manual

7. DEMO ProgramDescription
HereVBsampleprogramof1:NControlisusedfordescription(whichissimilar tothatof1:1Control). At first it must be confirmed that 1:N Control has been registered, Doggle has beenpluggedintotheparallelportorauthorizeddocumentationhasbeencopied to the path of the current application program, and the fingerprint Sensor driver hasbeeninstalled. RunDemoinVB,andthefollowingformwillappear:

ThenameofthewindowfingerprintcontrolisZKFPEngX1. At first, press Initialize button to initialize the fingerprint Sensor. If the initialization is successful, a prompt message which indicates a success will be shown.
38 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

Theinitializationcodeisasthefollowing: IfZKFPEngX1.InitEngine=0Then MessageBox0,"Initializationsucceeds","Promptmessage",0 StatusBar.Caption="FingerprintSensorconnection" TextSensorCount.Text=ZKFPEngX1.SensorCount&"" TextSensorIndex.Text=ZKFPEngX1.SensorIndex&"" TextSensorSN.Text=ZKFPEngX1.SensorSN cmdInit.Enabled=False FMatchType=0 EndIf Press the Register Fingerprint button to enter the fingerprint registration status, andthecodeislikethethis: IfTrim(TextFingerName.Text)=""Then MessageBox0,"Pleaseenterthefingerprintnamelabel! ","False",0 ExitSub EndIf ZKFPEngX1.BeginEnroll StatusBar.Caption="Startregistration" Atthismoment,thefingerprintSensorisunderthestatusofregistration,and every time pressing a finger will trigger events OnImageReceived (display images)andOnFeatureInfojudgewhetherthefingerprintisqualifiedornot. Pressingafingerforoneorfoureffectivetimes(notcountingtimesifthefingeris unqualified) will trigger events OnEnroll and OnEnrollToFile, and the specific pressingtimes numberissetbythepropertyEnrollCount.OnEnrollcodeislike
ZKSoftwareInc. http://www.zksoftware.com 39

ZKSoftwareInc. ZKFingerSDK4.0 Manual

this: DimiAsLong IfNotActionResultThen MessageBox0,"Fingerprintregistrationfailed! ","Warning",0 Else MessageBox0,"Fingerprintregistrationsucceeded!","Message",0 FRegTemplate=ATemplate ZKFPEngX1.SaveTemplate"c:\fingerprint.tpl",ATemplate ZKFPEngX1.AddRegTemplateFileToFPCacheDB fpcHandle, FingerCount, "c:\fingerprint.tpl" ReDimPreserveFFingerNames(FingerCount+1) FFingerNames(FingerCount)=TextFingerName.Text FingerCount=FingerCount+1 EndIf Parameter ActionResult=True indicates successful registration, and parameter Atemplate represents the fingerprint registration template otherwise the registrationfailed. PressthebuttonVerify Fingerprintto enterthestatus offingerprint verification, and the fingerprint Sensor will be under the status of verification. Pressing a fingerwilltriggereventsOnImageReceived(displayimages)andOnFeatureInfo judgewhetherthe fingerisqualified ornot,andaqualifiedfingerprintwill trigger events OnCapture and OnCaptureToFile verify by the verification method. OnCapturecodeislikethis: DimfiAsLong,iAsLong
40 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

DimScoreAsLong,ProcessNumAsLong DimRegChangedAsBoolean StatusBar.Caption="capturefingerprintfeature" IfFMatchType=1Then '1:1 If ZKFPEngX1.VerFinger(FRegTemplate, ATemplate, False, RegChanged) Then MessageBox 0, "Fingerprint verification succeeded! ", "Prompt message",0 Else MessageBox0,"Fingerprintverificationfailed!","Promptmessage",0 EndIf 'IfZKFPEngX1.VerRegFingerFile("c:\fingerprint.tpl",ATemplate)Then ' MessageBox 0, "File fingerprint verification succeeded! ", "Prompt message",0 'Else ' MessageBox 0, "File fingerprint verification failed! ", "Prompt message",0 'EndIf ElseIfFMatchType=2Then'1:N Score=8 fi=ZKFPEngX1.IdentificationInFPCacheDB(fpcHandle,ATemplate,Score, ProcessNum) Iffi=1Then MessageBox0,"Fingerprintverificationfailed","Promptmessage",0 Else MessageBox 0, "Fingerprint verification succeeded Name=" & FFingerNames(fi) & " Score = " & Score & " Processed Number = " & ProcessNum,"Promptinformation",0 EndIf
ZKSoftwareInc. http://www.zksoftware.com 41

ZKSoftwareInc. ZKFingerSDK4.0 Manual

EndIf OnImageReceivedeventcode(displayfingerprintimages): ZKFPEngX1.PrintImageAt hDC, FrameCommands.Width + 6, FrameCommands.Top,ZKFPEngX1.ImageWidth,ZKFPEngX1.ImageHeight OnFeatureInfo eventcode(judgefingerprintquality): DimsTempAsString sTemp="" IfZKFPEngX1.IsRegisterThen sTemp = "registration status: press again" & ZKFPEngX1.EnrollIndex & "timefingerprint!" EndIf sTemp=sTemp&"fingerprintquality" IfAQuality<>0Then sTemp=sTemp&"Unqualified:"&AQuality Else sTemp=sTemp&"Qualified" EndIf StatusBar.Caption=sTemp Press Doggle Read Memory button, and the controls version information will be shown in the corresponding edition box if no information is shown, it meansthatDogglehasnotbeenpluggedin,orthedriverhasnotbeeninstalled.

42

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

8. ZKFingerSDKDevelopmentLicenseAgreement
All these who order and use the products (including, but not limited to, ZKFinger development kit, discs, CDROM, Doggle and Development Manual) provided by Beijing Zhongkong Automation System Inc., Ltd (or its subsidiary company, as Zksoftware Inc. mentioned below), the subsidiary of ZkSoftware Inc., Ltd, are subject to the terms and conditions set up in this agreement (ZKFingeristheregisteredtrademarkofthenucleartechnologyofZKSoftware). If you open the sealed kit consisting of ZKFinger Development Kit and Development Manual, or you install the belowmentioned software or use this software on your computer, or you are using any products of ZKSoftware, you willacceptthisagreementwithoutoption,andatthesametime,youmustobserve thetermsandconditionssetupinthisagreement. If you do not want to be subject to the terms and conditions set up in this agreement,youmustreturnZKFingerDevelopmentKitandDevelopmentManual to ZKSoftware Inc. immediately (at least within 7 days after you have received thisinformationkit),andyourwillreceivetherefund. 1 TitleandProperty Thisisalicenseagreementbutnotasalesagreement.Youareauthorizedby ZKSoftwareInc.here,thusfromanindividualoracompanyjuridicalperson,you receivethelicense(thelicensetotransferandtherighttoresellaresubjecttothe termsandconditions clearlyset up hereinto)to usethe products ofZKSoftware Inc, which is not exclusive and can not be transferred, and these licenses and rightsarestatedbythetermsandconditionsherein. Thesoftware components of ZKSoftwaresproducts,includingany editing, correcting,modifying,addingorupdatingZKSoftwareDevelopmentManual,any other files or user guide related to the software, will reserve the property for
ZKSoftwareInc. http://www.zksoftware.com 43

ZKSoftwareInc. ZKFingerSDK4.0 Manual

ZKSoftwareInc. All software (including, but not limited to: task products derived from the software codes and the second part of this agreement) consist of or express the pertinent intelligence property (including, but not limited to: copyright, commercialsecrets,trademarks,andsoon),andZKSoftwareInc.sDevelopment Manualandanyotherfilesare,andshouldbeonlypossessedbyZKSoftwareInc. Under any laws and rules, any content in this agreement does not construct the waveringofZKSoftwareInc.sintelligenceproperty 2 License Youareallowedwithlimittousethesoftware,whichmustbestatedbythis agreementandmustalsobeexecutablefileformatted. a) Youcaninstallandusethesoftwareinthecomputerinyouroffice. b) Youareallowedtohavecopies ofthesoftwareofreasonable number, whichcannotsurpassthree. c) You can connect and copy the software to your computers programs, onlyforthepurposeofthedevelopmentofthiscomputersprograms,as described in ZKSoftware Inc.s Development Manual but, any parts connected and copied to another computer is viewed as derived products,andthetermsandconditionsinthisagreementshouldalsobe observed. 3 LicenseTransfer Accordingtothedescriptioninthesecondpart,inyoucomputersprograms, afteryoupluginthesoftware,youmayintegratethepluggedinsoftwareandthe softwarepurchasedfromZKSoftwareInc.,andthentransferthelicensetoaseller or a user in accordance with the terms and conditions in this agreement. Before transferringthelicense,youshouldaddtheclausesrelatedtoguaranty,waiverand
44 ZKSoftwareInc. http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

licensestatedbyZKSoftwareInc.inthisagreementtothenewagreementsigned byyouandthesellerortheuser,oryouprovidetheabovementionedclausesto thesellerortheuserdirectly. 4 Forbiddance YouaregrantedsomerightsasclarifiedintheaboveSection1andSection2, butyoushouldagreenotto: d) Use, modify , insert or transfer the software or any other products of ZKSoftware Inc. (including, but not limited to, test modules), except authorizationspecificallystatedinthisagreement e) Sell,transferlicense,andlease,transfer, mortgage orshareyourrights toothersunderthisagreement f) Modify, disassemble,decompile,reverseengine, delete oraddoriginal codesofthissoftwareorcodesintendedtodeducethissoftware g) Putthissoftwareonaserver,sothatothersareabletoobtainitfroma publicnetwork h) Usethebackupofthissoftwareordocumentationcopies(orletothers havethiskindofcopies)foranypurpose,exceptreplacingtheoriginal copywhichhasbeenbrokenorhasmalfunctions. If you are a member of the European Union, this agreement will not influence your legitimate rights specified in the Manual on Computer Software Protection authorized by EC Committee. If you are looking for any information relatedtothisguide,youmaycontactZKSoftwareInc. 5 LimitedGuaranty ZKSoftwareInc.makesatwelvemonthguaranty(guarantyperiod),that: i) Whenthesoftwareisdeliveredtoyou,andifyourcomputershardware
ZKSoftwareInc. http://www.zksoftware.com 45

ZKSoftwareInc. ZKFingerSDK4.0 Manual

environment and the operation system are matched with the designed ones,thesoftwarewillworkinthemannerasdescribedinDevelopment Manual. j) Magnetic media which solidify this software do not have remarkable flawsintermsofthematerialandthetechnique. k) ZKFinger Doggle dose not have remarkable flaws in terms of the materialandthetechnique. 6 Nonguaranty ZKSoftware Inc. dose not guarantee that all its products will meet your requirementsanddose not guaranteethatits operation willnotbeinterrupted or noerrorwilltakeplace. To the degree within the range of laws, in particular ZKSoftware Inc. dose not undertake any special guaranty not set out herein, and any connotative guaranty. The guaranties include, but are not limited to, connotative guaranty relatedwithsalesandforanyspecificpurpose. 7 PreparationLimit If the guaranty is violated, the only responsibility ZKSoftware Inc. should takeistoreplaceorrepairtheproduct.Ifanyproductoritspartsdonotmeetthe abovementioned limited guaranty requirements, free service will be provided. Repair Guaranty Claim Form must be filled in during the guaranty period, or persuasive proof, in addition to the Repair Guaranty Claim Form should be submittedtoZKSoftwareInc.onthedaywhenthemalfunctionisdiscovered.All the products should be returned to ZKSoftware Inc. from the place where the products were purchased, and the returning side should be responsible for the transportation and guaranty fees. The product and its parts should be returned togetherwithyourreceiptcopies.

46

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

8 Removingindirectdamages The both parties admit of the inherent intricacy of this software and the productsofZKSoftwareInc.,andacknowledgethatthesoftwareandtheproducts cannotbeperfectwithoutanyfalse.ZKSoftwareInc.willnotberesponsiblefor any cost or damage (including indirect and specific damages) brought to you, your seller, your software users, or the third party, caused by any behavior and conductwhetheritisviolationandnegligenceornotaccordingthisagreementor anyotherspecifications.Thecostanddamagesinclude,butarenotlimitedto:any commercial cost, beneficial damage, the damage or loss of data, or the loss of files, due to the usage of this software, or products of ZKSoftware, or your software programs, even ZKSoftware Inc. has been recommended about the possibilityofthedamages. 9 ResponsibilityLimit Undercertaincircumstances, inspite ofthe termsandconditionsset outin thisagreement, if ZKSoftwareInc.isstillresponsible forthe damage causedby any malfunction and disqualification of the product, then the total responsibility feeforeachproductwhichhasproblems,willnotsurpassthefeepaidbyyouto ZKSoftwareInc.forthepurchaseoftheproduct. 10 Nootherguaranty

Exceptwhathasbeenspecifiedherein,ZKSoftwareInc.willnotprovideany other specific or connotative guaranty, and will not be responsible for any products described in the prelude of this agreement, including their quality, performance,andtheflexibilityforaspecificpurpose. 11 Termination
ZKSoftwareInc. http://www.zksoftware.com 47

ZKSoftwareInc. ZKFingerSDK4.0 Manual

If you can not abide by the terms and conditions of this agreement, your license and this agreement will be terminated. In this case, according to this agreementofZKSoftwareInc.: l) Thelicenseauthorizedbythisagreementtoyouwillbeinvalid,andyou cannotcontinuetouse(includingtransferringthelicense)thelicensed softwareandanyotherlicensedproducts. m) You should immediately return to ZKSoftware Inc. any tangible properties and their copies which represent ZKSoftware Inc.s intelligence property, or you should delete the electronic forms of this typeofinformation. Inspiteoftheterminationofthisagreement,Clause1456789 10and11willpreserve. 12 DominationLawandJurisdictionRight ThisagreementisunderthesupervisionofthelawsofthePeoplesRepublic of China, and only Chinese courts possess the jurisdiction right for any conflict anddiscordasidefromthisagreement.

ZKAutomationSystemLtd.,Inc.,Beijing

48

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

9. SoftwareAftersaleService
Thanks for yourattentionto our products.Fortheconvenience that weare capable of providing you with our perfect service, please log on our technical forum,andcompleteregistrationinformation,sothatwecancontactyouintime. Weareavailablefrom9:00a.m.to6p.m.fromMondaytoFriday,thereare personsondutyonSaturdays,andstatutoryholidaysandSundaysareexcluded. You calls or emails are welcome at any time, and we are ready to solve problemsforyou. Before you are prepared to call us, please first confirm that you have completed all operation procedures according to the manual, and that you have closeanyotherapplicationprogramsyouhaveused. Wecanbecontactat: Address:Room1008,PacificInternationalBuilding,No.106,ZhichunRoad, ZhongguancunDistrict,Beijing ZipCode:100086 Telephone:0105151801051518011515180125151801351518014 Fax:01051518015 Emailsupport@biometric.com.cn If you have got any technical problems concerning this set of products, pleasepreparethefollowinginformation,sothatweareabletoremoveproblems foryouwithintheshortestperiod: 1 Softwarename 2 Theconfigurationofyourcomputer(includingthebrand,computertype, CPU,EMSmemory,discdriver,mainboard brand,andsoon). 3 Windows95/98/NT4.0/2000/XPoranyotherenvironments 4 anyapplicationprogramsyouareusing
ZKSoftwareInc. http://www.zksoftware.com 49

ZKSoftwareInc. ZKFingerSDK4.0 Manual

5 Detaileddescriptionabouttheproblem You are welcomed to log on our website: www.zksoftware.comvisit our technicalforumandsubmityourquestionsandsuggestion.Wewilltrytoprovide youwithsatisfactoryrepliesinthesoonestmanner.

50

ZKSoftwareInc.

http://www.zksoftware.com

ZKSoftwareInc. ZKFingerSDK4.0 Manual

10.ContactUs
ZKSoftwareScience(Beijing)SalesandServiceCenter
Address: Room 1008, Pacific International Building, No. 16, Zhichun Road, Zhongguancun,Beijing,ZipCode:100086 Telephone01051518010515180115151801251518013 Fax01051518015

ZkSoftware(Shanghai)TechnicalSupportCenter
th Address:5 floor,No.1407,TibetSouthRoad,ShanghaiZipCode:200011 Telephone:0215307199663123327 Fax:02153071262

ZkSoftware(Shenzhen)TechinicalSupportCenter
th Address: 4 floor, Tongye Building, Langang Section, Xiameilin Road, Futian District,Shenzhen ZipCode:518000 Telephone:075539383123938310 Fax:07553938310

ZkSoftware(Lanzhou)TechnicalSupportCenter
Address:No.189,KejiStreet,LanzhouCity,GansuProvince ZipCode: 730000 TelephoneExchange:0931827744582668398262345Fax:09318279546

ZKSoftwareInc.

http://www.zksoftware.com

51

S-ar putea să vă placă și