APIのRegQueryValueExstrを使用して取得しようとした所、
STRING型でデータを取得するので正しく取得出来ませんでした。
原因はレジストリの値が16進数だった為でした。
他に良い方法がありましたら、アドバイスをお願い致します。
ええーと…。
16進数のバイナリデータを読んだりするには、
RegQueryValueExのAPI関数の引数に、バイナリデータを読むためのフラグを設置
(ここのサンプルでは、0となっていたかも…?)
すればいいとどこかにあったはずです。
あとは受ける変数をバイト型にすればいいんじゃないでしょうか?
マイクロソフトのMSDNオンラインライブラリとかでわかるかも…。
もしくは、ここで探してもなんとかなりそうな気がします。
(http://www.google.com/search?q=RegQueryValueEx&sourceid=opera&num=0&ie=utf-8&oe=utf-8)
↑googleでAPI名検索
RegQueryValueExstrという関数は…。
聞いたことがないんですけど…。
> RegQueryValueExstrという関数は…。
>聞いたことがないんですけど…。
レジストリの値を取得するAPI関数です。
ネーミングが悪いので有名です。
http://madia.world.coocan.jp/vb/API/RegQueryValueExStr.htm
>CPUのクロック周波数を取得
このレジストリキーはOSによって異なるようですので、
レジストリから取得するのはお勧めできません。
CPUの種類や個数ならGetSystemInfoでも取得できますが、
CPUのクロック周波数をまじめに取得しようと思ったら、
アセンブラを駆使する必要があります。
vectorあたりにDLLが転がってますから、それを利用したほうが楽でしょう。
(計測しているようです。)
BIOSにシステムクロック情報があるはずですから、これとCPU情報から
理論値は計算できると思うのですが、特権レベルで動く必要がありそうなので、
Windows上で取得するにはドライバ作る必要あるかもしれません。
(DOSなら簡単なんですが)
ツイート | ![]() |