You should call IsGenuineEx() at both steps and everything will work as expected.
We're working on License Management for an application that runs as a service on a device.
Things are a bit complicated by the fact that the service needs to start before the network connection is up and running, so we are not able to check with the License server at that point. Also, once the service is up and running, there are technical challenges regarding being able to stop the service at that point if it fails a License check at that time.
To get around this we're proposing an approach where we would:
1) At startup time when the network connection is not available, use IsGenuine() to check that the license key is valid and has not been revoked. If this test is passed, then instruct the service to start.
2) Later, when the network connection is available, a second check is done using IsGenuineEx() to check with the server to see if the License Key has been revoked.
For this to work though, it would mean that when the IsGenuineEx() check in step 2 fails due to a revoked license it records this locally, so that after the next reboot, when the IsGenuine() test is done in step 1 it is able to know that the current license has been revoked. (again, it will not have access to a network connection at this stage).
Grateful if you could advise on this.
You should call IsGenuineEx() at both steps and everything will work as expected.