So we added some logging, here it is:1/8/2019 2:20:46 PM : TA_PDetsFromByteArray: pdets="<pdets>", pdets_len=8108, result => 01/8/2019 2:20:46 PM : TA_GetHandle: product_guid="xxxxxxxxxxxxxxxxxxxxxx.yyyyyyyy", result => 331/8/2019 2:20:46 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:46 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:46 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:46 PM : TA_GetPKey: handle=33, lpValueStr="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX", cchValue=256, result => 01/8/2019 2:20:46 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:49 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:49 PM : TA_GetPKey: handle=33, lpValueStr="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX", cchValue=256, result => 01/8/2019 2:20:49 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:20:57 PM : TA_CheckAndSavePKey: productKey="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX", flags=1, result => 11/8/2019 2:20:58 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:21:36 PM : TA_CheckAndSavePKey: productKey="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX", flags=1, result => 11/8/2019 2:21:36 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:21:37 PM : TA_IsActivated: handle=33, result => 171/8/2019 2:21:37 PM : TA_IsActivated: handle=33, result => 17
As you can see TA_IsActivated returns 17 which means the customer appears to be in a VM, but TA_CheckAndSavePKey does not have this error code so just returns 1 (TA_FAIL). Our implementation misses the 17 because if TA_IsActivated fails we don't check why we just continue assuming the product is not activated. Questions:1. Would it make sense to return 17 from TA_CheckAndSavePKey?2. I'm not sure how the Windows Hyper-V works, but this is the second customer we've had where simply having it turned on throws up error 17. Is it actually true that this already means Windows is in a VM, or is the system simply being cautious in this case?Regards,Robin