2012-07-16 19 views

Trả lời

3

dân thường làm loại công cụ này thông qua WMI, nhưng nó thất bại trong việc cung cấp thông tin hữu ích rất nhiều lần, thậm chí cung cấp "sai" thông tin vì đôi khi nó dựa vào nhà cung cấp điền thông tin từ BIOS (thông qua SMBIOS), thường xuyên bị trống hoặc không đúng, thay vì liên lạc với phần cứng cụ thể.

Tôi đã trải qua trải nghiệm này trước khi nhận thông tin RAM. WMI cung cấp thông tin BIOS sai và tôi thấy rằng chip RAM đi kèm với chip SPD (Serial Presence Detect) đặc biệt mà tôi cần để liên lạc. Cuối cùng, chủ nhân của tôi đã chọn API CPUID.

Ở đây tác giả CPU-Z nói một chút về chủ đề này trong một cuộc phỏng vấn:

http://www.techpowerup.com/mobile/reviews/Interviews/Franck_Delattre/1.html.

Để nhận thông tin như thế này, bạn cần tìm kiếm cách giao tiếp với không gian cấu hình PCI ở chế độ hạt nhân thông qua trình điều khiển hoặc đi một số API thay thế sẽ thực hiện việc này cho bạn.

Dưới đây là một số liên kết Tôi đã trải qua vào thời điểm đó:

http://www.codeproject.com/Articles/35378/Access-Physical-Memory-Port-and-PCI-Configuration

http://support.microsoft.com/?scid=kb;en-us;253232&x=3&y=13

http://www.hollistech.com/Resources/Misc%20articles/getbusdata.htm

http://www.osronline.com/showThread.CFM?link=176210#T4

Ngoài ra, tôi nghĩ là đáng kể về các hàm SetupDi trong Windows đôi khi là abl e để cung cấp thông tin mà WMI không thể.

+0

Cảm ơn Chico. Tôi đã đi qua SetupDi Api. Mặc dù chúng có vẻ tốt hơn WMI, chúng vẫn không đáng tin cậy hầu hết thời gian. Thật đáng ngạc nhiên là khó tìm ra một ví dụ tốt cho loại công cụ này như thế nào. Nếu tôi kết thúc việc tìm kiếm một cách đáng tin cậy, tôi sẽ đăng nó lên github :) – ivymike

+0

@ivymike ok, tôi đã không may mắn với thông tin RAM, KHÔNG CÓ NGUỒN TIN CẬY để trích xuất thông tin từ các chip SPD. Tôi đã có thể xây dựng một trình điều khiển đơn giản để kích hoạt SMBUS cho một ICH cụ thể (chip cầu nam của Intel) được xây dựng trên bo mạch chủ PC cũ của tôi. Kích hoạt SMBUS là bước đầu tiên để trích xuất thông tin từ các chip này, tôi đã tìm thấy một số hướng dẫn về gói linux lm-sensor có một mô-đun cho giao tiếp SMBUS và một kịch bản perl để giải thích dữ liệu SPD. Dù sao, tôi đã làm điều đó giống như một bằng chứng về khái niệm, nó hoạt động dựa trên biểu dữ liệu của phiên bản ICH cụ thể của tôi, có ... –

+0

@ivymike ... địa chỉ không gian cấu hình PCI cụ thể. Thông số kỹ thuật phần cứng thay đổi ngay cả từ phiên bản sang phiên bản cho cùng một nhà cung cấp. Tôi cần hỗ trợ danh sách các nhà cung cấp. Đây là những gì CPUID API làm, và cũng là những gì mà gói lm-sensor thực hiện. Nguồn đáng tin cậy duy nhất sẽ thực hiện loại nỗ lực hỗ trợ phần cứng khổng lồ này. –

Các vấn đề liên quan