ASSERT(iBcb->Pinned == FALSE);
iBcb->Pinned = TRUE;
- if (InterlockedIncrement(&iBcb->Vacb->PinCount) == 1)
- {
- CcRosReleaseVacbLock(iBcb->Vacb);
- }
+ iBcb->Vacb->PinCount++;
+ CcRosReleaseVacbLock(iBcb->Vacb);
if (Flags & PIN_EXCLUSIVE)
{
{
ExReleaseResourceForThreadLite(&iBcb->Lock, ResourceThreadId);
iBcb->Pinned = FALSE;
- if (InterlockedDecrement(&iBcb->Vacb->PinCount) == 0)
- {
- CcRosAcquireVacbLock(iBcb->Vacb, NULL);
- }
+ CcRosAcquireVacbLock(iBcb->Vacb, NULL);
+ iBcb->Vacb->PinCount--;
}
CcRosReleaseVacb(iBcb->Vacb->SharedCacheMap,
{
ExReleaseResourceLite(&iBcb->Lock);
iBcb->Pinned = FALSE;
- if (InterlockedDecrement(&iBcb->Vacb->PinCount) == 0)
- {
- CcRosAcquireVacbLock(iBcb->Vacb, NULL);
- }
+ CcRosAcquireVacbLock(iBcb->Vacb, NULL);
+ iBcb->Vacb->PinCount--;
}
ExDeleteResourceLite(&iBcb->Lock);
ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, oldIrql);
KeReleaseGuardedMutex(&ViewLock);
- if (InterlockedCompareExchange(&Vacb->PinCount, 0, 0) == 0)
- {
- CcRosReleaseVacbLock(Vacb);
- }
+ CcRosReleaseVacbLock(Vacb);
return STATUS_SUCCESS;
}
CcRosVacbIncRefCount(current);
KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, oldIrql);
KeReleaseGuardedMutex(&ViewLock);
- if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0)
- {
- CcRosAcquireVacbLock(current, NULL);
- }
+ CcRosAcquireVacbLock(current, NULL);
return current;
}
if (current->FileOffset.QuadPart > FileOffset)
KeReleaseGuardedMutex(&ViewLock);
ExFreeToNPagedLookasideList(&VacbLookasideList, *Vacb);
*Vacb = current;
- if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0)
- {
- CcRosAcquireVacbLock(current, NULL);
- }
+ CcRosAcquireVacbLock(current, NULL);
return STATUS_SUCCESS;
}
if (current->FileOffset.QuadPart < FileOffset)
}
}
- if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0)
- {
- CcRosReleaseVacbLock(current);
- }
+ CcRosReleaseVacbLock(current);
KeAcquireGuardedMutex(&ViewLock);
KeAcquireSpinLock(&SharedCacheMap->CacheMapLock, &oldIrql);
/* Number of references. */
ULONG ReferenceCount;
/* How many times was it pinned? */
- volatile LONG PinCount;
+ _Guarded_by_(Mutex)
+ LONG PinCount;
/* Pointer to the shared cache map for the file which this view maps data for. */
PROS_SHARED_CACHE_MAP SharedCacheMap;
/* Pointer to the next VACB in a chain. */