SmProcessListRequestExtended
NTSTATUS __stdcall SmProcessListRequestExtended(_SMKM_STORE_LIST *StoreMgr, INT64 a2){
_SMKM_FILE_INFO *v4;
unsigned int v5;
unsigned int v6;
INT64 v7;
unsigned __int64 v8;
int Path;
_EX_RUNDOWN_REF *v10;
_EX_RUNDOWN_REF *v11;
v4 = 0i64;
v5 = 0;
if( *(_BYTE *)(a2 + 1) )
{
v6 = 1;
do
{
v7 = a2 + 4i64 * v5;
v4 = (_SMKM_FILE_INFO *)SmKmStoreReference(StoreMgr, *(unsigned int *)(v7 + 4));
if( v4 )
{
v8 = a2 + ((unsigned __int64)v5 << 7);
if( *((_BYTE *)v4 + 6020) == 1 )
{
Path = SmKmFileInfoGetPath(v4 + 1554, (WCHAR *)(v8 + 132), 0x80ui64);
if( Path < 0 )
goto LABEL_12;
}
else
{
*(_WORD *)(v8 + 132) = 0;
}
v10 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex((__int64)StoreMgr, v4[1504] & 0x3FF);
ExReleaseRundownProtection(v10 + 1);
v4 = 0i64;
}
else
{
memmove((VOID *)(v7 + 4), (const VOID *)(a2 + 4 * (v6-- + 1i64)), 4 * (*(unsigned __int8 *)(a2 + 1) - v5--) - 4);
--*(_BYTE *)(a2 + 1);
}
++v5;
++v6;
}
while( v5 < *(unsigned __int8 *)(a2 + 1) );
}
Path = 0;
LABEL_12:
if( v4 )
{
v11 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex((__int64)StoreMgr, v4[1504] & 0x3FF);
ExReleaseRundownProtection(v11 + 1);
}
return Path;
}Referenced by:
SmProcessListRequest