Beispiel #1
0
 private static extern WinBioErrorCode Verify(
     WinBioSessionHandle sessionHandle,
     IntPtr identity,
     WinBioBiometricSubType subFactor,
     out int unitId,
     out bool match,
     out WinBioRejectDetail rejectDetail);
Beispiel #2
0
 private extern static WinBioErrorCode OpenSession(
     WinBioBiometricType factor,
     WinBioPoolType poolType,
     WinBioSessionFlag flags,
     int[] unitArray,
     int unitCount,
     IntPtr databaseId,
     out WinBioSessionHandle sessionHandle);
Beispiel #3
0
        public static int LocateSensor(WinBioSessionHandle sessionHandle)
        {
            int unitId;
            var code = LocateSensor(sessionHandle, out unitId);

            WinBioException.ThrowOnError(code, "WinBioLocateSensor failed");
            return(unitId);
        }
Beispiel #4
0
 private extern static WinBioErrorCode CaptureSample(
     WinBioSessionHandle sessionHandle,
     WinBioBirPurpose purpose,
     WinBioBirDataFlags flags,
     out int unitId,
     out IntPtr sample,
     out int sampleSize,
     out WinBioRejectDetail rejectDetail);
Beispiel #5
0
 private extern static WinBioErrorCode OpenSession(
     WinBioBiometricType factor,
     WinBioPoolType poolType,
     WinBioSessionFlag flags,
     int[] unitArray,
     int unitCount,
     [MarshalAs(UnmanagedType.LPStruct)]
     Guid databaseId,
     out WinBioSessionHandle sessionHandle);
Beispiel #6
0
 public extern static WinBioErrorCode ControlUnit(
     WinBioSessionHandle sessionHandle,
     int unitId,
     WinBioComponentType componentType,
     uint controlCode,
     byte[] sendBuffer,
     int sendBufferSize,
     IntPtr receiveBuffer,
     int receiveBufferSize,
     ref int receiveDataSize,
     ref uint statusCode);
Beispiel #7
0
        public static void CloseSession(WinBioSessionHandle sessionHandle)
        {
            if (!sessionHandle.IsValid)
            {
                return;
            }
            var code = WinBioCloseSession(sessionHandle);

            WinBioException.ThrowOnError(code, "WinBioOpenSession failed");
            sessionHandle.Invalidate();
        }
Beispiel #8
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);
        }
Beispiel #9
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();
            }
        }
Beispiel #10
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);
        }
Beispiel #11
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();
            }
        }
Beispiel #12
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);
        }
Beispiel #13
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);
        }
Beispiel #14
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);
        }
Beispiel #15
0
 private extern static WinBioErrorCode WinBioCloseSession(WinBioSessionHandle sessionHandle);
Beispiel #16
0
 public static extern WinBioErrorCode ReleaseFocus(WinBioSessionHandle sessionHandle);
Beispiel #17
0
 public static extern WinBioErrorCode AcquireFocus(WinBioSessionHandle sessionHandle);
Beispiel #18
0
 public static extern WinBioErrorCode LogonIdentifiedUser(WinBioSessionHandle sessionHandle);
Beispiel #19
0
        public static void EnrollBegin(WinBioSessionHandle sessionHandle, WinBioBiometricSubType subType, int unitId)
        {
            var code = WinBioEnrollBegin(sessionHandle, subType, unitId);

            WinBioException.ThrowOnError(code, "WinBioEnrollBegin failed");
        }
Beispiel #20
0
        public static void Cancel(WinBioSessionHandle sessionHandle)
        {
            var code = WinBioCancel(sessionHandle);

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

            WinBioException.ThrowOnError(code, "WinBioEnrollDiscard failed");
        }
Beispiel #22
0
 private extern static WinBioErrorCode WinBioEnrollDiscard(WinBioSessionHandle sessionHandle);
Beispiel #23
0
 private extern static WinBioErrorCode EnrollCommit(WinBioSessionHandle sessionHandle, IntPtr identity, out bool isNewTemplate);
Beispiel #24
0
 private extern static WinBioErrorCode LocateSensor(WinBioSessionHandle sessionHandle, out int unitId);
Beispiel #25
0
 public extern static WinBioErrorCode EnrollCapture(WinBioSessionHandle sessionHandle, out WinBioRejectDetail rejectDetail);
Beispiel #26
0
 private extern static WinBioErrorCode EnumEnrollments(
     WinBioSessionHandle sessionHandle,
     int unitId,
     IntPtr identity,
     out IntPtr subFactorArray,
     out int subFactorCount);
Beispiel #27
0
 private extern static WinBioErrorCode WinBioCancel(WinBioSessionHandle sessionHandle);
Beispiel #28
0
 private static extern WinBioErrorCode DeleteTemplate(
     WinBioSessionHandle sessionHandle,
     int unitId,
     IntPtr identity,
     WinBioBiometricSubType subFactor);
Beispiel #29
0
 private extern static WinBioErrorCode Identify(
     WinBioSessionHandle sessionHandle,
     out int unitId,
     IntPtr identity,
     out WinBioBiometricSubType subFactor,
     out WinBioRejectDetail rejectDetail);
Beispiel #30
0
 private extern static WinBioErrorCode WinBioEnrollBegin(WinBioSessionHandle sessionHandle, WinBioBiometricSubType subType, int unitId);