2011-02-08 21 views
5

मैंने एक डब्ल्यूएफपी कॉलआउट ड्राइवर बनाया है जो कर्नेल मोड में चलता है। अब, मैं यह पता लगाने की कोशिश कर रहा हूं कि इस ड्राइवर और मेरे जीयूआई एप्लिकेशन के बीच संवाद कैसे करें जो उपयोगकर्ता-मोड में चलता है। कोई विचार?कर्नेल-मोड और उपयोगकर्ता-मोड अनुप्रयोग के बीच संचार

  1. कॉलआउट ड्राइवर पोर्ट 4444 पर एक incomming कनेक्शन
  2. ड्राइवरों उपयोगकर्ता- को एक संदेश भेज (यह मेरे प्रश्नों का हिस्सा नहीं है) का पता लगाता है:

    मैं वास्तव में क्या चाहते हैं कुछ इस तरह है मोड ऐप

  3. ऐप उपयोगकर्ता को एक सूचना दिखाता है और पूछता है कि क्या हमें कनेक्शन स्वीकार/ब्लॉक करना चाहिए।
  4. उपयोगकर्ता-मोड ऐप कॉलआउट ड्राइवर को उपयोगकर्ता की प्रतिक्रिया वापस भेजता है।

धन्यवाद!

उत्तर

4

मैं लॉर्डडोस्कीस से सहमत हूं। आपको डिवाइस ऑब्जेक्ट बनाने और Win32 दायरे में उपलब्ध कराने की आवश्यकता है। फिर आप अनुरोध भेजने के लिए CreateFile, ReadFile, WriteFile और पहले से ही DeviceIoControl का उपयोग कर सकते हैं।

चालक से एप्लिकेशन तक अधिसूचनाएं प्राप्त करने के लिए, आप तथाकथित inverted call model का उपयोग कर सकते हैं। आप कुछ आईआरपी (निर्दिष्ट तंत्र में से एक के माध्यम से) भेजते हैं और इसे एक असीमित तरीके से (या अलग धागे में) करते हैं। फिर, ड्राइवर उन्हें तब तक लटकता रहता है जब तक कि उसे किसी चीज़ के बारे में उपयोगकर्ता मोड घटक को सूचित नहीं किया जाता है और फिर पूरा आईआरपी देता है। वैकल्पिक तरीके कुछ घटनाओं को सेट करना है और यूएम अनुरोध जो भी ड्राइवर किसी प्रकार की कतार में रखता है ...

इस बात का कोई तरीका नहीं है कि चालक उपयोगकर्ता मोड को कुछ संदेश भेज सकता है आवेदन।

+1

मैंने [उलटा कॉल मॉडल] (http://www.osronline.com/article.cfm?id=94) के बारे में एक उत्कृष्ट लेख पढ़ा है। शायद यह सहायक है। – QuangNHb

2

चेक इस API कॉल - DeviceIoControl

अनिवार्य रूप से आप क्या करेंगे चालक रजिस्टर वस्तु प्रबंधक में है, तो अपने जीयूआई आवेदन इसे खोलने और विभिन्न आदेशों और डेटा भेजने (वहाँ ऐसा करने के लिए बफ़र्स हैं करने में सक्षम हो जाएगा वह) और फिर आपको कुछ कस्टम आईओसीटीएल कोड भेजना होगा (डब्लूडीके मैनुअल के साथ जांचें)।

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