![]() |
Multi-Processor - einem Process eine CPU zuweisen
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:
Delphi-Quellcode:
versuche ich es jetzt aber daselbe für ein fremdes program das im taskmanager angezeigt wird
SetProcessAffinityMask(GetCurrentProcess, 1); // 1=CPU0 , 2=CPU1
geht es seltsamerweise nicht
Delphi-Quellcode:
Wo liegt hier mein Denkfehler ? Getcurrentprocess liefert doch auch das handle meiner
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; anwendung zurück oder irre ich mich ? Danke Ralf |
Re: Multi-Processor - einem Process eine CPU zuweisen
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; |
Re: Multi-Processor - einem Process eine CPU zuweisen
Hi,
danke dass war es...
Delphi-Quellcode:
so funzt es
function GetProcessHandleFromID(ID: DWORD): THandle;
begin result := OpenProcess(PROCESS_SET_INFORMATION, False, ID); end; nochmals danke Tschüss Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz