ExpWnfCaptureScopeInstanceId
INT64 __fastcall ExpWnfCaptureScopeInstanceId(INT64 a1, UINT64 *a2, CHAR a3, PVOID *a4, INT64 CapturedScopeData){
PVOID *v5;
int v7;
UINT64 v8;
__int64 v9;
int v10;
int v11;
__int64 v12;
v5 = a4;
LOBYTE(a4) = a3;
if( !a2 )
{
*v5 = 0i64;
return 0i64;
}
if( !(_DWORD)a1 )
return(unsigned int)-1073741811;
v7 = a1 - 1;
if( v7 )
{
v11 = v7 - 1;
if( !v11 )
{
v10 = SeCaptureSid(a2, a3, a3, a4);
if( v10 >= 0 )
*v5 = *(PVOID *)CapturedScopeData;
return(unsigned int)v10;
}
if( v11 == 1 )
{
v10 = ObpReferenceObjectByHandleWithTag(
(ULONG_PTR)a2,
0,
(__int64)PsProcessType,
a3,
0x20666E57u,
CapturedScopeData,
0i64,
0i64);
if( v10 >= 0 )
*v5 = (PVOID)CapturedScopeData;
return(unsigned int)v10;
}
return(unsigned int)-1073741811;
}
if( a3 )
{
v12 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)a2 < 0x7FFFFFFF0000i64 )
v12 = (__int64)a2;
v8 = *(unsigned int *)v12;
}
else
{
v8 = *(unsigned int *)a2;
}
*(_DWORD *)(CapturedScopeData + 8) = v8;
LODWORD(v9) = MmGetSessionById(v8);
*(_QWORD *)CapturedScopeData = v9;
if( !v9 )
return(unsigned int)-1073741811;
*v5 = (PVOID)(CapturedScopeData + 8);
return 0;
}Referenced by:
ExpNtDeleteWnfStateData
ExpNtUpdateWnfStateData
NtQueryWnfStateData
NtQueryWnfStateNameInformation