如何修改與 Visual FoxPro shelled 應用程式的處理程序優先順序

文章翻譯 文章翻譯
文章編號: 193846 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

處理序的優先順序會決定其執行由 Win32 核心的排程方式。具有較高優先順序的處理程序比低優先順序的處理程序更快速地執行。本文將告訴您,如何修改 shelled 應用程式的處理序優先權。

其他相關資訊

Win32 支援下列四種優先順序類別:
  • 閒置
  • 標準模式
  • 即時
閒置是正確的優先順序,系統監視應用程式或螢幕保護裝置。

一般優先權類別是指出沒有特殊的排程需求與處理程序預設選項。

高優先順序指示執行需要立即執行,讓它正常執行的時間要徑任務的處理程序。高優先順序類別處理程序的引線會正常或閒置優先順序類別處理程序的引線。範例是由使用者不管作業系統上負載呼叫時必須快速回應 [Windows 工作清單。極端謹慎使用時使用高優先順序] 類別 (因為高優先順序類別 CPU 繫結應用程式可以使用幾乎所有可用的循環)。

即時優先順序指出序具有最高的可能優先權。即時優先順序類別處理程序的引線會處理程序的引線所有其他,包括作業系統處理程序執行重要的工作。比方說即時處理程序的執行超過在相當短的時間間隔可能會造成磁碟快取不到排清或造成滑鼠沒有回應。幾乎永遠不應使用此優先順序。

處理序的優先順序是由所指派的其中一個 CreateProcess API 呼叫參數設定。

下列範例會示範在執行 Windows 記事本應用程式在 Windows NT 4.0 及更新版本 Windows 作業系統使用閒置的優先順序。處理的優先順序是由 'dwCreationFlags' 變數傳遞至 CreateProcess() 所控制。四個支援的優先權類別的 DEFINEs 詳列頂端的範例程式。

一次 Notepad.exe 正在執行,來檢查優先順序,啟動 [Windows 工作管理員、 選取 [處理程序] 索引標籤、 Notepad.exe] 上按一下滑鼠右鍵並從快顯功能表選取 [設定優先順序。

完整路徑名稱來 Notepad.exe 可能需要修改工作分派陳述式的變數 'File2Run' 中。

範例程式碼

   #DEFINE NORMAL_PRIORITY_CLASS 32
   #DEFINE IDLE_PRIORITY_CLASS 64
   #DEFINE HIGH_PRIORITY_CLASS 128
   #DEFINE REALTIME_PRIORITY_CLASS 1600

   DECLARE INTEGER CreateProcess IN kernel32.DLL ;
      INTEGER lpApplicationName, ;
      STRING lpCommandLine, ;
      INTEGER lpProcessAttributes, ;
      INTEGER lpThreadAttributes, ;
      INTEGER bInheritHandles, ;
      INTEGER dwCreationFlags, ;
      INTEGER lpEnvironment, ;
      INTEGER lpCurrentDirectory, ;
      STRING @lpStartupInfo, ;
      STRING @lpProcessInformation

   DECLARE INTEGER GetLastError IN kernel32.DLL

   * Startup info is 68 bytes, of which we need to
   * initially populate the 'cb' or Count of Bytes member
   * with the overall length of the structure.
   * The remainder should be 0-filled.
   START = long2str(68) + REPLICATE(CHR(0), 64)

   * PROCESS_INFORMATION structure is 4 longs,
   * or 4*4 bytes = 16 bytes, which we'll initially zero.
   process_info = REPLICATE(CHR(0), 16)

   * Start a copy of NOTEPAD (EXE name must be null-terminated)
   File2Run = "C:\WINNT\NOTEPAD.EXE" + CHR(0)

   * Call CreateProcess, obtain a process handle. Treat the
   * application to run as the 'command line' argument, accept
   * all other defaults. Important to pass the start and
   * process_info by reference.
   RetCode = CreateProcess(0, File2Run, 0, 0, 1, ;
      IDLE_PRIORITY_CLASS, 0, 0, @START, @process_info)

   * Unable to run, exit now.
   IF RetCode = 0
      =MESSAGEBOX("Error occurred. Error code: ", GetLastError())
      RETURN
   ENDIF

   ********************
   FUNCTION long2str
   ********************
   * passed : 32-bit non-negative numeric value (m.longval)
   * returns : ascii character representation of passed
   *    value in low-high format (m.retstr)
   * example :
   *   m.long = 999999
   *   m.longstr = long2str(m.long)
   PARAMETERS m.longval

   PRIVATE i, m.retstr

   m.retstr = ""
   FOR i = 24 TO 0 STEP -8
      m.retstr = CHR(INT(m.longval/(2^i))) + m.retstr
      m.longval = MOD(m.longval, (2^i))
   NEXT
   RETURN m.retstr
						

?考

[進階的 Windows],Jeffrey Richter Microsoft 按頁面 92-103,第三的版 1997 ISBN: 1-57231-548-2

屬性

文章編號: 193846 - 上次校閱: 2005年1月27日 - 版次: 3.4
這篇文章中的資訊適用於:
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
關鍵字:?
kbmt kbhowto KB193846 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:193846
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com