いつもお世話になっています。
PdhExpandWildCardPathの使い方か、
サンプルをご存じの方よろしくお願いします。
こんにちは.この関数をどんな目的でどのDelphiのバージョンで,どのOSで使用するかは
分かりませんが,ネットで検索すると,JEDI API Libraryを使用したサンプルがあります.
これでは問題があるということでしょうか.
このサイトにも前にスレッドがあったようです.
https://www.petitmonte.com/bbs/answers?question_id=6675
https://www.petitmonte.com/bbs/answers?question_id=6653
マイクロソフト・オンライン...
http://msdn.microsoft.com/en-us/library/aa372606%28VS.85%29.aspx
Mr.XRAYさんありがとうございます。
JEDI API Libraryを使用しましたが、たしかに
サンプルも検索し試しましたが、WinXpではOK
なのですが、Win7ではエラーでした。
WinXp Delphi7で作成 WinXp OK Win7 エラー
Win7 Delphi2010で作成 WIN7 エラ−
JEDI API LibraryがWin7ぬい対応できていないと
言う事でしょうか? APIはVer2.3です。
よろしくお願いします。
http://msdn.microsoft.com/en-us/library/aa372606%28VS.85%29.aspx
の記事に
Prior to Windows Vista: Partial wildcard matches are not supprted.
とありますから,これが原因ではないのですか.
ともかく,
>サンプルをご存じの方よろしくお願いします。
というご要望にはお答えしたことになりますね(笑).
参考までに,
http://ht-deko.minim.ne.jp/tech045.html#tech095
Mr.XRAYさんへありがとうございます。
初心者なものですみませんでした。
今後もよろしくお願いします。
こんにちは.その後どうですか.
参考までに,と書いた記事は読んでいただけたのてしょうか?
でしたら,
>サンプルも検索し試しましたが、WinXpではOK
とありますが,どんなサンプルでどんなコードでどんなエラーが現れるのか
分からないと検討のしようもないと思いますが... いかがでしょうか.
Mr.XRAYさんへ水曜日から仕事の都合でチェックできなったため
返事が遅れすみませんでした。
参考の記事は読ませていただきました。
また、発生するエラーは初期化に失敗しましたとのメッセージ
(実行時)です。
参考にしたコードは、下のコードです。
http://w-shadow.com/blog/2009/04/17/per-core-cpu-usage/
また、MSDNのページも参照しましたが、多分7でも同じとの感触
ですが、それ以上は不明でした。
現在探している途中ですが、上記のページのコードを
windows7で動作させるにはとの点で検討中です。
PdhExpandWildCardPathを使わず、WMI等でCORE数を取得しておいて
その分のcounterを用意して取得するとかでしょうか?
よい方法があればよろしくお願いします。
参考にした記事とコードはここのですよね.
http://w-shadow.com/blog/2009/04/17/per-core-cpu-usage/
>また、発生するエラーは初期化に失敗しましたとのメッセージ
上のURLのコードですと,この最初のQuery生成でも発生します.
if PdhOpenQuery(nil, 0, Query) = ERROR_SUCCESS then begin
できれば,数箇所にこのような,エラーが発生しなければ次に進むようになっている
ところがあります.
そのどこで発生するか調べていただくと,貴重な情報になります.
調べ方は,then begin のすぐ下の行に, ShowMessage('HogeHoge');
とでも入れてみてください.
これも確認ですが,開発実行環境は,
Win7 + Delphi2010 と
JEDI API Libraryはどこのでしょうか,当方の手元には以下のものがあります.
http://sourceforge.net/projects/jedi-apilib/files/win32api%20%28Win32%20API%29/
のwin32api (Win32 API)の 1.2の win32api_1_2.zip
多分ここのも同じものがおいてあると思いますが.
http://jedi-apilib.sourceforge.net/
>APIはVer2.3です。
ということなので,これですね.2009-09-22になっているからUnicoce対応なのかな.
JEDI API 2.3 and JEDI WSCL 0.9.3.zip
http://sourceforge.net/projects/jedi-apilib/files/
こんにちは,
サンプルをUPしました.参考にしてください.
http://mrxray.on.coocan.jp/Delphi/plSamples/475_CpuUsageRate.htm
本当は,質問された方のチェックを待って,それをチェックしてからと思いましたが,
そのために,この掲示板をちょくちょく覗きに(漢字が違うかな)くるのも面倒なので.
それと,WMIでもWin32_ProcessorでCPUの使用率を取得できますが,
これはコアごとは無理なようです. たとえは
http://mrxray.on.coocan.jp/Delphi/plSamples/475_CpuUsageRate.htm#03
のページの図8,9ではコア数8ですが,WMIでは2としか認識してくれません.
また,WMIのWin32_Procesorでは,CPUの使用率に結構時間かかるようです.
他のクエリーが使えるかどうかは分かりません.
Mr.XRAYさんサンプルまでありがとうございました。
非常に参考になりました。
確かに、WMIで試すと正しいコア数を取得できませんでした。
また結構時間がかかるのも確かです。
CPUのコア数の取得ですが、CPUによってはPDH.DLLを使用しても
正しく取得できない事があるようです。
試した中では、NECのpentium dual-core搭載PCでは、コア数が
1と表示されたのを確認しました。すべてかどうかはわかりません
が、引続き調べたいと思います。
PDH.DLLは有用な情報が多い割にはWebの情報が少ないです。
以前、PDHでDISKアクセスのランプをシュミレートするソフトを
作成した事があります。
またないにかありましたらよろしくお願いします。
こんにちは.パフォーマンスカウンタの中に該当関数を見つけました.
サンプルです.ただし,クエリー実行中はアプリケーションに対する操作が
できませんので,ちょっとギクシャクするようです.
何か方法があるのかも知れません.
07_WMIを利用したCPU使用率の取得
http://mrxray.on.coocan.jp/Delphi/plSamples/475_CpuUsageRate.htm#07
>試した中では、NECのpentium dual-core搭載PCでは、コア数が
(*)の部分を(*\*)または(*/*)としたらどうなるでしょう?
>こんにちは.パフォーマンスカウンタの中に該当関数を見つけました.
失礼!!
WMIのパフォーマンスカウンタ関係の関数のことです.
Mr.XRAYさんいつもありがとうございます。
またNECのpentium dual-coreのマシンで試して
報告させていただきます。
また、WMIの情報もありがとうございました。
Mr.XRAYさんへご報告です。
>(*)の部分を(*\*)または(*/*)に変えて試してみました。
結果2Core分正しく表示されるようになりました。
タスクマネージャーは1Core分しか表示されていないのが不思議
ですが、PDH.DLLは使用していないのでしょうか?
タスクマネージャーで1Coreしか表示されていなかったので、PDH
でも同じになっていると思っていました。
なお機種はNECのMate PentiumDualCoreE2200 マザーは、NEC
MS7410となっていました。
どうもありがとうございました。
>結果2Core分正しく表示されるようになりました。
あれっ.マジですか.かなりいい加減な予測だったんですが,
当方も今,テストしてみました.
CPUは以下です.拙作のWMIのサンプルで調べました(笑)
(*\*)はNGでした.(*/*)はOKでした.
Intel(R) Core(TM) i7 CPU 860 @2.80GHz 2.80GHz
Intel64 Family 6 Model 30 Stepping5
MSDNオンラインを見たら,以下のようになっていました.\というのはないですね.
大変失礼しました.インスタンスの子分岐は'/'でした.
サンプルプログラム集のコードも修正しておきます.
いい加減なレスなのに,動作確認ありがとうございました.
/ Separates instance and parent instance.
多分CPUのコントロールICのアルゴリズムが違うのではないかと思っています.
>タスクマネージャーで1Coreしか表示されていなかったので、PDH
タスクマネージャーはどうなふうにやっているんでしょうね?
何かわかったら教えてください.
あっ,CPUコントローラの型式は調べていません.
ツイート | ![]() |