Einzelnen Beitrag anzeigen

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, 13: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