CPU Model |
|
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
TOMMY
一般會員 發表:16 回覆:32 積分:9 註冊:2002-03-15 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
經過這麼多年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 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); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |