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.