PiUEventDispatch

NTSTATUS __stdcall PiUEventDispatch(
        _DEVICE_OBJECT *DeviceObject,
        _IRP *Irp,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8){
  int Status; 
  _IO_STACK_LOCATION *CurrentStackLocation; 
  unsigned __int8 MajorFunction; 
  _IRP *v12; 
  void *FsContext2; 

  Status = Irp->IoStatus.Status;
  CurrentStackLocation = Irp->Tail.CurrentStackLocation;
  if( Status >= 0 )
  {
    MajorFunction = CurrentStackLocation->MajorFunction;
    if( CurrentStackLocation->MajorFunction )
    {
      if( MajorFunction == 2 )
      {
        FsContext2 = CurrentStackLocation->FileObject->FsContext2;
        if( FsContext2 )
        {
          PiUEventFreeClientRegistrationContext(FsContext2, 1);
          CurrentStackLocation->FileObject->FsContext2 = 0i64;
        }
        Status = 0;
        v12 = Irp;
        Irp->IoStatus.Status = 0;
        goto LABEL_9;
      }
      v12 = Irp;
      if( MajorFunction == 14 )
        return PiUEventHandleIoctl(Irp);
      if( MajorFunction != 18 )
      {
        Status = -1073741637;
        Irp->IoStatus.Status = -1073741637;
        goto LABEL_9;
      }
    }
    else
    {
      v12 = Irp;
      CurrentStackLocation->FileObject->FsContext2 = 0i64;
    }
    Irp->IoStatus.Status = 0;
LABEL_9:
    IofCompleteRequest(v12, 0);
  }
  return Status;
}

Referenced by:

No references.