예제 #1
0
 void print(UInt32 idx, BS2UserBlobEx userblob)
 {
     Console.WriteLine(">>>> User idx[{4, 10}] id[{0}] numCards[{1}] numFingers[{2}] numFaces[{3}] name[{5}], startTime[{6}], endTime[{7}], numJobs[{8}]",
                       Encoding.UTF8.GetString(userblob.user.userID).TrimEnd('\0'),
                       userblob.user.numCards,
                       userblob.user.numFingers,
                       userblob.user.numFaces,
                       idx,
                       Encoding.UTF8.GetString(userblob.name).TrimEnd('\0'),
                       userblob.setting.startTime,
                       userblob.setting.endTime,
                       userblob.job.numJobs
                       );
 }
예제 #2
0
        public void listUserDatasEx(IntPtr sdkContext, UInt32 deviceID, bool isMasterDevice)
        {
            IntPtr outUidObjs = IntPtr.Zero;
            UInt32 numUserIds = 0;

            API.IsAcceptableUserID cbIsAcceptableUserID = new API.IsAcceptableUserID(cbAcceptableUserID); // we don't need to user id filtering

            Console.WriteLine("Enter the path of exported usb directory which you want to get.");
            Console.Write(">>>> ");
            string strDir = Console.ReadLine();

            if (!Directory.Exists(strDir))
            {
                Console.WriteLine("Invalid path");
                return;
            }

            Console.WriteLine("Trying to get user list.");
            BS2ErrorCode result = (BS2ErrorCode)API.BS2_GetUserListFromDir(sdkContext, strDir, out outUidObjs, out numUserIds, cbIsAcceptableUserID);

            if (result == BS2ErrorCode.BS_SDK_SUCCESS)
            {
                if (numUserIds > 0)
                {
                    IntPtr          curUidObjs = outUidObjs;
                    BS2UserBlobEx[] userBlobs  = new BS2UserBlobEx[USER_PAGE_SIZE];
                    byte[]          bufUserID  = new byte[BS2Environment.BS2_USER_ID_SIZE];

                    Console.WriteLine("Number of users : ({0}).", numUserIds);
                    for (UInt32 idx = 0; idx < numUserIds;)
                    {
                        UInt32 available = numUserIds - idx;
                        if (available > USER_PAGE_SIZE)
                        {
                            available = USER_PAGE_SIZE;
                        }

                        result = (BS2ErrorCode)API.BS2_GetUserDatasExFromDir(sdkContext, strDir, curUidObjs, available, userBlobs, (UInt32)BS2UserMaskEnum.DATA | (UInt32)BS2UserMaskEnum.NAME);
                        if (result == BS2ErrorCode.BS_SDK_SUCCESS)
                        {
                            for (UInt32 loop = 0; loop < available; ++loop)
                            {
                                print(idx + loop, userBlobs[loop]);
                                if (userBlobs[loop].cardObjs != IntPtr.Zero)
                                {
                                    API.BS2_ReleaseObject(userBlobs[loop].cardObjs);
                                }
                                if (userBlobs[loop].fingerObjs != IntPtr.Zero)
                                {
                                    API.BS2_ReleaseObject(userBlobs[loop].fingerObjs);
                                }
                                if (userBlobs[loop].faceObjs != IntPtr.Zero)
                                {
                                    API.BS2_ReleaseObject(userBlobs[loop].faceObjs);
                                }
                            }

                            idx        += available;
                            curUidObjs += (int)available * BS2Environment.BS2_USER_ID_SIZE;
                        }
                        else
                        {
                            Console.WriteLine("Got error({0}).", result);
                            break;
                        }
                    }

                    API.BS2_ReleaseObject(outUidObjs);
                }
            }
            else
            {
                Console.WriteLine("Got error({0}).", result);
                return;
            }
        }