IopCancelIrpsInThreadList

INT64 __fastcall IopCancelIrpsInThreadList(INT64 a1, INT64 a2){
  _ETHREAD *CurrentThread; 
  UINT64 v6; 
  UINT8 v7; 
  UINT8 v8; 
  UINT64 v9; 
  UINT8 v10; 
  UINT8 v11; 
  IRP *v12; 
  IRP *v13; 
  char SystemArgument1; 
  SystemArgument1 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  if( (_ETHREAD *)a1 == CurrentThread )
    return IopCancelIrpsInCurrentThreadList(
             *(_FILE_OBJECT **)(a2 + 88),
             CurrentThread,
             *(_IO_STATUS_BLOCK **)(a2 + 96),
             *(_BYTE *)(a2 + 128));
  KeInitializeApc(a2, a1, 0i64, (INT64)IopCancelIrpsInCurrentThreadListSpecialApc, 0i64, 0i64, 0, 0i64);
  if( KeInsertQueueApc((_KAPC *)a2, &SystemArgument1, 0i64, 0i64) )
  {
    KeWaitForSingleObject((PVOID)(a2 + 104), Executive, 0, 0, 0i64);
    KeResetEvent((VOID *)(a2 + 104), v6, v7, v8, v12);
    if( SystemArgument1 )
    {
      KeInitializeEvent((_KEVENT *)(a2 + 104), NotificationEvent, 0);
      KeInitializeApc(
        a2,
        a1,
        0i64,
        (INT64)AlpcMessageDeleteProcedure,
        0i64,
        (INT64)IopCancelIrpsInCurrentThreadListApcRoutine,
        0,
        a2);
      if( KeInsertQueueApc((_KAPC *)a2, 0i64, 0i64, 0i64) )
      {
        KeWaitForSingleObject((PVOID)(a2 + 104), Executive, 0, 0, 0i64);
        KeResetEvent((VOID *)(a2 + 104), v9, v10, v11, v13);
      }
    }
  }
  return *(unsigned int *)(a2 + 132);
}

Referenced by:

IopCancelIrpsInThreadListForCurrentProcess
IopCancelSynchronousIrpsForThread