2010-11-29 14 views
5

के बीच संचार मैं एक बहुत ही सरल ड्राइवर बनाने की कोशिश कर रहा हूं। इसका एकमात्र उद्देश्य "PsSetCreateProcessNotifyRoutine" और कर्नेल से प्राप्त कॉलबैक पर पंजीकरण करना होगा, मेरे Win32 एप्लिकेशन को सूचित करें कि कौन सी procसेस शुरू हो गई हैं और रुक गई हैं।डेल्फी एप्लिकेशन और विंडोज एनटी सिस्टम ड्राइवर

मुझे केवल इतना पता है कि "ड्राइवर एंटर्री" और "ड्राइवरउनलोड" के साथ इतना आसान ड्राइवर कैसे बनाया जाए और इसे डीडीके के साथ संकलित करें। लेकिन मुझे नहीं पता कि वास्तव में संचार को कैसे कार्यान्वित किया जाए। मुझे पता है कि यह आईओसीटीएल के साथ किया जा सकता है। लेकिन इससे परे मैं अंधेरे में हूं। मुझे डेल्फी में ऐसा करने का सरल उदाहरण नहीं मिल रहा है। मुझे केवल पता है कि यह किया जा सकता है।

तो मैं जो कुछ भी ढूंढ रहा हूं वह कुछ सरल और समझने योग्य ट्यूटोरियल है कि यह कैसे करें या घटना को बेहतर तरीके से प्रोग्रामिंग ड्राइवर कोड के साथ डेल्फी प्रोग्राम का उदाहरण दें। शायद संचार के अन्य तरीके भी हैं।

किसी भी मदद की सराहना की जाएगी।

+2

धावक इस प्रश्न की जांच करें http://stackoverflow.com/questions/3489501/how-to-recognize-that-an-plication-intends-to-execute-run-a-file/3489779#3489779 डब्लूएमआई में है 'Win32_Process' वर्ग के संयोजन के साथ' ExecNotificationQuery 'ईवेंट यह पता लगा सकता है कि कोई प्रक्रिया प्रारंभ या बंद हो जाती है। – RRUZ

+0

जानकारी के लिए धन्यवाद। मैं सामान्य रूप से डब्लूएमआई पसंद नहीं करता, लेकिन इस मामले में यह एक लायक है। एक ड्राइवर वास्तव में बहुत प्रभावी विकल्प है, भले ही बहुत प्रभावी हो। – Runner

+0

@RRUZ, आपकी टिप्पणी बहुत अच्छी थी, लेकिन मैंने खुद से जवाब स्वीकार कर लिया, जो भी अच्छा था और वास्तविक प्रश्न का उत्तर था। – Runner

उत्तर

2

इससे कोई फर्क नहीं पड़ता कि डेल्फी में या नहीं। आपको डिवाइस IoControl फ़ंक्शन का उपयोग करना होगा। इसके बारे में article in MSDN पढ़ें।

संक्षेप में, आपको उपलब्ध सेट से IOCTL codes चुनना होगा। फिर आप इन कोडों में से किसी एक के साथ DeviceIoControl को कॉल करते हैं और कुछ डेटा पास करते हैं, और ड्राइवर में आप उस अनुरोध को संभालते हैं और कुछ और वापस करते हैं।

आप मानक आईओसीटीएलएस को भी संभाल सकते हैं, जैसे कि उपयोगकर्ता-मोड में रीडफाइल या लिखेंफाइल को कॉल करके उत्पन्न किए गए।

"डेल्फी में ऐसा करने के लिए ट्यूटोरियल" की तलाश न करें, बस किसी भी ट्यूटोरियल की तलाश करें। वे सभी समान हैं, कोई फर्क नहीं पड़ता भाषा, यह शुद्ध Win32/मूल एपीआई सामान है। उदाहरण के लिए Here's one, बस इसे बाहर googled।

+0

धन्यवाद, एक नज़र डालेंगे। मैंने डेल्फी उदाहरण कहा, क्योंकि अक्सर आपको स्थिरांक, फ़ंक्शन प्रोटोटाइप आदि को परिभाषित करना होता है या पहले से परिभाषित परिभाषाओं को देखना होता है। अगर मुझे ऐसा करने की ज़रूरत नहीं है तो मैं उससे गुजरना नहीं चाहूंगा। मैं शॉर्टकट की तलाश नहीं करता, केवल उस व्यक्ति का ज्ञान जो पहले से ही करता है। – Runner

+2

लगभग सभी एपीआई शीर्षलेखों का अनुवाद जेडीआई (http://delphi-jedi.org/) पर उपलब्ध है। लेकिन मुझे लगता है कि आपको उपयोगकर्ता मोड से ज्यादा आवश्यकता नहीं है, यह केवल डिवाइस IoControl और मानक Win32 फ़ंक्शंस (CreateFile आदि) है, जो Windows.pas में परिभाषित हैं। जेडी अपिलिब के लिए – himself

+0

+1 – Remko

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