Geoff Chappell, Software Analyst
This function tells whether a particular processor feature is available for use in kernel mode.
BOOLEAN ExIsProcessorFeaturePresent (ULONG ProcessorFeature);
The ProcessorFeature argument selects the feature to test.
The function returns a non-zero value to indicate that the given feature is usable, else it returns FALSE.
The ExIsProcessorFeaturePresent function is exported by name from the kernel in version 4.0 and higher.
The ExIsProcessorFeaturePresent function is documented. It was not, however, documented immediately. Though it is declared in NTDDK.H from the Device Driver Kit (DDK) for Windows NT 4.0, documentation of it is not known before the DDK for Windows 2000.
In principle, the ProcessorFeature argument can be any of whatever values Microsoft ever defines for various processor features. In practice, these values are 0-based indexes into the ProcessorFeatures array in the KUSER_SHARED_DATA. If ProcessorFeature is too large for the array, the function returns FALSE. Ordinarily, what the function returns is directly from the array.
The only known variation is that when ProcessorFeature is either PF_MMX_INSTRUCTIONS_AVAILABLE or PF_3DNOW_INSTRUCTIONS_AVAILABLE, the x64 builds before version 6.2 ignore the array and instead return FALSE. Although the MMX instruction set must be present, else Windows will have stopped with the UNSUPPORTED_PROCESSOR bug check, these instructions are not to be used.