WindowsアプリケーションをC++で開発しています。

キーイベントを取得するには、まずはWM_KEYDOWNを取得。
もっと早く知りたい場合は、グローバルフック。
さらに早く知りたい場合は、KeyboardFilterDriverを開発...

このようにしてWindowsのキー入力について深堀してきたのですが、ハードからのキー入力をどのようにソフトで処理しているのか、一連の流れがつかめません。
ハードからカーネル、ドライバ、ユーザーランド、ユーザーアプリケーション....といったキー入力の一連の流れを詳しく教えてはいただけないでしょうか。

目的は、ユーザーランド側(システムではない方)でいち早くキー入力を取得したいのです。
ドライバ開発からすればシステムの一部としてキー入力を取得できるかもしれませんが、それではアプリケーションを利用できる層は限られています。(管理者でないといけない)
なので、キー入力の仕組みをきちんと理解して、キー入力を取得できるようにしたいのです。

よろしくお願いします。