FsRtlpCleanupEcps
CHAR __fastcall FsRtlpCleanupEcps(ECP_LIST *a1, LOOKASIDE_LIST_EX *a2){
unsigned int Flags;
_LIST_ENTRY *p_EcpList;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v6;
_LIST_ENTRY *v7;
_LIST_ENTRY *Blink;
Flags = a1->Flags;
if( (Flags & 0x3F0) != 0 )
{
a1->Flags = Flags - 16;
return 1;
}
if( (Flags & 1) == 0 )
{
FsRtlFreeExtraCreateParameterList(a1);
return 1;
}
p_EcpList = &a1->EcpList;
Flink = a1->EcpList.Flink;
while( Flink != p_EcpList )
{
v6 = Flink;
v7 = Flink;
Flink = Flink->Flink;
if( ((__int64)v6[2].Blink & 1) == 0 )
{
if( Flink->Blink != v7 || (Blink = v7->Blink, Blink->Flink != v7) )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
v7->Flink = 0i64;
v6->Blink = 0i64;
FsRtlFreeExtraCreateParameter(&v6[4]);
}
}
return 0;
}Referenced by:
IopCleanupExtraCreateParameters
IopFastQueryNetworkAttributes
NtQueryAttributesFile
NtQueryFullAttributesFile