MiPfIssueCoalesceCandidates
NTSTATUS __stdcall MiPfIssueCoalesceCandidates(
_LIST_ENTRY *CandidateListHead,
UINT64 CoalescedSize,
_LIST_ENTRY *IssuedInPageSupportsHead){
_LIST_ENTRY *Flink;
_LIST_ENTRY *v6;
_LIST_ENTRY *Blink;
NTSTATUS result;
_LIST_ENTRY *v9;
_LIST_ENTRY *v10;
_LIST_ENTRY *v11;
Flink = CandidateListHead->Flink;
v6 = CandidateListHead->Flink->Flink;
if( v6 == CandidateListHead )
{
if( Flink->Blink != CandidateListHead || v6->Blink != Flink )
goto LABEL_14;
CandidateListHead->Flink = v6;
v6->Blink = CandidateListHead;
MiIssueHardFaultIo((_MMINPAGE_SUPPORT *)Flink, 0i64, 0i64);
LABEL_5:
Blink = IssuedInPageSupportsHead->Blink;
if( Blink->Flink == IssuedInPageSupportsHead )
{
Flink->Flink = IssuedInPageSupportsHead;
Flink->Blink = Blink;
Blink->Flink = Flink;
result = 0;
IssuedInPageSupportsHead->Blink = Flink;
return result;
}
LABEL_14:
__fastfail(3u);
}
Flink = (_LIST_ENTRY *)MiPfIssueCoalescedSupport(CandidateListHead, CoalescedSize);
if( Flink )
goto LABEL_5;
while( 1 )
{
v9 = CandidateListHead->Flink;
if( CandidateListHead->Flink == CandidateListHead )
return -1073741670;
if( v9->Blink != CandidateListHead )
goto LABEL_14;
v10 = v9->Flink;
if( v9->Flink->Blink != v9 )
goto LABEL_14;
CandidateListHead->Flink = v10;
v10->Blink = CandidateListHead;
MiIssueHardFaultIo((_MMINPAGE_SUPPORT *)v9, 0i64, 0i64);
v11 = IssuedInPageSupportsHead->Blink;
if( v11->Flink != IssuedInPageSupportsHead )
goto LABEL_14;
v9->Flink = IssuedInPageSupportsHead;
v9->Blink = v11;
v11->Flink = v9;
IssuedInPageSupportsHead->Blink = v9;
}
}Referenced by:
MiPfCoalesceAndIssueIOs