2009-11-25 50 views

回答

3

是的,但是您要使用的函數 不是 可能不是。根據MSDN,在將來的Windows版本中,NTQuerySystemInformation可能會被更改或不可用。您應該使用GetSystemInfo來代替,它位於Kernel32.dll中,可用於Windows 2000及更高版本。

在使用它們之前,您應該學會檢查有關API調用的MSDN。而且,如果你這樣做,你應該學會傾聽,因爲一旦它被棄用,MS可以自由地將它從未來的NTDLL文件中刪除(儘管它們通常不這樣做)。在有可行和受支持的替代方案時,選擇故意使用棄用函數總是一個壞主意。

+0

我之前檢查過MSDN,因爲我看到「NTQuerySystemInformation可能會在未來版本的Windows中被修改或無法使用」,所以我決定在這裏詢問ntdll是否可用於Win XP和Vista。除了這兩者之外,我不關心任何其他操作系統。你怎麼知道這個功能在ntdll for XP或Vista中不可用?此外,GetSystemInfo還會檢索一個系統信息結構,該信息結構中沒有用於獲取CPU使用情況的信息。在使用它之前,您應該學會檢查有關API調用的MSDN;) – 2009-11-25 20:12:30

+0

閱讀文檔。由於它沒有具體說明它*可用,它可能不是。你拒絕直接從製造商口中相信事情並不會改變事情。如果你實際上閱讀了文檔,你應該已經看到了MS應該使用的替代功能,以及它特別適用於XP和Vista的事實(因爲它們是「Windows 2000及更高版本」)。 IOW,如果您確實看到該功能已被棄用,並且目前的替代品可以在您的目標操作系統上運行,那麼您仍然嘗試使用錯誤的功能是沒有意義的。 – 2009-11-25 20:17:52

+0

好吧,它可能不可用,但這並不意味着它不可用(來源:webster's dictionary) - 這完全是你在原始文章中所說的。另外,如果您真的閱讀了文檔並瞭解我在帖子中提問的內容,您會發現沒有建議我需要的信息的功能。你建議的GetSystemInfo()函數不會給我所需的信息 - 返回SYSTEM_BASIC_INFORMATION,它不會給我CPU使用率。 – 2009-11-25 20:38:08

-1

根據下面的網站,「這是Windows需要的文件,刪除文件將導致Windows出現錯誤。」有了這個說法,我認爲所有機器都可以安全地使用它。

http://www.computerhope.com/issues/ch000960.htm

+0

這個鏈接可能表明提到的dll很可能在那裏,其他答案試圖解決問題的根源。 我自己試着避免使用不支持的apis。 – 2009-11-26 18:35:59

2

爲什麼使用無證ntdll.dll的功能呢?您可以使用WMI來獲取CPU使用率。例如使用Win32_Process應該能夠提供幫助。

相關問題