Why is there no useful information in the RetailInfo class?
A customer was looking to obtain processor information and found that the Windows Runtime
RetailInfo class claims to provide all sorts of information, including
ProcessorDescription. But when they try to read it, they found that the
RetailInfo.Properties was blank. What’s going on?
RetailInfo class is purely marketing information. The idea is that a store takes a floor sample and puts it into retail demo mode, specifying values for the various
RetailInfo properties. It then sets up the system on the sales floor in attract mode. The attract mode program can use the information to promote the system. “Get this 〈model〉 computer, with 〈amount〉 of RAM for only 〈price〉! Ask any sales associate for more information.”
Since this is marketing, there is no requirement that the information provided by the sales department in any way resembles reality.
Programs can query whether the system is running in Retail Demo mode and tailor their behavior accordingly. For example, a productivity app or game should turn off in-app paid upgrades. a painting app could start with a half-painted picture instead of a blank canvas. A program that requires you create an account in order to use it to configure matching hardware could transform itself into an advertisement for that hardware.
If the system is not in retail demo mode, then the
IsDemoModeEnabled property is
false, and the
Properties are empty.
Okay, but back to the original question. If you want to know what processor the system has, you can start by calling
GetNativeSystemInfo to determine the architecture, and then you can call the
IsProcessorFeaturePresent function to see which features are supported by the current processor. You can also use the
__cpuid intrinsic to extract CPU manufacturer details.