2013-04-08 5 views
7

मैं के बारे में निम्नलिखित बातचीत लिखने के लिए कर रहा हूँ:उपयोगकर्ता-मोड ऐप और कर्नेल-मोड ड्राइवर के बीच दो-तरफा बातचीत?

  • जब शुरू करते हैं, चालक उपयोगकर्ता एप्लिकेशन को सूचित करेंगे और फिर इसे app से प्रतिक्रिया के लिए इंतजार करेंगे करने के बारे में एक प्रक्रिया होती है।

  • ऐप यह तय करेगा कि उस प्रक्रिया को सामान्य रूप से बनाया जा सकता है या तुरंत समाप्त कर दिया गया है, और ड्राइवर को वापस निर्णय लेना है।

  • उपयोगकर्ता ऐप से निर्णय पर आधार। ड्राइवर तब प्रक्रिया निष्पादन को अनुमति या अवरुद्ध करेगा।

मेरा प्रश्न है: क्या चालक से उपयोगकर्ता के मोड एप्लिकेशन को सूचित करें और उसके बाद प्रतिक्रिया के लिए ड्राइवर प्रतीक्षा करने के लिए जिस तरह से सिफारिश की है?

+2

कृपया प्रश्न शीर्षक में टैग न डालें। इसके अलावा, बहुत अच्छा सवाल है। –

+0

शुरू करने वाली प्रक्रियाओं का पता लगाने के लिए आप किस विधि का उपयोग कर रहे हैं? –

+0

-स्कॉट चेम्बरलेन: इसके लिए खेद है। -हैरी जॉनस्टन: मैं नई प्रक्रिया निर्माण का पता लगाने के लिए psSetCreateProcessNotifyRoutineEx का उपयोग करता हूं। और फिर मैं उस नई प्रक्रिया के साथ कुछ करने के लिए अपने कॉलबैक PCREATE_PROCESS_NOTIFY_ROUTINE_EX का उपयोग करता हूं। –

उत्तर

5

घटना अधिसूचना के लिए, आप अधिसूचना ईवेंट का उपयोग कर सकते हैं। अर्थात। कर्नेल IoCreateNotificationEvent और KeSetEvent कॉल करता है। उपयोगकर्ता KeWaitForSingleObject कहते हैं। उपयोगकर्ता-कर्नेल संदेश संचार के लिए, आप IOCTL का उपयोग कर सकते हैं।

वैकल्पिक रूप से, आप दोनों उद्देश्यों के लिए नामित पाइप का उपयोग कर सकते हैं।

पीएस आप अपने उद्देश्य के लिए PsSetCreateProcessNotifyRoutine() का उपयोग नहीं कर सकते क्योंकि यह केवल ऑडिटिंग के लिए है, लेकिन रोकथाम/रद्दीकरण के लिए नहीं।

+4

यदि वह Vista पर है और बाद में, वह ['PsSetCreateProcessNotifyRoutineEx'] (http://msdn.microsoft.com/en-us/library/windows/hardware/ff559953 (v = vs.85) .aspx) को रोकने के लिए उपयोग कर सकता है प्रक्रिया निर्माण। यह तकनीक काम करेगी, लेकिन उसे यह सुनिश्चित करने की आवश्यकता होगी कि उसका कॉलबैक पुनर्वित्त है और संभावित रूप से एक ईवेंट * प्रति प्रक्रिया * बनाने के लिए जिस पर कॉलबैक सो जाएगा, जबकि उपयोगकर्ता स्पेस निर्णय लेता है। अन्य चेतावनी: सुनिश्चित करें कि उपयोगकर्ता कार्य निर्णय लेने के लिए तैयार होने से पहले प्रक्रिया निर्माण को अवरुद्ध न करें। –

+0

आप सही निक हैं। –

संबंधित मुद्दे