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