Inheritance: System.Exception
Example #1
0
        public static int LocateSensor(WinBioSessionHandle sessionHandle)
        {
            int unitId;
            var code = LocateSensor(sessionHandle, out unitId);

            WinBioException.ThrowOnError(code, "WinBioLocateSensor failed");
            return(unitId);
        }
Example #2
0
        public static WinBioSessionHandle OpenSession(WinBioBiometricType factor, WinBioPoolType poolType, WinBioSessionFlag flags, int[] unitArray, Guid databaseId)
        {
            WinBioSessionHandle sessionHandle;
            var code = OpenSession(factor, poolType, flags, unitArray, unitArray.Length, databaseId, out sessionHandle);

            WinBioException.ThrowOnError(code, "WinBioOpenSession failed");
            return(sessionHandle);
        }
Example #3
0
        public static WinBioStorageSchema[] EnumDatabases(WinBioBiometricType factor)
        {
            IntPtr pointer;
            int    count;
            var    code = EnumDatabases(factor, out pointer, out count);

            WinBioException.ThrowOnError(code, "WinBioEnumDatabases failed");
            return(MarshalArray <WinBioStorageSchema>(pointer, count));
        }
Example #4
0
        public static WinBioBspSchema[] EnumServiceProviders(WinBioBiometricType factor)
        {
            IntPtr bspSchemaArray;
            int    bspCount;
            var    code = EnumServiceProviders(factor, out bspSchemaArray, out bspCount);

            WinBioException.ThrowOnError(code, "WinBioEnumServiceProviders failed");
            return(MarshalArray <WinBioBspSchema>(bspSchemaArray, bspCount));
        }
Example #5
0
        public static void CloseSession(WinBioSessionHandle sessionHandle)
        {
            if (!sessionHandle.IsValid)
            {
                return;
            }
            var code = WinBioCloseSession(sessionHandle);

            WinBioException.ThrowOnError(code, "WinBioOpenSession failed");
            sessionHandle.Invalidate();
        }
Example #6
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 #7
0
        public static WinBioBiometricSubType[] EnumEnrollments(WinBioSessionHandle sessionHandle, int unitId, WinBioIdentity identity)
        {
            var handle = GCHandle.Alloc(identity.GetBytes(), GCHandleType.Pinned);

            try
            {
                IntPtr subFactorArray;
                int    subFactorCount;
                var    code = EnumEnrollments(sessionHandle, unitId, handle.AddrOfPinnedObject(), out subFactorArray, out subFactorCount);
                WinBioException.ThrowOnError(code, "WinBioEnumEnrollments failed");
                return(MarshalArray <WinBioBiometricSubType>(subFactorArray, subFactorCount));
            }
            finally
            {
                handle.Free();
            }
        }
Example #8
0
        public static void DeleteTemplate(
            WinBioSessionHandle sessionHandle,
            int unitId,
            WinBioIdentity identity,
            WinBioBiometricSubType subFactor)
        {
            var handle = GCHandle.Alloc(identity.GetBytes(), GCHandleType.Pinned);

            try
            {
                var code = DeleteTemplate(sessionHandle, unitId, handle.AddrOfPinnedObject(), subFactor);
                WinBioException.ThrowOnError(code, "WinBioDeleteTemplate failed");
            }
            finally
            {
                handle.Free();
            }
        }
Example #9
0
        public static bool EnrollCommit(WinBioSessionHandle sessionHandle, out WinBioIdentity identity)
        {
            bool isNewTemplate;
            var  bytes  = new byte[WinBioIdentity.Size];
            var  handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);

            try
            {
                var code = EnrollCommit(sessionHandle, handle.AddrOfPinnedObject(), out isNewTemplate);
                WinBioException.ThrowOnError(code, "WinBioEnrollCommit failed");
            }
            finally
            {
                handle.Free();
            }
            identity = new WinBioIdentity(bytes);
            return(isNewTemplate);
        }
Example #10
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 #11
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 #12
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);
        }
Example #13
0
        public static void Cancel(WinBioSessionHandle sessionHandle)
        {
            var code = WinBioCancel(sessionHandle);

            WinBioException.ThrowOnError(code, "WinBioCancel failed");
        }
Example #14
0
        public static void EnrollDiscard(WinBioSessionHandle sessionHandle)
        {
            var code = WinBioEnrollDiscard(sessionHandle);

            WinBioException.ThrowOnError(code, "WinBioEnrollDiscard failed");
        }
Example #15
0
        public static void EnrollBegin(WinBioSessionHandle sessionHandle, WinBioBiometricSubType subType, int unitId)
        {
            var code = WinBioEnrollBegin(sessionHandle, subType, unitId);

            WinBioException.ThrowOnError(code, "WinBioEnrollBegin failed");
        }
Example #16
0
 protected void Log(WinBioException exception)
 {
     Log(exception.Message);
 }