AlpcpCaptureWorkOnBehalfAttribute

INT64 __fastcall AlpcpCaptureWorkOnBehalfAttribute(INT64 a1){
  _ETHREAD *CurrentThread; 
  __int64 WorkOnBehalfThread; 
  struct _DMA_ADAPTER *v4; 
  __int64 v5; 
  _ETHREAD *v6; 
  int v8; 
  _ALPC_WORK_ON_BEHALF_TICKET Ticket; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v8 = 0;
  Ticket = 0i64;
  WorkOnBehalfThread = PsGetWorkOnBehalfThread((__int64)CurrentThread, &v8);
  v4 = (struct _DMA_ADAPTER *)WorkOnBehalfThread;
  if( WorkOnBehalfThread )
  {
    v6 = (_ETHREAD *)WorkOnBehalfThread;
    goto LABEL_5;
  }
  IoThreadToProcess(CurrentThread);
  if( *(_QWORD *)(v5 + 2392) || PoEnergyEstimationEnabled() )
  {
    v6 = CurrentThread;
LABEL_5:
    PsEncodeThreadWorkOnBehalfTicket(v6, &Ticket);
  }
  if( v8 )
    HalPutDmaAdapter(v4);
  *(_ALPC_WORK_ON_BEHALF_TICKET *)(a1 + 64) = Ticket;
  return 0i64;
}

Referenced by:

AlpcpCaptureAttributes