AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Multi-Processor - einem Process eine CPU zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Multi-Processor - einem Process eine CPU zuweisen

Ein Thema von th_bone · begonnen am 27. Okt 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
th_bone

Registriert seit: 16. Jun 2004
172 Beiträge
 
Delphi 2005 Professional
 
#1

Multi-Processor - einem Process eine CPU zuweisen

  Alt 27. Okt 2005, 12:20
Hi,

ich will einem programm in einem Multiprocessor system eine spezielle CPU zuweisen...

wenn ich das für mein eigenes program mache dann funktioniert dieser code:

SetProcessAffinityMask(GetCurrentProcess, 1); // 1=CPU0 , 2=CPU1 versuche ich es jetzt aber daselbe für ein fremdes program das im taskmanager angezeigt wird
geht es seltsamerweise nicht

Delphi-Quellcode:
function GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID;
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;

function GetProcessHandleFromID(ID: DWORD): THandle;
begin
  result := OpenProcess(SYNCHRONIZE, False, ID);
  CloseHandle(result);
end;

procedure TForm1.Button1click(Sender: TObject);
var
handle: thandle;
begin
     handle:=GetProcessHandleFromID(GetProcessID('SOUNDMAN.EXE')); ;
     SetProcessAffinityMask(handle, 1); // 1=CPU0 , 2=CPU1
end;
Wo liegt hier mein Denkfehler ? Getcurrentprocess liefert doch auch das handle meiner
anwendung zurück oder irre ich mich ?

Danke

Ralf
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#2

Re: Multi-Processor - einem Process eine CPU zuweisen

  Alt 27. Okt 2005, 12:34
hier zerstörst du das Handle, bevor irgendwer irgendwas damit anfangen konnte (CloseHandle)... des weiteren dürften mehr Permissions als nur SYNCHRONIZE notwendig sein, um die Affinität zu ändern:
Delphi-Quellcode:
function GetProcessHandleFromID(ID: DWORD): THandle;
begin
  result := OpenProcess(SYNCHRONIZE, False, ID);
  CloseHandle(result);
end;
  Mit Zitat antworten Zitat
th_bone

Registriert seit: 16. Jun 2004
172 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Multi-Processor - einem Process eine CPU zuweisen

  Alt 27. Okt 2005, 12:52
Hi,

danke dass war es...

Delphi-Quellcode:
function GetProcessHandleFromID(ID: DWORD): THandle;
begin
  result := OpenProcess(PROCESS_SET_INFORMATION, False, ID);
end;
so funzt es

nochmals danke

Tschüss

Ralf
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz