This behavior occurs because the first credential provider that calls the ICredentialProvider::GetCredentialCount method is designated as the default credential provider and is used to provide the logon interface.
Consider the following scenario: A user tries to log on to a Microsoft Windows Vista-based computer that has multiple credential providers. You expect the logon interface to be provided by a certain credential provider. Instead, the user sees a logon interface from an unexpected credential provider.
For example, when a user tries to log on to the computer, the user sees the logon interface from a fingerprint scanner credential provider instead of the logon interface from a smart card credential provider.
This behavior is by design.