Implement ExCompleteRundownProtection() and ExReInitializeRundownProtection() routines and add stub for ExWaitForRundownProtectionRelease()

This commit is contained in:
2023-11-05 09:50:04 +01:00
parent d9918f0380
commit ba833422b0
4 changed files with 75 additions and 1 deletions

View File

@@ -57,6 +57,23 @@ ExAcquireRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
}
}
/**
* Marks the rundown descriptor as completed.
*
* @param Descriptor
* Supplies a pointer to the descriptor to be completed.
*
* @return This routine does not return any value.
*
* @since NT 5.1
*/
XTFASTCALL
VOID
ExCompleteRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
{
RtlAtomicExchangePointer(&Descriptor->Ptr, (PVOID)EX_RUNDOWN_ACTIVE);
}
/**
* Initializes the rundown protection descriptor.
*
@@ -75,6 +92,23 @@ ExInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
Descriptor->Count = 0;
}
/**
* Reinitializes the rundown protection structure after it has been completed.
*
* @param Descriptor
* Supplies a pointer to the descriptor to be reinitialized.
*
* @return This routine does not return any value.
*
* @since NT 5.1
*/
XTFASTCALL
VOID
ExReInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
{
RtlAtomicExchangePointer(&Descriptor->Ptr, NULL);
}
/**
* Releases the rundown protection for given descriptor.
*
@@ -125,3 +159,20 @@ ExReleaseRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
}
}
}
/**
* Waits until rundown protection calls are completed.
*
* @param Descriptor
* Supplies a pointer to the rundown block descriptor.
*
* @return This routine does not return any value.
*
* @since NT 5.1
*/
XTFASTCALL
VOID
ExWaitForRundownProtectionRelease(IN PEX_RUNDOWN_REFERENCE Descriptor)
{
UNIMPLEMENTED;
}