IsGenuine grace period behavior

I have a few questions about how IsGenuine(uint daysBetweenChecks, uint graceDaysOnInetErr) behaves.

1. If the grace period has expired, does the call to IsGenuine(checkDays, graceDays) deactivate the computer?2. When does the grace period start? Is it the first day they opened the app when they were already outside of the daysBetweenChecks (with the internet disconnected)? Or is the grace period calculated from the original call to IsGenuine?3. If IsGenuine(check, graceperiod) throws a DateTimeException will the computer be deactivated?4. If I call IsGenuine(30, 7) and then call IsGenuins(45, 14) right after does the check days and grace period days get updated?

I also have a question about this scenario:I call IsGenuine(30, 7) every time the app is launched. After the first run, the customer waits to open the app again until day 38 and they have the internet disconnected. 1. Would they get a NotGenuine result?2. Do they get deactivated on that computer?

1. If the grace period has expired, does the call to IsGenuine(checkDays, graceDays) deactivate the computer?

Yes, it acts as if the computer is not activated.

2. When does the grace period start? Is it the first day they opened the app when they were already outside of the daysBetweenChecks (with the internet disconnected)? Or is the grace period calculated from the original call to IsGenuine?

The "start" is the last time your app verified or re-verified with the activations servers.

3. If IsGenuine(check, graceperiod) throws a DateTimeException will the computer be deactivated?

No, tell the customer to fix their date/time/timezone.

4. If I call IsGenuine(30, 7) and then call IsGenuins(45, 14) right after does the check days and grace period days get updated?

No. The "last checked" time is when TurboActivate last talked to the activation servers and got a valid response.

I call IsGenuine(30, 7) every time the app is launched. After the first run, the customer waits to open the app again until day 38 and they have the internet disconnected. 1. Would they get a NotGenuine result?

Yes. However, you can add an if statement that checks IsActivated() and if they are activated then show a dialog like "Couldn't reverify with the activation servers, click this button to recheck now", then call "IsGenuine()" (with no paramereters ) to reverify immediately when the customer clicks the button.

2. Do they get deactivated on that computer?

It depends on what you mean. No, the activation data is still on the computer, but IsGenuineEx() says they're not activated because they need to reverify with the servers (which is why IsActivated() will say they're still activated).

Thank you very much for your help Sam! That clarifies things a lot.

I have one more question1. Does IsActivated() only return false if the key was revoked or if the activation file is not on the computer any more (it got deleted or it was never there)?

1. Does IsActivated() only return false if the key was revoked or if the activation file is not on the computer any more (it got deleted or it was never there)?

Yes, if the computer is revoked or deactivated remotely, or deactivated locally (using the TurboActivate Deactivate() function), or if they were never activated in the first place then IsActivated() will return false (or TA_FAIL in C++)