PiSwIrpStartCreate
NTSTATUS __stdcall PiSwIrpStartCreate(IRP *Irp){
__int64 v2;
IRP *v3;
__int64 v4;
NTSTATUS Worker;
PVOID P;
__int64 v8;
IRP *v9;
v2 = *((_QWORD *)Irp + 23);
v8 = 0i64;
P = 0i64;
v3 = Irp;
v9 = Irp;
v4 = *((_QWORD *)Irp + 3);
if( v4 )
{
if( *(_DWORD *)(v2 + 8) < 0xC8u )
{
Worker = -1073741789;
}
else
{
Worker = MesDecodeBufferHandleCreate(v4, *(unsigned int *)(v2 + 16), &v8);
if( Worker >= 0 )
{
NdrMesTypeDecode3(v8, "TP 3\a", &off_140983A98, &off_140C01A60, 0, &P);
Worker = PiSwIrpStartCreateWorker((INT64)P, (INT64)Irp);
v3 = 0i64;
}
}
}
else
{
Worker = -1073741811;
}
if( v3 )
{
*((_DWORD *)v3 + 12) = Worker;
*((_QWORD *)v3 + 7) = 0i64;
IofCompleteRequest(v3, 0);
}
if( P )
ExFreePoolWithTag(P, 0x6370726Bu);
if( v8 )
MesHandleFree();
return Worker;
}Referenced by:
PiSwDispatch