ExpGetNtProductTypeFromLicenseValue

CHAR __fastcall ExpGetNtProductTypeFromLicenseValue(INT64 a1, INT64 a2, WCHAR a3){
  struct _UNICODE_STRING DestinationString; 
  UINT64 Type; 
  UINT64 ResultDataSize; 
  _NT_PRODUCT_TYPE Data; 
  HIDWORD(Type) = HIDWORD(a1);
  LODWORD(Type) = 0;
  LODWORD(ResultDataSize) = 0;
  Data = 0;
  DestinationString = 0i64;
  RtlInitUnicodeString(&DestinationString, L"Kernel-ProductType", a3);
  if( (int)NtQueryLicenseValue(&DestinationString, &Type, &Data, 4ui64, &ResultDataSize) < 0
    || (_DWORD)Type != 4
    || (_DWORD)ResultDataSize != 4
    || !Data
    || (unsigned int)Data > NtProductServer )
  {
    return 0;
  }
  KUSER_SHARED_DATA.NtProductType = Data;
  return 1;
}

Referenced by:

ExpWatchProductTypeInitialization