全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3446
推到 Plurk!
推到 Facebook!

CPU Model

 
TOMMY
一般會員


發表:16
回覆:32
積分:9
註冊:2002-03-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-03-15 11:53:47 IP:61.219.xxx.xxx 未訂閱
請問有沒有辨識CPU Model (如Intel PIII or AMD......)的元件 TOMMY
------
TOMMY
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-03-15 13:10:47 IP:61.219.xxx.xxx 未訂閱
引言: 請問有沒有辨識CPU Model (如Intel PIII or AMD......)的元件 TOMMY
有一個X2000的元件組是Free且有Source 其中有一個元件是CPUInfo2000X,可測出CPU種類與速度... 請至本站VCL元件區下載 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
TOMMY
一般會員


發表:16
回覆:32
積分:9
註冊:2002-03-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-03-15 16:09:01 IP:61.219.xxx.xxx 未訂閱
引言:
引言: 請問有沒有辨識CPU Model (如Intel PIII or AMD......)的元件 TOMMY
有一個X2000的元件組是Free且有Source 其中有一個元件是CPUInfo2000X,可測出CPU種類與速度... 請至本站VCL元件區下載 ~~~Delphi K.Top討論區站長~~~
. 謝謝您的幫忙 但是我去vcl元件區 並無法下載此檔案 它是否被鎖上了!? TOMMY
------
TOMMY
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-03-15 18:15:16 IP:192.168.xxx.xxx 未訂閱
引言: 但是我去vcl元件區 並無法下載此檔案 它是否被鎖上了!?
應可以啊?您再試試? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-06 22:02:13 IP:125.225.xxx.xxx 未訂閱
經過這麼多年CPU也不知道出了多少種了,這元件應該是無法辨識新的CPU
恰好有一個開放原始碼的軟體CrystalCPUID已經將各類型的CPU都整理好了
我花了幾天時間將其中關於CPU資訊的物件獨立出來,寫個範例程式
說真的只取CPU類型感覺是浪費了其他功能,有興趣的網友可以看CCpuInfo物件
裡關於GetString,GetData的程式碼,還可以取得很多關於cpu的資訊

檔案下載http://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=90316
範例程式碼
<textarea class="cpp" rows="10" cols="60" name="code">#include "CpuInfo.h" #include "ItemID.h" #include void main() { CCpuInfo CpuInfo(MODE_CPU); char str[256]; CpuInfo.GetString(CPU_FULL_NAME,str); printf("CPU類型:%s\n\n按Enter鍵離開\n",str); getchar(); } </textarea>
toget介紹文章 偵測CPU 的詳細資訊:CrystalCPUID
http://toget.pchome.com.tw/intro/utility_other/24535.html


底下是我在BCB編譯時遇到的問題
1.原本這個軟體也能在windows 9X下執行,但在CallRing0函式
_asm mov ebx,pulEAX
_asm mov edi,pulEDX
_asm mov ecx,ulECX
_asm call fword ptr [CallgateAddr]
上一行會顯示編譯錯誤的訊息,我只好將有CallRing0的地方都註解掉
所以本範例無法在windows 9X下執行
2.原本以為會用到.dll.sys檔案,但實際追蹤原始碼後發現在
<textarea class="cpp" rows="10" cols="60" name="code">#ifdef _CPU_INFO if( IsNT() && handle == NULL ){ BOOL Flag = FALSE; if( LoadDriver(DRIVER_FILE_NAME,DRIVER_NAME) == TRUE ){ Flag = TRUE; gFlagStatus = 0;/* DLL_NOERROR */ } } #endif </textarea>
因為沒有定義_CPU_INFO,所以LoadDriver根本就執行不到SysInfo.sys
但也不影響最後的結果,只是我沒時間再深入了解SysInfo.sys
3.其實光靠cpuid這個指令就可以取出CPU的各項資訊,假如嫌這個範例執行
速度太慢的話(會延遲1秒),可以看原始碼看cpuid第一個參數要填哪個值
來取得所需的資料
DWORD EAX, EBX, ECX, EDX;
cpuid(0x0, &EAX, &EBX, &ECX, &EDX);
系統時間:2024-11-24 16:39:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!