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

Function ObFastReferenceObject

KernelLibrary/kDbgSys.cpp:1682–1709  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1680}
1681
1682PVOID ObFastReferenceObject(
1683 _In_ PEX_FAST_REF FastRef
1684) {
1685 EX_FAST_REF OldRef;
1686 PVOID Object;
1687 ULONG RefsToAdd, Unused;
1688
1689 OldRef = ExFastReference(FastRef);
1690
1691 Object = (PVOID)(OldRef.Value & (~MAX_FAST_REFS));
1692
1693 Unused = OldRef.RefCnt;
1694
1695 if (Unused <= 1) {
1696 if (Unused == 0) {
1697 return nullptr;
1698 }
1699
1700 RefsToAdd = MAX_FAST_REFS;
1701 ObfReferenceObject(Object);
1702
1703 if (!ExFastRefAddAdditionalReferenceCounts(FastRef, Object, RefsToAdd)) {
1704 ObfDereferenceObject(Object);
1705 }
1706 }
1707
1708 return Object;
1709}
1710
1711VOID DbgkExitThread(
1712 NTSTATUS ExitStatus

Callers 1

DbgkCreateThreadFunction · 0.85

Calls 2

ExFastReferenceFunction · 0.70

Tested by

no test coverage detected