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

            WinBioException.ThrowOnError(code, "WinBioLocateSensor failed");
            return(unitId);
        }
Ejemplo n.º 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);
Ejemplo n.º 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);
Ejemplo n.º 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);
Ejemplo n.º 7
0
        public static void CloseSession(WinBioSessionHandle sessionHandle)
        {
            if (!sessionHandle.IsValid)
            {
                return;
            }
            var code = WinBioCloseSession(sessionHandle);

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

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

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

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