一番大事なのはリンカ。
自分のOSに合ったバイナリイメージを作らないといけない。
それから、通常は提供されている標準C/C++ライブラリは使用できない。

>アプリケーション → OS → ドライバ → ハードウェア
この形式だと、機能追加=OS(カーネル)の再構築だったりするから、
サービスを挟むべき。

それから、ドライバもユーザーモードドライバはOSやIOサービスを経由してハードをいじる
カーネルモードドライバだけが直接ハードウェアをさわれるようにするべき。