प्रोसेस आईडी प्रोसेस ऑब्जेक्ट के साथ जुड़ा हुआ एक मूल्य है, और जब तक प्रक्रिया ऑब्जेक्ट अभी भी आस-पास है, इसलिए इसकी प्रक्रिया आईडी भी होगी। प्रक्रिया ऑब्जेक्ट तब तक बनी रहती है जब तक कि प्रक्रिया अभी भी चल रही है (प्रक्रिया स्पष्ट रूप से खुद के लिए एक संदर्भ बनाए रखती है) या जब तक किसी को अभी भी प्रक्रिया ऑब्जेक्ट का एक हैंडल होता है।
यदि आप इसके बारे में सोचते हैं, तो यह समझ में आता है, क्योंकि जब तक प्रक्रिया को संभालना बाकी है, तब तक कोई व्यक्ति WaitForSingleObject को प्रक्रिया से बाहर निकलने का इंतजार कर सकता है, या वे एक्ज़िट कोड प्राप्त करने के लिए GetExitCodeProcess को कॉल कर सकते हैं, और वह निकास कोड बाद में पुनः प्राप्ति के लिए कहीं संग्रहीत किया जाना है।
जब सभी हैंडल बंद हो जाते हैं, तो कर्नेल जानता है कि कोई यह पूछने वाला नहीं है कि प्रक्रिया अभी भी चल रही है या उसका एक्जिट कोड क्या है (क्योंकि आपको उन सवालों को पूछने के लिए हैंडल की आवश्यकता है)। जिस बिंदु पर प्रक्रिया ऑब्जेक्ट को नष्ट किया जा सकता है, जो बदले में प्रक्रिया आईडी को नष्ट कर देता है।
यदि कोई OpenProcess को किसी ज़ोंबी प्रक्रिया पर कहता है तो क्या होता है? एक ही बात यह है कि अगर वे इसे एक चल रही प्रक्रिया पर कहते हैं: वे इस प्रक्रिया को संभालते हैं। आप एक ज़ोंबी प्रक्रिया को क्यों संभालना चाहते हैं? ठीक है, आप नहीं जानते होंगे कि यह अभी तक एक ज़ोंबी है; आप संभाल रहे हैं ताकि आप WaitForSingleObject को कॉल कर सकें, यह देखने के लिए कि क्या यह अभी तक बाहर निकल गया है। या हो सकता है कि आपको एक हैंडल मिल जाए, यह जानकर कि यह एक ज़ोंबी है, क्योंकि आप गेटएक्सिटकोडप्रोसेस को यह देखना चाहते हैं कि बाहर निकलने का तरीका क्या था।