WheaAttemptPhysicalPageOffline
NTSTATUS __stdcall WheaAttemptPhysicalPageOffline(UINT64 Page, UINT8 PlatformDirected, UINT8 Poisoned){
UINT64 v5;
_WORK_QUEUE_ITEM WorkItem;
_QWORD v8[6];
WorkItem.List.Blink = 0i64;
v5 = (unsigned __int64)(unsigned int)Page << 12;
if( KeGetCurrentThread()->PreviousMode != 1 )
return WheapAttemptPhysicalPageOffline(v5, Page, PlatformDirected);
memset(&v8[2], 0, 32);
*(_WORD *)((char *)&v8[2] + 1) = Poisoned;
v8[0] = v5;
v8[1] = Page;
LOBYTE(v8[2]) = PlatformDirected;
KeInitializeEvent((INT64)&v8[3], 0, 0);
WorkItem.List.Flink = 0i64;
WorkItem.WorkerRoutine = (void(__fastcall *)(void *))WheapAttemptPhysicalPageOfflineWorker;
WorkItem.Parameter = v8;
ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
KeWaitForSingleObject((UINT64)&v8[3], 0, 0, 0, 0i64);
return HIDWORD(v8[2]);
}Referenced by:
HalpMemoryErrorDeferredHandler
HalpPmemErrorDeferredHandler
KiMcheckAlternateReturn
WheapPfaMemoryCheck
WheapPredictiveFailureAnalysis