そろそろ OpenLibSys の API を考えないと・・・

WinRing0 の開発を通して API 数を増やしすぎると地獄を見るということが良くわかりました。

OpenLibSys では、GetProcessorName とかそんな感じでどんどん API を増やしていこうかなぁとも思っていたのですが、この方式だと数十、数百の API をエクスポートすることになってしまいます。やはり、SysInfo と同様 GetString(XXX_YYY_ZZZ, str); って感じで呼び出すような感じにするのがいいのかなぁ。どっちにしても、C# 用 enum を作るのが大変ですけど。あと、マクロの管理は SysInfo で大失敗こいたので、反省せねば。。。

また、文字列の長さも確認できるようにしないとなぁ。今回は、Windows API を見習いもう少しまともな仕様にしたいと思います。Unicode 専用にできるのはちょっとうれしいです。今まで頑なに 9x サポートを続けてきましたが。もう良いでしょう。

できれば、エクスポートする API は WinRing0 と OpenLibSys で共通として、OpenLibSys 専用 API を WinRing0 から呼び出した場合はエラーコードを返すとかそんな仕様にしたいなぁと妄想しています。なんにせよ、ユーザアプリは WinRing0 を使う場合と OpenLibSys を使う場合で共通にできるようにしたいと思います。DLL 名を切り替えるための再コンパイルは必要ですけどね。※既に C# 版サンプルの OpenLibSys.cs はそのような形になってます。

それにしても、このままだと WinRing0 はすご~く地味な船出になりそうだなぁ。私の気合いとは裏腹に(笑)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です