SdbpCheckExe
NTSTATUS __stdcall SdbpCheckExe(
VOID *hSDB,
_DB *pdb,
UINT64 tiExe,
UINT64 *pdwNumExes,
tagSEARCHDBCONTEXT *pContext,
_ADDITIVE_MODE eMode,
_MATCHMODE *pMatchMode,
tagEXE_ENTRY_INFO *pExeEntryInfo){
NTSTATUS v9;
unsigned int v10;
_MATCHMODE v11;
int v12;
unsigned int v13;
_MATCHMODE v15;
__int64 v16[2];
v15 = MATCHMODE_ADDITIVE;
v9 = 0;
LODWORD(v16[0]) = 0;
v10 = tiExe;
if( SdbpCheckForMatch(hSDB, pdb, tiExe, pContext, &v15, (UINT64 *)v16) )
{
v11 = v15;
if( (eMode != AM_ADDITIVE_ONLY || v15 == MATCHMODE_ADDITIVE)
&& (eMode != AM_NO_ADDITIVE || v15 != MATCHMODE_ADDITIVE) )
{
if( v15 == MATCHMODE_EXCLUSIVE )
{
memset(pExeEntryInfo, 0i64, 0x80u);
v12 = 0;
}
else
{
v12 = *(_DWORD *)pdwNumExes;
if( *(_DWORD *)pdwNumExes >= 0x10u )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpCheckExe",
0xCFEui64,
(INT8 *)"The number of matching EXEs exceeded the max allowed");
++*(_DWORD *)pdwNumExes;
return 0;
}
}
v13 = v16[0];
pExeEntryInfo[v12].tiExe = v10;
pExeEntryInfo[v12].dwFlags = v13;
*(_DWORD *)pdwNumExes = v12 + 1;
v9 = 1;
if( pMatchMode )
*pMatchMode = v11;
}
}
return v9;
}Referenced by:
SdbpSearchDB