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 から作り直しなんです。
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.
1.xの公開おめでとうございます。パチパチパチ!
待っていました。
早速、当方のプログラムもこれに併せて書き換えまっす。
> 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.
> hambox さん
ようやく正式版公開にこぎつけました。
最後の追い込みでだいぶバグは潰せたと思いますが、何かお気づきの点がありましたらご連絡ください。
また、hambox さんのプロジェクトが一般公開された暁にはぜひご連絡ください。
マニュアルでは、戻り値がBOOLになっているのですが、ソースコード上(OpenLibSys.cs)ではintとかを返すようになっているAPIが多数あるように見えます。たとえば、RdMsrExとかCpuidExとか。
おそらくそのせいだと思われるコンパイルエラーが当方で出ています。
上記APIの戻り値をBOOL型で取得しようとすると出ます。
OpenLibSys.csを書き換えて、上記APIの戻り値をboolにすれば、このコンパイルエラーは出なくなるので、ビンゴだと思うのですが。。。
ソースコードかマニュアルかどちらかの、単なる修正漏れだと勝手に推測しておりますが、いかがでしょうか。
> 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/
に参考リンクをまとめております。
どもです。
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になっているのだろうと推測していますが。
あと、とってつけたような記載で恐縮ですが、コードサイニングありがとうございます。ほんと、便利に使わせてもらっています。
> hambox さん
どんな言語からでも使用できるよう Win32 API で標準的に使われている型を使用しております。
> あと、とってつけたような記載で恐縮ですが、コードサイニングありがとうございます。ほんと、便利に使わせてもらっています。
どういたしまして。