PfSnAppLaunchScenarioControl
NTSTATUS __stdcall PfSnAppLaunchScenarioControl(PFSN_APPLAUNCH_SCENARIO_CONTROL *Control, INT8 PreviousMode){
int v2;
bool v3;
int v4;
_EPROCESS *v5;
UINT64 Tag;
PVOID Object;
_KAPC_STATE ApcState;
Object = 0i64;
v2 = 0;
v3 = *Control == 1;
memset(&ApcState, 0, sizeof(ApcState));
if( !v3 )
return -1073741735;
if( !Control[1] )
return -1073741811;
LODWORD(Tag) = 1935107664;
v4 = ObReferenceObjectByHandleWithTag(
*((VOID **)Control + 1),
8ui64,
(_OBJECT_TYPE *)PsProcessType,
PreviousMode,
Tag,
&Object,
0i64);
if( v4 < 0 )
{
v5 = (_EPROCESS *)Object;
}
else
{
v5 = (_EPROCESS *)Object;
if( KeGetCurrentThread()->ApcState.Process != Object )
{
v2 = 1;
KeStackAttachProcess((PRKPROCESS)Object, &ApcState);
}
PfSnBeginAppLaunch(v5, 0i64, 9ui64);
v4 = 0;
if( v2 )
KeUnstackDetachProcess(&ApcState);
}
if( v5 )
ObfDereferenceObjectWithTag(v5, 0x73576650ui64);
return v4;
}Referenced by:
PfSnSetPrefetcherInformation