WheaAttemptClearPoison
NTSTATUS __fastcall WheaAttemptClearPoison(INT64 a1, INT8 a2){
_WORK_QUEUE_ITEM WorkItem;
_QWORD v4[6];
WorkItem.List.Blink = 0i64;
if( KeGetCurrentThread()->PreviousMode != 1 )
return WheapAttemptPhysicalPageOffline(a1, a1 >> 12, a2);
v4[0] = a1;
memset(&v4[2], 0, 32);
v4[1] = a1 >> 12;
LOBYTE(v4[2]) = a2;
*(_WORD *)((char *)&v4[2] + 1) = 257;
KeInitializeEvent((INT64)&v4[3], 0, 0);
WorkItem.List.Flink = 0i64;
WorkItem.WorkerRoutine = (void(__fastcall *)(void *))WheapAttemptPhysicalPageOfflineWorker;
WorkItem.Parameter = v4;
ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
KeWaitForSingleObject((UINT64)&v4[3], 0, 0, 0, 0i64);
return HIDWORD(v4[2]);
}Referenced by:
HalpMemoryErrorDeferredHandler