SYSTEM_PREFETCH_PATCH_INFORMATION

The SYSTEM_PREFETCH_PATCH_INFORMATION structure is what a successful call to ZwQuerySystemInformation or NtQuerySystemInformation produces in its output buffer when given the information class SystemPrefetchPatchInformation (0x60).

Modern versions reject this information class as not implemented. So do all known 32-bit builds. For the x64 builds, however, this information class provides diagnostic support for the kernel’s use of the prefetchw instruction before processors could be expected to have it. Starting with version 6.3, this instruction is required, on pain of Bug Check 0x5D: Unsupported Processor. Earlier versions use prefetchw liberally but with a handler for the Invalid Opcode exception that not only recovers from the fault but also patches the instruction away so that the performance hit from the exception doesn’t recur. The SYSTEM_PREFETCH_PATCH_INFORMATION structure exists just to report how many prefetchw instructions have been executed such that they had to be patched away.

Documentation Status

The SYSTEM_PREFETCH_PATCH_INFORMATION structure is not documented.

Layout

The SYSTEM_PREFETCH_PATCH_INFORMATION is four bytes in both 32-bit and 64-bit Windows.

Offset Definition
0x00
ULONG PrefetchPatchCount;