 بسم اللہ الرحمن الرحیم، آج ہم موڈیول 93 دیسکس کریں گے، موڈیول 93 ہے process identities ہم نے دیکھا تھا کہ ہم ایک process کو create کر سکتے ہیں process کو create کرنے کے لیے create process کی API use ہوتی ہے جو بھی parent process ہوتا ہے وہ create process کی API کو call کرتا ہے اور اس کے result میں اگر سب کچھ صحیح ہو، process create ہو جاتا ہے اور یہ کوئی handle return نہیں کرتا بلکہ اس کے parameters کے اندر جو بھی process create ہوتا ہے اس کا handle ملتا وہ handle کیس کے اندر ملتا ہے وہ ایک process information structure ہوتا آپ وہ process information structure create process کو pass کرتے ہیں as a reference variable اور create process جو ہے in return جب process create ہوتا ہے تو جو بھی result آتا ہے اس کے handles ہیں اس کو process information structure کے اندر place کرتا تھا اب دو basically return اس لی نہیں ہوتی کیونکہ return value ایک ہوتی ہے یہ جو ہمارا function ہے create process کا اگر return کرے گا تو صرف ایک value return کر سکتا ہے اس کو parameters میں pass کرنی پڑتی ہیں values کیونکہ دو چیزیں اس کے اس میں return ہوری ہیں ایک process کی information اور ایک thread کی information کیونکہ جب ایک process create ہوگا تو ساتھ اس کا primary thread بھی create ہوگا اور process کے بارے میں دو information ہے ایک اس کا handle ہے اور ایک اس کا id اسی طرح سے ایک thread کا handle ہے اور ایک اس کا id id اور handle میں کیا difference ہے وہ ہم previously discuss کر چکے ہیں اب آپ اگر کسی ایک child process کو کے handle کو جو ہے آپ free کرتے ہیں release کرتے ہیں destroy کرتے ہیں close کرتے ہیں تو اس کے result میں جو ہوتا ہے جو آپ کا child process ہے وہ نہیں ختم ہوتا وہ memory میں رہتا ہے just parent کے اندر جو اس کا reference ہے وہ ختم ہوتا ہے یعنی کہ آپ نے ایک child process جو ہے وہ create کیا اس کا آپ کے پاس reference آ گیا handle آ گیا اب آپ نے اس handle کو جو ہے close کر دیا اب اس سے وہ child destroy نہیں ہوا just parent کے پاس جو اس کا reference تھا وہ invalidate ہو گیا child exist کرتا تو آپ کو کیا کرنا پڑتا ہے آپ کو جو ایک بیتر تریکہ سے child thread ہے اور child process ہے ان دونوں کا پہلے handle close کرنا پڑتا ہے اور جب close کرتے ہیں تو in the end جب آپ کا parent process destroy ہوتا تو اس کے لئے child threads جو ہے اور child processes ہے وہ بھی ختم ہو جاتے ہیں یہ دو functions دیکھتے ہیں پہلہ function ہے get current process get current process جو ہے یہ آپ کو ایک handle return کرا and get current process id یہ آپ کو id return کرا i.e. process کو describe کرنے کے لئے or process کو identify کرنے کے لئے دو چیزیں ہیں ایک id ہے اور ایک اس کا handle ہے دونوں میں کچھ difference ہے وہ ہم previously discuss کر چکیں get current process کیا کرے گا وہ ایک sudo handle create کرے گا یہ actual handle نہیں ہے actual handle اس لیے نہیں ہے کیونکہ اس کے اندر security attributes نہیں ہے اس کے اندر inherit ہونے کی information نہیں ہے وہ آپ بعد میں پڑت کریں گے آپ کو as a starting point یہ sudo handle چاہیے ہوتا اور get process id کیا کرے گا جو get current process id وہ جو بھی current process run ہو رہا ہے اس کا آپ کو id return کرے گا کیا id ہوگا یہ handle نہیں ہوگا اس کو آپ as an id treat کریں گے اب اگر آپ کے پاس sudo handle آجاتا ہے کوئی بھی ایک process run ہو رہا ہے آپ اپنے program کے اندر get current process get call کرتے ہیں get current process call کرنے سے آپ کو ایک sudo handle مل گیا اب آپ کے پاس sudo handle آگیا تو اس کی مدل سے یا آپ کے پاس id آگیا تو اس کی مدل سے آپ process کا actual handle real handle وہ get کر سکتے ہیں وہ get کرنے کے لئے آپ use کریں گے open process open process کا function call کریں گے اب اس کے اندر دیکھیں تین parameters ہیں یہاں پہ آپ اپنا desired access attributes وہ specify کر سکتے ہیں جو آپ کو access attributes چاہیے وہ first parameter کے اندر specify کر سکتے ہیں دوسر parameter کے اندر آپ بتا سکتے ہیں جی آپ چاہتے ہیں کہ وہ inheritable ہو یا نہ inheritable نہ ہو وہ آپ specify کر سکتے ہیں اور تیسرے میں of course جس process کا آپ کا handle چاہیے اس کا آپ کو id specify کرنا پڑے گا یعنی کہ windows کیا کرتی ہے آپ کو id کے against handle return کریے اب desired access جو ہے اس کی مختلف values ہو سکتے ہیں پہلی values اگر آپ نے رکھیا ہے synchronize تو اس کا مطلب ہے اس process کیا پر آپ جو weight functions ان کو call کر سکتے ہیں weight functions کی مدل سے آپ synchronization perform کر سکیں گے among processes process all access اگر یہ آپ نے option سیٹ کیا تو اس کا مطلب ہے ہارتنا کی access ہوگی process کو process terminate اگر آپ نے یہ value سیٹ کیا تو اس کا مطلب ہے آپ کے پاس process کو terminate کرنے کی access ہوگی اور process query information query information کا مطلب ہے کہ process کیا پر کسی کسم کی query perform کرنے کی آپ کو access ہوگی جو process آپ نے جس کا handle get کیا جو کوئی بھی current process run ہو رہا ہے تو آپ یہ دیکھنا چاہتے ہیں کہ وہ کس path سے run ہوا ہے تو اس path کو get کرنے کے لیے آپ کے پاس دو اور apis ہیں ایک get module file name اور ایک get module file name ex ان apis کو آپ msd n کے اندر خود سے دیکھ سکتے ہیں یہ بڑے سمپل سے function ہے یہ جو بھی current process run ہو رہا او اس کی جو file ہے جس file سے وہ process run کیا یا load کیا گیا اس کا نام یا اس کا path full path name جہے return کرے گا