Есть драйвер. Есть приложение. Драйвер ловит прерывания от порта. Надо дёргать приложение из драйвера. Event'ы не хорошо, т.к. их приходится ждать.
Вот, к примеру, при работе со звуком, я пишу в приложении:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER( MM_WIM_DATA, TMessage, WaveInTMessageRoutine );
END_MESSAGE_MAP( TForm );
И когда приходит сообщение MM_WIM_DATA у меня вызывается функция WaveInTMessageRoutine.
Хочу написать в приложении что-нибудь типа
VCL_MESSAGE_HANDLER( ZZ_WAKE_UP, TMessage, TimeToWakeUpRoutine );
и отправлять из драйвера своему приложению сообщение ZZ_WAKE_UP, что бы там вызавылась функция TimeToWakeUpRoutine.
Как это сделать? В MSDN нашёл только, что "System-level device drivers use a related, system-level function to broadcast system messages"