CcUninitializeVolumeCacheMap
VOID __stdcall CcUninitializeVolumeCacheMap(PVOID P){
int v2;
int v3;
int v4;
PVOID *v5;
PVOID *v6;
struct _DMA_ADAPTER *v7;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
v2 = 0;
KeAcquireInStackQueuedSpinLock(&CcMasterLock, &LockHandle);
v3 = *((_DWORD *)P + 1);
if( !v3 )
KeBugCheckEx(0x34u, 0x599ui64, 0xFFFFFFFFC0000420ui64, 0i64, 0i64);
v4 = v3 - 1;
*((_DWORD *)P + 1) = v4;
if( !v4 )
{
v2 = 1;
v5 = (PVOID *)*((_QWORD *)P + 2);
v6 = (PVOID *)*((_QWORD *)P + 3);
if( v5[1] != (char *)P + 16 || *v6 != (char *)P + 16 )
__fastfail(3u);
*v6 = v5;
v5[1] = v6;
v7 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 20);
if( v7 )
{
HalPutDmaAdapter(v7);
*((_QWORD *)P + 20) = 0i64;
}
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
if( v2 )
ExFreePoolWithTag(P, 0x6D566343u);
}Referenced by:
CcDeleteSharedCacheMap