Evaluates the KeFeatureFlag bits for the current CPU.
74{
81
82
84
85
87
88
90
91
93
94
96
97
112
121
122
124 {
125
127 VersionInfo.Ebx.Bits.MaximumAddressableIdsForLogicalProcessors;
129 {
130
132 }
133 }
134 else
135 {
136
138 }
139
140
142 {
143
146
148 }
149
150
152 {
153
158
164 }
165
166
168 {
169
174
177 }
178
179
181 if ((extendedFunction.
MaxLeaf & 0xffffff00) == 0x80000000)
182 {
183
185 {
186
189
190
194
195
197 {
198 if (ExtSig.
Amd.Edx.Bits.ThreeDNow) FeatureBits |=
KF_3DNOW;
199 }
200 }
201 }
202
203
205 {
207
208
210 {
215 {
217 }
218 }
219
220
222 {
223
226 if (ProcBasedCtls.
Bits.Allowed1.ActivateSecondaryControls)
227 {
228
231 if (ProcBasedCtls2.
Bits.Allowed1.EPT)
233 }
234 }
235 }
237 {
240
241
242 if ((extendedFunction.
MaxLeaf & 0xffffff00) == 0x80000000)
243 {
244
246 {
247
251 }
252 }
253 }
254
255
256 return FeatureBits;
257}
#define MSR_IA32_VMX_PROCBASED_CTLS
#define MSR_IA32_VMX_PROCBASED_CTLS2
#define CPUID_AMD_SVM_FEATURES
#define CPUID_EXTENDED_FUNCTION
#define CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS
#define CPUID_VERSION_INFO
#define CPUID_EXTENDED_STATE
#define CPUID_THERMAL_POWER_MANAGEMENT
#define CPUID_EXTENDED_STATE_SUB_LEAF
#define CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_SUB_LEAF_INFO
#define CPUID_EXTENDED_CPU_SIG
OSVERSIONINFOW VersionInfo
PPC_QUAL void __cpuid(int CPUInfo[], const int InfoType)
PPC_QUAL unsigned long long __readmsr()
__INTRIN_INLINE void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
BOOLEAN KiSMTProcessorsPresent
UCHAR LogicalProcessorsPerPhysicalProcessor
struct CPUID_AMD_SVM_FEATURES_EDX::@4540 Bits
CPUID_AMD_SVM_FEATURES_EDX Edx
struct CPUID_EXTENDED_CPU_SIG_REGS::@4524 Intel
struct CPUID_EXTENDED_CPU_SIG_REGS::@4525 Amd
struct CPUID_EXTENDED_STATE_SUB_LEAF_EAX::@4635 Bits
CPUID_EXTENDED_STATE_SUB_LEAF_EAX Eax
struct CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_EBX::@4625 Bits
CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_EBX Ebx
struct CPUID_THERMAL_POWER_MANAGEMENT_REGS::@4511 Undoc
struct MSR_IA32_VMX_PROCBASED_CTLS2_REGISTER::@4672 Bits
struct MSR_IA32_VMX_PROCBASED_CTLS_REGISTER::@4671 Bits