WinRing0 1.0.2

 連日の不具合修正… 申し訳ない。

1.0.1 からの修正点

◇WinRing0.dll (1.0.2.3)

  • InstallOpenLibSys/UninstallOpenLibSys を Win 9x から呼び出した場合 FALSE を返すように修正
  • GetRefCount 内部でドライバの呼び出しに失敗した場合の返り値を 0xFFFFFFFF (-1) から 0 に変更
    ※実用上の変化はありません。

◇OlsDriverManager (1.0.1.2)

  • ドライバのインストール/アンインストールに失敗したときのエラーメッセージを修正
    ※Success に対して何故か Failed になっていたのを Failure に変更

◇WinRing0SampleCpp.exe (1.0.1.2)

  • GetDllStatus() が OLS_DLL_UNSUPPORTED_PLATFORM を返しているにも関わらず、RunAsRestart を呼び出していた不具合を修正。

◇WinRing0SampleCs.exe (1.0.2.3)

  • ダイアログの微調整

公式サイト:OpenLibSys.org

◇ダウンロード:WinRing0 1.0.2

 昨日、WinRing0 に関して初めて海外からメールが届きました。海外にもユーザーはいるようでひと安心。あれだけ気合いを入れて英語マニュアル作ってユーザーが一人もいなければ悲しいですからね。その方から CrystalCPUID を VisualC++ 2005 でビルドしようとしたら警告とエラーが出まくりなんだけど・・・とのコメントもいただきました。えぇ。私も同感です。だから CrystalCPUID 5.1 は 1 から作り直しなんです。

おすすめ

8件のフィードバック

  1. Nel より:

    Good work. I enjoy it !!!
    One thing only : The title project … If most of functions really need the kernel mode, some of them can be used in the user mode.
    And a title with the ‘kit’ keyword inside will give your project a greater dimension 😉
    It’s a really very good work you did.

  2. hambox より:

    1.xの公開おめでとうございます。パチパチパチ!
    待っていました。

    早速、当方のプログラムもこれに併せて書き換えまっす。

  3. hiyohiyo より:

    > Nel
    Thank you for your comment.
    Internal name of WinRing0 is “OpenLibSys Core SDK”, but I named this project after “WinIo” (http://www.internals.com/) because I respect WinIo project.

    I think that almost all of programmers which know “Ring0” make out aim of this project by the name.

  4. hiyohiyo より:

    > hambox さん
    ようやく正式版公開にこぎつけました。
    最後の追い込みでだいぶバグは潰せたと思いますが、何かお気づきの点がありましたらご連絡ください。

    また、hambox さんのプロジェクトが一般公開された暁にはぜひご連絡ください。

  5. hambox より:

    マニュアルでは、戻り値がBOOLになっているのですが、ソースコード上(OpenLibSys.cs)ではintとかを返すようになっているAPIが多数あるように見えます。たとえば、RdMsrExとかCpuidExとか。

    おそらくそのせいだと思われるコンパイルエラーが当方で出ています。
    上記APIの戻り値をBOOL型で取得しようとすると出ます。
    OpenLibSys.csを書き換えて、上記APIの戻り値をboolにすれば、このコンパイルエラーは出なくなるので、ビンゴだと思うのですが。。。

    ソースコードかマニュアルかどちらかの、単なる修正漏れだと勝手に推測しておりますが、いかがでしょうか。

  6. hiyohiyo より:

    > hambox さん
    Visual C++ における BOOL とは、int のことです。
    詳細は、http://msdn2.microsoft.com/en-us/library/aa383751.aspx
    を見ていただきたいのですが、C 言語には所謂 bool 型がないため typedef されているわけです。

    したがって、ソースコードもマニュアルもどちらも正確です。ただ、基本的に Visual C++ プログラマ向けにマニュアルは作成しているので、DWORD や DWORD_PTR など VC プログラマ以外にはなじみがない点も多々あるのかと思います。

    近いうちに .NET プログラマ向けの説明ページをマニュアルに追加させていただきたいと思います。

    今回の件については、bool ではなく int を使用すれば問題なく動作するはずです。

    また、.NET から Win32 スタイルの API を呼び出す方法は
    https://crystaldew.info/2007/07/31/net-winring0/
    に参考リンクをまとめております。

  7. hambox より:

    どもです。
    WinRing0アルファ版のときは、自分で、C#のコードの中で、

    [DllImport(“WinRing0.dll”)]
    protected unsafe static extern Boolean RdmsrEx(UInt32 uintIndex, UInt32* uintEAX, UInt32* uintEDX, UInt32 uintAffinityMask);

    とやっていたので、気がつきませんでした。(^^;;;)
    helpの記載が大文字だった時点でtypedefってことに気づくべきでした。
    ただの言い訳ですが、C言語からC#に乗り換えて長いこと経過していたので、すっかり忘れていました。

    でも、VC++であってもいつからか忘れましたが、かなり前からbool型はあります・・・よ。もちろん、typedef intではなく、size of 1byteの型としてです。

    VC++の中ではBOOLとboolで型の扱いが違うってことで。

    同じ情報を渡すなら、効率が落ちない限りにおいてバイト数を小さくした方がエライ、という前提が成り立つとすれば、RdmsrEx()の戻り値の趣旨的にはboolなんですよね?まぁ、他にも色々事情があってBOOLになっているのだろうと推測していますが。

    あと、とってつけたような記載で恐縮ですが、コードサイニングありがとうございます。ほんと、便利に使わせてもらっています。

  8. hiyohiyo より:

    > hambox さん
    どんな言語からでも使用できるよう Win32 API で標準的に使われている型を使用しております。

    > あと、とってつけたような記載で恐縮ですが、コードサイニングありがとうございます。ほんと、便利に使わせてもらっています。

    どういたしまして。

コメントを残す

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