HalpGrowMapBufferWorker

void __fastcall HalpGrowMapBufferWorker(void *Context){
  PHYSICAL_ADDRESS *v2; 
  int v3; 
  unsigned __int8 CurrentIrql; 
  int v5; 
  v2 = (PHYSICAL_ADDRESS *)*((_QWORD *)Context + 4);
  v3 = (*((_DWORD *)Context + 11) + 16) & 0xFFFFF;
  if( *((_BYTE *)Context + 40) )
    HalpDmaGrowScatterMapBuffers(v2, v3);
  else
    HalpDmaGrowContiguousMapBuffers((__int64)v2, v3);
  *(_DWORD *)((char *)&HalpDmaGrowMapBufferWorkerQueued + (*((_BYTE *)Context + 40) != 0 ? 4 : 0)) = 0;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  v5 = *((_DWORD *)Context + 12);
  if( v5 == 2 )
  {
    HalpDmaProcessMapRegisterQueueV2((__int64)v2, *((_BYTE *)Context + 40));
  }
  else if( v5 == 3 )
  {
    HalpDmaProcessMapRegisterQueueV3((__int64)v2, *((_BYTE *)Context + 40));
  }
  __writecr8(CurrentIrql);
  ExFreePoolWithTag(Context, 0);
}

Referenced by:

No references.