CcUninitializePartitionVacbs
_LIST_ENTRY *__fastcall CcUninitializePartitionVacbs(_VACB *Vacb){
_LIST_ENTRY **p_Blink;
_LIST_ENTRY *result;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v5;
_LIST_ENTRY *Blink;
INT64 v7;
INT64 v8;
UINT8 v9;
int BaseAddress;
p_Blink = &Vacb[22].Overlay.Links.Blink;
while( 1 )
{
result = *p_Blink;
if( *p_Blink == (_LIST_ENTRY *)p_Blink )
break;
Flink = result->Flink;
v5 = result - 1;
if( result->Flink->Blink != result || (Blink = result->Blink, Blink->Flink != result) )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
MmFreeSystemCacheReserveView((ULONG_PTR)v5->Flink);
v5->Flink = 0i64;
v9 = KeAcquireQueuedSpinLock(4i64, v7, v8);
CcSetVacbInFreeList(Vacb, (UINT8)v5);
KeReleaseQueuedSpinLock(LockQueueVacbLock, v9);
BaseAddress = (int)Vacb[23].BaseAddress;
if( !BaseAddress )
KeBugCheckEx(0x34u, (PVOID)0x6A1, (PVOID)0xFFFFFFFFC0000420i64, 0i64, 0i64);
LODWORD(Vacb[23].BaseAddress) = BaseAddress - 1;
}
if( LODWORD(Vacb[23].BaseAddress) )
KeBugCheckEx(0x34u, (PVOID)0x6A9, (PVOID)0xFFFFFFFFC0000420i64, 0i64, 0i64);
return result;
}Referenced by:
CcDeletePartition