KeInvalidateRangeAllCaches function (ntddk.h)

The KeInvalidateRangeAllCaches routine flushes the specified virtual address range from all processor caches.

Syntax

void KeInvalidateRangeAllCaches(
  PVOID BaseAddress,
  ULONG Length
);

Parameters

BaseAddress

A pointer to the base of the region to be flushed.

Length

The size of the region to be flushed, in bytes.

Return value

None

Remarks

The KeInvalidateRangeAllCaches routine flushes the specified virtual address range on each processor's caches and marks each cache's contents invalid. The processor caches are guaranteed to have completed the flush operation before KeInvalidateRangeAllCaches returns.

This function is available on all platforms and supersedes KeInvalidateAllCaches. Not all architectures, such as Arm64, support a reliable way to flush the entire cache, so KeInvalidateAllCaches is not available on all platforms. It is also significantly more efficient to flush the particular memory range affected than the entire cache contents.

This function flushes the cache for all virtual mappings of the same underlying physical memory.

Requirements

Requirement Value
Minimum supported client Available in Windows Vista and later versions of Windows.
Minimum supported server Available in Windows Server 2008 and later versions of Windows.
Header ntddk.h
IRQL <= DISPATCH_LEVEL

See also

KeInvalidateAllCaches