KernWakeup: Difference between revisions
Appearance
mNo edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
==Parameters== | ==Parameters== | ||
;eventid:Event id of the blocked thread(s). | ;''eventid'' ([[ULONG]]) - input :Event id of the blocked thread(s). | ||
;flags:One or more of the following flag bits: | ;''flags'' ([[ULONG]]) - input :One or more of the following flag bits: | ||
::KEE_WAKE_SINGLE - Only wakeup the first matching thread; by default, if multiple threads are waiting, all will be awaking. | ::KEE_WAKE_SINGLE - Only wakeup the first matching thread; by default, if multiple threads are waiting, all will be awaking. | ||
::KEE_WAKE_PRIOINCR - Run the woke threads with higher priority. | ::KEE_WAKE_PRIOINCR - Run the woke threads with higher priority. | ||
::KEE_WAKE_RETDATA - return data value specified to the KernBlock retdata variable. By default, nothing is returned. | ::KEE_WAKE_RETDATA - return data value specified to the KernBlock retdata variable. By default, nothing is returned. | ||
;tcnt:pointer to an ULONG to return the actual number of threads that were woke. Ignored when NULL. | ;''tcnt'' ([[PULONG]]) - input:pointer to an ULONG to return the actual number of threads that were woke. Ignored when NULL. | ||
;retdata:Data to be returned to the unblocked threads. Ignored when KEE_WAKE_RETDATA is not set. | ;''retdata'' ([[ULONG]]) - input:Data to be returned to the unblocked threads. Ignored when KEE_WAKE_RETDATA is not set. | ||
==Comments== | ==Comments== |
Latest revision as of 04:00, 28 May 2025
This wakes up threads that are blocking in KernBlock. The eventid to be specified has to match the eventid used in KernBlock. It is possible to submit a 32 bit return value to the unblocked thread. The number of threads that are unblocked is returned.
Synopsis
APIRET APIENTRY KernWakeup(ULONG eventid, ULONG flags, PULONG tcnt, ULONG retdata);
Parameters
- eventid (ULONG) - input
- Event id of the blocked thread(s).
- flags (ULONG) - input
- One or more of the following flag bits:
- KEE_WAKE_SINGLE - Only wakeup the first matching thread; by default, if multiple threads are waiting, all will be awaking.
- KEE_WAKE_PRIOINCR - Run the woke threads with higher priority.
- KEE_WAKE_RETDATA - return data value specified to the KernBlock retdata variable. By default, nothing is returned.
- tcnt (PULONG) - input
- pointer to an ULONG to return the actual number of threads that were woke. Ignored when NULL.
- retdata (ULONG) - input
- Data to be returned to the unblocked threads. Ignored when KEE_WAKE_RETDATA is not set.
Comments
I don't know whether the priority increase issued by KEE_WAKE_PRIOINCR is permanent, or only for the current timeslice. It shouldn't be permanent.