I accidently placed a ExAllocatePoolWithTag(NonPagedPoolNx) when IRQL was set too IPI_LEVEL and it succeeded? I confirmed IRQL in WinDbg, and the ExAllocatePoolWithTag() succeeded and gave me a valid buffer.
The MSDN states ExAllocatePoolWithTag only operates at <= DISPATCH_LEVEL, but it seems to work at higher IRQLs too. Even the SAL notation for the ExAllocatePoolWithTag shows _When_((PoolType & PagedPool) == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
I understand paging is disabled by the MemoryManager as it only operates at <= APC_LEVEL, but MemoryManager seems to allocate kernel pages from non paged pool fine.
Has it always been like this? Is MSDN incorrect?