MiConvertStaticSubsections
NTSTATUS __stdcall MiConvertStaticSubsections(_CONTROL_AREA *ControlArea){
NTSTATUS v1;
_CONTROL_AREA *v2;
__int16 v3;
UINT64 NumberOfMappedViews_high;
v1 = 0;
v2 = ControlArea + 1;
do
{
v3 = WORD1(v2->NumberOfPfnReferences);
if( (v3 & 8) == 0 )
{
if( (v3 & 1) != 0 )
{
if( (v2->NumberOfUserReferences & 0x3FFFFFFF) != 0 )
{
MiUpdateSubsectionCrossPartitionRefs(v2, 0x3FFFFFFF);
v3 = WORD1(v2->NumberOfPfnReferences);
}
NumberOfMappedViews_high = HIDWORD(v2->NumberOfMappedViews);
v2->u2.SeImageStub = (_MI_IMAGE_SECURITY_REFERENCE *)1;
WORD1(v2->NumberOfPfnReferences) = v3 & 0xFFFE;
v1 += MiRemoveViewsFromSection((_SUBSECTION *)v2, NumberOfMappedViews_high);
}
else if( *(_QWORD *)v2->gap8 && !v2->u2.SeImageStub )
{
KeBugCheckEx(0x1Au, (PVOID)0x42003, v2, 0i64, 0i64);
}
}
v2 = *(_CONTROL_AREA **)&v2->gap8[8];
}
while( v2 );
return v1;
}Referenced by:
MiInsertUnusedSegment