Jump to content

KernWakeup

From EDM2
Revision as of 05:17, 6 June 2016 by Martini (talk | contribs) (Created page with "==Synopsis== APIRET APIENTRY KernWakeup(ULONG eventid, ULONG flags, PULONG tcnt, ULONG retdata); ==Description== This wakes up threads that are blocking in KernBlock. The eve...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Synopsis

APIRET APIENTRY KernWakeup(ULONG eventid, ULONG flags, PULONG tcnt, ULONG retdata);

Description

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. must match

Parameters

eventid

   Event id of the blocked thread(s). 

flags

   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

   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. 

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.