Zum Ändern der Prozesspriorität einer ausführbaren Anwendung mit Visual FoxPro

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 193846 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Ein Prozess Priorität bestimmt, wie die Ausführung vom Kernel Win32 geplant wird. Prozesse mit höherer Priorität schneller als Prozesse mit einer niedrigeren Priorität ausgeführt. Dieser Artikel beschreibt die Priorität Verarbeiten einer ausführbaren Anwendung ändern.

Weitere Informationen

Win32 unterstützt die folgenden vier Prioritätsklassen:
  • Im Leerlauf
  • Normal
  • Hoch
  • Echtzeit
Im Leerlauf ist die richtige Priorität für die Systemüberwachung Anwendungen oder Bildschirmschoner.

Normale Priorität-Klasse ist die Standardeinstellung, die einen Prozess mit keine besondere Planung erforderlich angibt.

Hoher Priorität gibt an einen Prozess, der erfordern sofortige Ausführung für die richtig Ausführung zeitkritische Aufgaben ausführt. Die durch die Softwarelizenz bedingten die Threads eines Prozesses High-Prioritätsklasse haben Vorrang vor die Threads der Priorität normal oder im Leerlauf-Klasse Prozesse. Ein Beispiel ist der Windows-Aufgabenliste, die beim Aufruf durch den Benutzer, unabhängig von der Last auf dem Betriebssystem schnell reagieren müssen. Verwenden Sie äußerste Vorsicht beim verwenden die Klasse hoher Priorität, da eine hohe Priorität Klasse CPU-gebundene Anwendung fast alle verfügbare Zyklen verwenden kann.

Gibt die Realtime-Priorität einen Prozess an, die höchste mögliche Priorität hat. Die durch die Softwarelizenz bedingten die Threads eines Prozesses Klasse Realtime-Priorität haben Vorrang vor die Threads des alle anderen Prozesse, einschließlich Betriebssystemprozesse wichtige Aufgaben. Beispielsweise führt einen Echtzeit-Prozess, für mehr als ein äußerst kurzen Zeitraum Datenträgercaches nicht entleert werden oder führen die Maus nicht reagiert werden verursachen kann. Diese Priorität sollte fast nie verwendet werden.

Der Prozess Priorität ist durch Zuweisen einer der Parameter der CreateProcess-API-Aufruf festgelegt.

Das folgende Beispiel veranschaulicht Ausführen der Anwendung Windows Editor unter Windows NT 4.0 und spätere Windows-Betriebssysteme ein Leerlaufpriorität verwenden. Die Prozesspriorität wird durch die 'DwCreationFlags'-Variable an CreateProcess() übergeben gesteuert. DEFINEs für die vier unterstützten Prioritätsklassen werden am oberen Rand des Beispielprogramms aufgeführt.

Einmal wird Notepad.exe, ausgeführt, um untersuchen Sie die Priorität, starten Sie den Windows Task-Manager, wählen Sie die Prozesse Registerkarte, klicken Sie mit der rechten Maustaste auf Notepad.exe und wählen Sie aus dem Popupmenü Priorität festlegen.

Der vollqualifizierte Pfadnamen zu Notepad.exe müssen Änderungen in die Zuweisungsanweisung Variable 'File2Run'.

Beispielcode

   #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
						

Informationsquellen

"Erweiterte Windows", Jeffrey Richter, Microsoft Press, Seiten 92-103, Third Edition 1997, ISBN: 1-57231-548-2

Eigenschaften

Artikel-ID: 193846 - Geändert am: Donnerstag, 27. Januar 2005 - Version: 3.4
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbhowto KB193846 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 193846
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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