What does HRESULT 0x801F000C (ERROR_FLT_MUST_BE_NONPAGED_POOL) mean?

 
Previous Next
ERROR_FLT_DELETING_OBJECT ERROR_FLT_DUPLICATE_ENTRY

ERROR_FLT_MUST_BE_NONPAGED_POOL

The context may be accessed where paging is impossible

ERROR_FLT_MUST_BE_NONPAGED_POOL means a context allocation or registration used a pageable pool for a context type that Filter Manager requires to be resident. Volume contexts are the documented example for FltAllocateContext; the pool choice must be NonPagedPool or the supported NX nonpaged equivalent because callbacks can reference the object where page faults are not allowed.

Changing only the call-site pool argument is insufficient when a custom ContextAllocateCallback or registration entry still returns pageable storage. The allocation and free callbacks, registered size, and runtime request must describe the same memory contract, including the executable/non-executable policy expected by current Windows versions.

Memory-contract checks

  • Identify the exact FLT_CONTEXT_TYPE requested when the status was returned.
  • Compare the runtime pool type with the matching FLT_CONTEXT_REGISTRATION entry.
  • Use nonpaged NX memory for context data that never contains executable code.
  • Keep pageable pointers out of fields that callbacks can dereference at elevated IRQL.

References


Looking for a different code? Search another status or error code.