11 月 24

技術メモ - 注意点、備忘録、そんなの

ずいぶん前に見つけたナイスサイト。忘れないうちにメモメモと。

11 月 24

ずいぶん前から製作を予告していた MSR Editor がようやくできました。

使い方は簡単なので、説明はありません。わかる人だけ使ってください。ちなみに、x86 版の実行ファイルしか用意していません。33 プロセッサ以上の環境の方は必要に応じて適当にビルドしてください。32 プロセッサまでは、x86 版で十分です。

OpenLibSys.org からダウンロードできます。

olsmsreditor.png

11 月 24
  • WinRing0 1.0.10 に更新
11 月 24

◇公式サイト

1.0.9 からの変更点

WinRing0NT4.sys を廃止し、WinRing0.sys に統合しました。

◇WinRing0.dll (1.0.10.11)

  • NT4 で実行した際に OLS_DRIVER_TYPE_WIN_NT を返すように変更しました。

■メモ

NT4 専用ドライバ廃止に至った経緯は、あれ?NT4 でも動くぞ?? をご覧ください。

今度こそ最終版!!だと良いのですが・・・。リビジョンが 10 になってしまった。

11 月 24

本当に今更なんですが、カーネルモードドライバ内部での構造化例外処理って NT4 でも使えるみたいです。ずいぶんに前に、使えないということで NT4 のドライバを分離したんですが、当時の記憶はもはやあいまい。

VirtualPC 上にテスト用として構築した NT4 の SP1/SP6 で試してみたのですが、両方ともカーネルモード構造化例外処理をちゃんとやってくれます。アレ???

調査の結果

[PRB] エラー メッセージ : デバイス ドライバがエントリ ポイント _Except_Handler3 (ドライバ Ntoskrnl.exe) を見つけられませんでした

つまり、適切なライブラリをリンクさえすれば、NT4 でも構造化例外処理をしてくれるわけです。SysInfo を開発していた頃は Windows XP DDK を使用していたのですが、WinRing0 では、WDK を使用していました。WDK では上記不具合が修正されたということのようです。サポート対象外なのにすばらしい。

というわけで、WinRing0 の 1.0.10 を近日中にリリースします。NT4 なんて使っている人いないとか野暮なことは言わんでください。SysInfo の修正は・・・まぁ、いいか。って感じであります。

11 月 24

NyaRuRu さん企画の [XNA]チューニング勉強会のお知らせ (開催: 11月23日) に参加してきました。

もう熱い熱い!!XBOX 360 も持っていませんし、XNA を使ったこともないわけですが、内容は大変興味深いものばかりで、とても刺激をうけました。それにしても時代は .NET なんだなぁ~と。

飲み会では、ダウンスキャンコンバータを使ってカラオケ用テレビに PC を接続し、各自用意してきたネタが次々と披露されました。こういう参加型?な飲み会は初めてだったのですが、とても楽しかったです。ホント皆さんすんごいネタをお持ちで・・・。自作ゲームはやっぱりいいですねぇ~カッコいいし楽しいし。

ちなみに、デジタル署名&WinRing0 ネタで参戦しました。ネタ的に、ジャンル違いすぎだろ(笑)とも思ったのですが、これしかネタないし・・・。

参加者の方から、UAC について調べていたときに「デジタル署名のまとめ(Vista x64対応)」を見ましたよぉ~とのコメントをいただき、このブログもちょっとぐらいは誰かの役にたっていたようでほんのりうれしかったです。あと、デバイスドライバを開発した経験のある方と、仮想PCソフトのおかげでドライバの開発は本当に楽になったねぇ~とか、○○○ に立候補したので、よろしくお願いしますとか(ずうずうしい)。

先週も思いましたが、こういうイベントに参加するととにかくプログラマとして刺激を受けられるのはいいですね。私もいつかこういうイベントを企画する側になりたいものです。 

とりあえず、来年は久しぶりに CPU について熱く語るオフ会を企画したいなぁ。単独企画だと人が集まらないような気もするので合同企画かな・・・って、どこと?

11 月 23
  • WinRing0 1.0.9 に更新
11 月 22

不具合が発見されたため 1.0.8 の公開は停止させていただき、欠番とさせていただきました。 

◇公式サイト

1.0.7 からの変更点

◇WinRing0.dll (1.0.9.10)

  • デバイスドライバのロードに関する致命的な不具合を修正
    特殊な状況において、サービスの残骸を削除できない問題がありました。ちなみに、SysInfo にはこの問題はありませんでした orz。改悪していたようです。
  • ネットワークドライブから起動したときの専用エラー OLS_DLL_DRIVER_NOT_LOADED_ON_NETWORK を追加

◇WinRing0SampleCpp.exe (1.0.6.7)

  • OlsApiInit.h の InitOpenLibSys 内で InitializeDll を呼び忘れていた不具合を修正 
  • OLS_DLL_DRIVER_NOT_LOADED_ON_NETWORK に対応
  • 常に管理者権限で実行するように修正

◇WinRing0SampleCs.exe (1.0.6.7)

  • OLS_DLL_DRIVER_NOT_LOADED_ON_NETWORK に対応
  • 常に管理者権限で実行するように修正
  • Win9x で動作しない不具合を修正

■メモ

必要に応じて動的に管理者権限を取得する方法を見出し、C++/C# のサンプルに適用していたのですが・・・

複数のアプリを同時起動すると最初のアプリのみ管理者権限で動作し、それ以降は非管理者権限で動作します。ドライバは非管理者権限でも読み込めるので良いアイディアだと思ったのですが、先に管理者権限で動作していたアプリを終了してしまうと。最終的にドライバの削除が出来ないということに今更ながら気がつきました。

 したがって、サンプルアプリは常に管理者権限で動作するように修正いたしました。

11 月 22

BUG: MSVCR80D.dll が見付からなかったため、 Visual Studio 2005 での MFC アプリケーションの変換のときのエラー メッセージ:「このアプリケーションがこのアプリケーションは開始できていません」

そんなバカなって感じですが、我が家でも初再現。クロックを落としてからリビルドしたら直った。

11 月 21

Quick Tour Of New MFC Functionality によると Visual C++ 9.0 では、リボンインターフェースが使えるとか。私は、ダイアログベースのアプリしか開発していないので、当面使う可能性はないと思いますが。

ちなみに、VC9 は Win98/Me で動作しないバイナリを生成するためすぐに移行できないのが難点。