Yes it does. But in my case i have already made a successful call to Activate. Here is a sample code:
m_GenuineOptions.nLength = sizeof(GENUINE_OPTIONS);
m_GenuineOptions.nDaysBetweenChecks = 0; // this is 0 for debug purposes - i want to check data on every //run until i am sure that everything is tested properly
m_GenuineOptions.nGraceDaysOnInetErr = 1;
m_GenuineOptions.flags = TA_USER;
hr = IsGenuineEx(TA_GUID, &m_GenuineOptions);
if (hr == TA_OK || hr == TA_E_FEATURES_CHANGED || hr == TA_E_INET || hr == TA_E_INET_DELAYED) { ... }
else { uint32_t utrialDays = 0;
hr = UseTrial(TA_SYSTEM);
if (hr == TA_OK) { hr = TrialDaysRemaining(TA_GUID, &utrialDays);
i... }
else printf("Failed to UseTrial: hr = %d\n", hr);
if (hr == TA_OK) { // try to activate hr = Activate();
if (hr == TA_OK) { ... } } }