MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / ExFastReference

Function ExFastReference

KernelLibrary/SysMon.cpp:417–439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

415}
416
417EX_FAST_REF_S ExFastReference(
418 _Inout_ PEX_FAST_REF_S FastRef
419) {
420 EX_FAST_REF_S OldRef, NewRef;
421
422 while (true) {
423 OldRef = ReadForWriteAccess(FastRef);
424
425 if (OldRef.RefCnt != 0) {
426 NewRef.Value = OldRef.Value - 1;
427 NewRef.Object = InterlockedCompareExchangePointerAcquire(
428 &FastRef->Object,
429 NewRef.Object,
430 OldRef.Object);
431 if (NewRef.Object != OldRef.Object) {
432 continue;
433 }
434 }
435 break;
436 }
437
438 return OldRef;
439}
440
441LOGICAL ExFastRefDereference(
442 _Inout_ PEX_FAST_REF_S FastRef,

Callers 1

ExReferenceCallBackBlockFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected