BS2_USER_MASK maskWantUpdate = BS2_USER_MASK_SETTING | BS2_USER_MASK_SETTING_EX | BS2_USER_MASK_JOB; int sdkResult = BS_SDK_SUCCESS; BS2UserFaceExBlob userBlob = { 0, }; BS2User& user = userBlob.user; BS2UserSetting& setting = userBlob.setting; BS2UserSettingEx& settingEx = userBlob.settingEx; setting.fingerAuthMode = BS2_AUTH_MODE_NONE; setting.cardAuthMode = BS2_AUTH_MODE_NONE; setting.idAuthMode = BS2_AUTH_MODE_NONE; settingEx.faceAuthMode = BS2_AUTH_MODE_NONE; settingEx.fingerprintAuthMode = BS2_AUTH_MODE_NONE; settingEx.cardAuthMode = BS2_AUTH_MODE_NONE; settingEx.idAuthMode = BS2_AUTH_MODE_NONE; if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobUserID(user))) return sdkResult; if ((maskWantUpdate & BS2_USER_MASK_SETTING) == BS2_USER_MASK_SETTING) { if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobExpiryDate(setting))) return sdkResult; if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthMode(setting, deviceInfo, deviceInfoEx))) return sdkResult; if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobSecurityLevel(setting))) return sdkResult; } if ((maskWantUpdate & BS2_USER_MASK_SETTING_EX) == BS2_USER_MASK_SETTING_EX) { if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthModeEx(settingEx, deviceInfo, deviceInfoEx))) return sdkResult; } // ... if ((maskWantUpdate & BS2_USER_MASK_JOB) == BS2_USER_MASK_JOB) { msg.str(""); msg << "Do you want to change/delete #" << user.userID << " jobs? (0:Change, 1:Delete)"; uint32_t selected = Utility::getInput(msg.str()); switch (selected) { case 0: if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobJobCode(userBlob.job))) return sdkResult; user.infoMask |= BS2_USER_INFO_MASK_JOB_CODE; break; case 1: default: maskWantUpdate &= ~BS2_USER_MASK_JOB; break; } } else { // Keep user.infoMask |= BS2_USER_INFO_MASK_JOB_CODE; } // ... user.numCards = 0; if ((maskWantUpdate & BS2_USER_MASK_CARD) == BS2_USER_MASK_CARD) { msg.str(""); msg << "Do you want to change/delete #" << user.userID << " cards? (0:Change, 1:Delete)"; uint32_t selected = Utility::getInput(msg.str()); switch (selected) { case 0: if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobCardInfo(&userBlob.cardObjs, user.numCards, id, deviceInfo, deviceInfoEx))) return sdkResult; user.infoMask |= BS2_USER_INFO_MASK_CARD; break; case 1: default: // unmasking and numCards = 0; maskWantUpdate &= ~BS2_USER_MASK_CARD; break; } } else { // Keep user.infoMask |= BS2_USER_INFO_MASK_CARD; } sdkResult = BS2_PartialUpdateUserFaceEx(context, id, maskWantUpdate, &userBlob, 1); if (BS_SDK_SUCCESS != sdkResult) { TRACE("BS2_PartialUpdateUserFaceEx call failed: %d", sdkResult); return sdkResult; }