Wie HANDLE kopieren?
-
Hi
In einer Funktion starte ich eine Prozess über CreateProzess. Ich möchte nun die STARTUPINFO global speichern, damit ich später diese nutzen kann (ProcessID usw.).
Wie jedoch lege ich eine Kopie an, so dass die HANDLE's in der Kopie immer noch valid sind? STARTUPINFO muss lokal in der Funktion instanziert werden.MfG Joe
-
Wo deine STARTUPINFO ist schonmal komplett egal, ich nehme an du meinst die PROCESS_INFORMATION.
Das Handle bleibt solange "valid" bis du es mit CloseHandle freigibst.
Wo deine PROCESS_INFORMATION lebt ist dabei auch ganz egal, du musst in jedem Fall das Handle "von Hand" freigeben, sonst hast du ein Handle Leak.
Und bevor du es nicht freigegeben hast kannst du es rumkopieren wie du willst, einfach mit "=".Dasselbe gilt im Übrigen für das Handle auf den "primary Thread" des neuen Prozesses, das musst du auch selbst freigeben.
BTW: bissi MSDN lesen schadet nicht:
MSDN schrieb:
Handles in PROCESS_INFORMATION must be closed with CloseHandle when they are no longer needed.
-
Kopier dir doch die Weerte der Struktur einfach in andere Variablen. Wo ist das Problem?