It's data of the device, you don't store anything in your data. Those devices are handling the Windows Login/Authentication as alternative to Password or PIN. It's not your business to care about how that's done. That's all there is to it.
To know who's logged in Windows call ID(), that's resulting in Domain # Username, or use GETENV("USERNAME") and if you need the domain GETENV("USERDOMAIN") to get these infos separately.
An own login can be useful on devices running on a general account for all users or if users don't use the Windows sessions and login/logout on the OS level. We implemented an own user database at times of NT, when there was no multiple user sessions in Windows.
Other cases for an own login are a web application, where user authentication from home networks or multiple domains don't cross over to your webserver.
If you really want to use fingerprint or smart card readers or any such devices for your own application only, not on the OS level, I bet you can also do that, but the communication to the device and its answes will not be as protected as the Windows login screen. Remember or notice for the first time: Windows Login screen is a protected mode of windows in Session 0 without any normal process getting at eg keyboard buffer during the password entry. Only hardware keyloggers can intercept user input there. But when a Windows user session already runs such devices are not more secure, as all only depends on the device telling you the user it detects and when that communication can be rerouted and intercepted and changed, if the user identification can simply be overridden, the device will give you no better security. To be more concrete: It's no problem to create a DLL with similar name as the devices own driver DLL (for example) and offer the same interface (same methods), but instead of addressing the device simply answer function calls with the desired answers (yes, authentication succeeds).
Bye, Olaf.