Using something akin to IOCTL calls would be one solution - IOCTL calls generally take a constant number (enum or #define) and an input and output parameter (often optional, so NULL can be used to indicate "no input" or "no output". So one IOCTL call may be GetPowerState.

The actual IOCTL code will then call HWListen.GetPowerState(), but to add that is only a simple case-label in a switch statement.

--
Mats