Implement ExCompleteRundownProtection() and ExReInitializeRundownProtection() routines and add stub for ExWaitForRundownProtectionRelease()
This commit is contained in:
parent
d9918f0380
commit
ba833422b0
@ -18,12 +18,24 @@ XTFASTCALL
|
|||||||
BOOLEAN
|
BOOLEAN
|
||||||
ExAcquireRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
ExAcquireRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
|
XTFASTCALL
|
||||||
|
VOID
|
||||||
|
ExCompleteRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
XTFASTCALL
|
XTFASTCALL
|
||||||
VOID
|
VOID
|
||||||
ExInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
ExInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
|
XTFASTCALL
|
||||||
|
VOID
|
||||||
|
ExReInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
XTFASTCALL
|
XTFASTCALL
|
||||||
VOID
|
VOID
|
||||||
ExReleaseRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
ExReleaseRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
|
XTFASTCALL
|
||||||
|
VOID
|
||||||
|
ExWaitForRundownProtectionRelease(IN PEX_RUNDOWN_REFERENCE Descriptor);
|
||||||
|
|
||||||
#endif /* __XTDK_EXFUNCS_H */
|
#endif /* __XTDK_EXFUNCS_H */
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#include <ketypes.h>
|
#include <ketypes.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Rundown protection flags */
|
||||||
|
#define EX_RUNDOWN_ACTIVE 0x1
|
||||||
|
|
||||||
/* Executive rundown protection structure definition */
|
/* Executive rundown protection structure definition */
|
||||||
typedef struct _EX_RUNDOWN_REFERENCE
|
typedef struct _EX_RUNDOWN_REFERENCE
|
||||||
{
|
{
|
||||||
|
@ -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.
|
* Initializes the rundown protection descriptor.
|
||||||
*
|
*
|
||||||
@ -75,6 +92,23 @@ ExInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor)
|
|||||||
Descriptor->Count = 0;
|
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.
|
* 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;
|
||||||
|
}
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
|
# XTOS exports
|
||||||
@ fastcall ExAcquireRundownProtection(ptr)
|
@ fastcall ExAcquireRundownProtection(ptr)
|
||||||
|
@ fastcall ExCompleteRundownProtection(ptr)
|
||||||
@ fastcall ExInitializeRundownProtection(ptr)
|
@ fastcall ExInitializeRundownProtection(ptr)
|
||||||
|
@ fastcall ExReInitializeRundownProtection(ptr)
|
||||||
@ fastcall ExReleaseRundownProtection(ptr)
|
@ fastcall ExReleaseRundownProtection(ptr)
|
||||||
|
@ fastcall ExWaitForRundownProtectionRelease(ptr)
|
||||||
@ cdecl HlIoPortInByte(ptr)
|
@ cdecl HlIoPortInByte(ptr)
|
||||||
@ cdecl HlIoPortInLong(ptr)
|
@ cdecl HlIoPortInLong(ptr)
|
||||||
@ cdecl HlIoPortInShort(ptr)
|
@ cdecl HlIoPortInShort(ptr)
|
||||||
@ -30,3 +34,7 @@
|
|||||||
@ cdecl RtlWideStringLength(wstr long)
|
@ cdecl RtlWideStringLength(wstr long)
|
||||||
@ cdecl RtlWideStringTokenize(wstr wstr wstr)
|
@ cdecl RtlWideStringTokenize(wstr wstr wstr)
|
||||||
@ stdcall RtlZeroMemory(ptr long)
|
@ stdcall RtlZeroMemory(ptr long)
|
||||||
|
|
||||||
|
|
||||||
|
# NT compatibilty layer exports
|
||||||
|
@ fastcall ExRundownCompleted(ptr) ExCompleteRundownProtection
|
||||||
|
Loading…
Reference in New Issue
Block a user