Knihovna KeyedEvent umožňuje aplikacím pracovat se zajímavým synchronizačním primitivem, které se objevilo ve Windows XP – událostí na klíč (Keyed Event). Knihovna byla vytvořena, aby práce s tímto primitivem byla pohodlnější a mohli jste si i bez větších znalostí vyzkoušet, jak se tento zvláštní druh události chová v praxi. Teoretické chování je popsáno v knize ve čtvrté kapitole, která se věnuje synchronizaci.
Událost na klíč znamená konečné řešení problémů spjatých s kritickými sekcemi, které se vlekly již od Windows NT. Po zlepšení implementace ve Windows Vista na její bázi byla postavena další dvě synchronizační primitiva pro uživatelský režim: condition variable a RW zámky (Slim Reader Writer Lock).
Knihovna exportuje následující rutiny:
První dvě funkce slouží k vytváření nových a získávání přístupu k již existujícím událostem na klíč. Tyto objekty mohou být také pojmenované. Knihovna jejich jména ukládá do adresáře BaseNamedObjects. Handle k těmto objektům může disponovat následujícími orpávněními:
- KEYEDEVENT_WAIT (0x0001) – povoluje operaci Wait (KEWaitForKeyedEvent)
- KEYEDEVENT_WAKE (0x0002) – povoluje operaci Releae (KEReleaseKeyedEvent)
- KEYEDEVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x3) – plný přístup
Jelikož je událost na klíč objektem exekutivy, její handle se ruší standardním způsobem pro tyto entity: voláním funkce CloseHandle.
Další rutiny slouží k provádění operací Wait a Release, jejichž sémantika je popsána v knize. Tyto rutiny mohou vrátit jednu ze tří hodnot: WAIT_OBJECT_0 (úspěch), WAIT_TIMEOUT (časový limit vypršel) a WAIT_FAILED (při čekání došlo k chybě).
Knihovna byla testována na následujících verzích Windows:
Systém | Verze kernelu | |
Windows XP 32bit | 5.1.2600 | |
Windows XP 64bit | 5.2.3790 | |
Windows Server 2003 R2 32bit | 5.2.3790 | |
Windows Server 2003 R2 64bit | 5.2.3790 | |
Windows Vista 32bit | 6.1.6002 | |
Windows Vista 64bit | 6.1.6002 | |
Windows 7 32bit | 6.1.7601 | |
Windows 7 64bit | 6.1.7601 |