Example #1
0
 private static extern WinBioErrorCode Verify(
     WinBioSessionHandle sessionHandle,
     IntPtr identity,
     WinBioBiometricSubType subFactor,
     out int unitId,
     out bool match,
     out WinBioRejectDetail rejectDetail);
Example #2
0
 private extern static WinBioErrorCode CaptureSample(
     WinBioSessionHandle sessionHandle,
     WinBioBirPurpose purpose,
     WinBioBirDataFlags flags,
     out int unitId,
     out IntPtr sample,
     out int sampleSize,
     out WinBioRejectDetail rejectDetail);
Example #3
0
        public static int CaptureSample(
            WinBioSessionHandle sessionHandle,
            WinBioBirPurpose purpose,
            WinBioBirDataFlags flags,
            out int sampleSize,
            out WinBioRejectDetail rejectDetail)
        {
            int    unitId;
            IntPtr pointer;
            var    code = CaptureSample(sessionHandle, purpose, flags, out unitId, out pointer, out sampleSize, out rejectDetail);

            WinBioException.ThrowOnError(code, "WinBioCaptureSample failed");
            //TODO: parse WINBIO_BIR structure at pointer
            Free(pointer);
            return(unitId);
        }
Example #4
0
        public static int CaptureSample(
            WinBioSessionHandle sessionHandle,
            WinBioBirPurpose purpose,
            WinBioBirDataFlags flags,
            out WinBioRejectDetail rejectDetail,
            out Bitmap fingerprintImage)
        {
            int    unitId;
            int    sampleSize;
            IntPtr samplePointer;
            var    code = CaptureSample(sessionHandle, purpose, flags, out unitId, out samplePointer, out sampleSize, out rejectDetail);

            WinBioException.ThrowOnError(code, "WinBioCaptureSample failed");
            WinBioBir sample = (WinBioBir)Marshal.PtrToStructure(samplePointer, typeof(WinBioBir));

            if (sample.StandardDataBlock.Size == 0)
            {
                throw new WinBioException("Your fingerprint sensor doesn't support StandardDataBlock");
            }

            IntPtr birHeaderPointer  = samplePointer + sample.HeaderBlock.Offset;
            IntPtr ansiHeaderPointer = samplePointer + sample.StandardDataBlock.Offset;
            IntPtr ansiRecordPointer = ansiHeaderPointer + Marshal.SizeOf(typeof(WinBioBdbAnsi381Header));

            WinBioBdbAnsi381Record ansiRecord = (WinBioBdbAnsi381Record)Marshal.PtrToStructure(
                ansiRecordPointer, typeof(WinBioBdbAnsi381Record));

            Size   imageSize         = new Size(ansiRecord.HorizontalLineLength, ansiRecord.VerticalLineLength);
            IntPtr firstPixelPointer = ansiRecordPointer + Marshal.SizeOf(typeof(WinBioBdbAnsi381Record));

            fingerprintImage = new Bitmap(imageSize.Width, imageSize.Height, 1 * imageSize.Width, PixelFormat.Format8bppIndexed, firstPixelPointer);
            ColorPalette palette = fingerprintImage.Palette;

            for (int i = 0; i <= 255; i++)
            {
                palette.Entries[i] = Color.FromArgb(i, i, i);
            }
            fingerprintImage.Palette = palette;

            Free(samplePointer);

            return(unitId);
        }
Example #5
0
        public static bool Verify(
            WinBioSessionHandle sessionHandle,
            WinBioIdentity identity,
            WinBioBiometricSubType subFactor,
            out int unitId,
            out WinBioRejectDetail rejectDetail)
        {
            bool match;
            var  handle = GCHandle.Alloc(identity.GetBytes(), GCHandleType.Pinned);

            try
            {
                var code = Verify(sessionHandle, handle.AddrOfPinnedObject(), subFactor, out unitId, out match, out rejectDetail);
                WinBioException.ThrowOnError(code, "WinBioVerify failed");
            }
            finally
            {
                handle.Free();
            }
            return(match);
        }
Example #6
0
        public static int Identify(
            WinBioSessionHandle sessionHandle,
            out WinBioIdentity identity,
            out WinBioBiometricSubType subFactor,
            out WinBioRejectDetail rejectDetail)
        {
            int unitId;
            var bytes  = new byte[WinBioIdentity.Size];
            var handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);

            try
            {
                var code = Identify(sessionHandle, out unitId, handle.AddrOfPinnedObject(), out subFactor, out rejectDetail);
                WinBioException.ThrowOnError(code, "WinBioIdentify failed");
            }
            finally
            {
                handle.Free();
            }
            identity = new WinBioIdentity(bytes);
            return(unitId);
        }
 public AuthenticationFailedEventArgs(WinBioError error, WinBioRejectDetail rejectDetail)
 {
     Error = error;
     RejectDetail = rejectDetail;
 }
Example #8
0
 public extern static WinBioErrorCode EnrollCapture(WinBioSessionHandle sessionHandle, out WinBioRejectDetail rejectDetail);
Example #9
0
 private extern static WinBioErrorCode Identify(
     WinBioSessionHandle sessionHandle,
     out int unitId,
     IntPtr identity,
     out WinBioBiometricSubType subFactor,
     out WinBioRejectDetail rejectDetail);
Example #10
0
 public AuthenticationFailedEventArgs(WinBioError error, WinBioRejectDetail rejectDetail)
 {
     Error        = error;
     RejectDetail = rejectDetail;
 }