PiUEventHandleIoctl

NTSTATUS __stdcall PiUEventHandleIoctl(_IRP *Irp){
  UINT64 v1; 
  _IO_STATUS_BLOCK *v2; 
  _IO_STACK_LOCATION *CurrentStackLocation; 
  NTSTATUS Event; 
  int v6; 

  CurrentStackLocation = Irp->Tail.CurrentStackLocation;
  switch( *(_DWORD *)&CurrentStackLocation->Parameters.FileAttributes )
  {
    case 0x470800:
      Event = PiUEventHandleRegistration(
                CurrentStackLocation->FileObject,
                Irp->AssociatedIrp.MasterIrp,
                CurrentStackLocation->Parameters.Options,
                LODWORD(CurrentStackLocation->Parameters.SecurityContext),
                &Irp->IoStatus);
      break;
    case 0x470804:
      Event = PiUEventHandleGetEvent(
                CurrentStackLocation->FileObject,
                Irp->AssociatedIrp.MasterIrp,
                v1,
                (_IO_STATUS_BLOCK *)LODWORD(CurrentStackLocation->Parameters.SecurityContext),
                &Irp->IoStatus);
      break;
    case 0x470808:
      Event = PiUEventHandleVetoEvent(
                CurrentStackLocation->FileObject,
                Irp->AssociatedIrp.MasterIrp,
                CurrentStackLocation->Parameters.Options,
                v2,
                &Irp->IoStatus);
      break;
    case 0x47080C:
      Event = PiUEventHandleUnregisterClient(CurrentStackLocation->FileObject);
      break;
    default:
      v6 = -1073741637;
      goto LABEL_5;
  }
  v6 = Event;
LABEL_5:
  Irp->IoStatus.Status = v6;
  IofCompleteRequest(Irp, 0);
  return v6;
}

Referenced by:

PiUEventDispatch