मेरे पास एक यूएसबी जॉयस्टिक है, और मैं इसके लिए अपना खुद का छुपा ड्राइवर लिखना चाहता हूं। विशेष रूप से मैं विंडोज़ द्वारा जॉयस्टिक इनपुट प्राप्त करने के दौरान देरी इंजेक्ट करना चाहता हूं और जब मेरे आवेदन को उस इनपुट ईवेंट के बारे में अधिसूचित किया जाता है। मैं अपने आवेदन से प्राप्त जॉयस्टिक की पहचान भी बदलना चाहूंगा। मैंने कभी ड्राइवर नहीं लिखा है, विंडोज के लिए अकेले एक छिपे हुए ड्राइवर को छोड़ दें। क्या कोई मुझे सलाह देने के बारे में सलाह या पॉइंटर्स प्रदान कर सकता है?रोल मेरा खुद का विंडोज जॉयस्टिक छुपा चालक?
उत्तर
जब आप जॉयस्टिक पर knobs दबाते हैं तो इलेक्ट्रिक सिग्नल ऑपरेटिंग सिस्टम (और गेम पर) IRP's के रूप में ड्राइवर श्रृंखला के माध्यम से पहुंचते हैं। कुछ बिंदुओं पर इन आईआरपी को रोकना और अगली चालक को अग्रेषण में देरी से जॉयस्टिक इनपुट में देरी हो सकती है। यह driver filters के साथ हासिल किया जा सकता है।
विंडोज ड्राइवरों को लिखने के लिए आपको WinDDK का उपयोग करने की आवश्यकता है।
विंडोज चालक का प्रवेश बिंदु DriverEntry function है। इस फ़ंक्शन में आप आईआरपी को अवरुद्ध करना चाहते हैं और कॉलबैक फ़ंक्शंस जो उनके साथ सौदा करते हैं, हमारे मामले में, कॉलबैक फ़ंक्शंस जो अग्रेषण में देरी करते हैं।
उदाहरण के लिए, हमारे IRP देरी हो करने के लिए IRP_MJ_READ
है और हमारे कॉलबैक फ़ंक्शन CallbackDelayForwarding
कहा जाता है:
// the function that delays the IRP
NTSTATUS CallbackDelayForwarding(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp
){
// delay the forwarding
}
// this is the driver entrypoint, similar to "main" in user-mode executables
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING RegistryPath
){
pDriverObject->MajorFunction[IRP_MJ_READ] = CallbackDelayForwarding;
...
}
CallbackDelayForwarding
अंदर अग्रेषण में देरी करने के लिए आपको किसी प्रकार का अनुकरण करने के लिए KeInitializeTimer परिवार से कार्यों का उपयोग करना चाहिए नींद (शायद ताले के साथ संयोजन में), केडेलए एक्सेक्यूशन थ्रेड इत्यादि
जॉयस्टिक ड्राइवर श्रृंखला में अपने फ़िल्टर ड्राइवर को स्थापित करने के लिए, आप .inf files का उपयोग कर सकते हैं।
WinDDK में toaster filter driver sample देखें, आप इसे INSTALL_DIR/src/general/toaster/
पर भी देख सकते हैं here भी देखें।
संबंधित लिंक:
http://www.rootkit.com/newsread.php?newsid=187
http://www.techtalkz.com/microsoft-device-drivers/269654-toaster-filter-driver.html
एक अच्छा प्रारंभिक जगह होगा: http://www.microsoft.com/whdc/device/input/default.mspx
आपको क्या करने की कोशिश कर रहे हैं एक फिल्टर ड्राइवर है।
फ़िल्टर ड्राइवर वैकल्पिक ड्राइवर हैं जो किसी डिवाइस के व्यवहार को मूल्य या संशोधित करते हैं। एक फ़िल्टर ड्राइवर एक या अधिक डिवाइसों की सेवा कर सकता है। स्रोत: http://msdn.microsoft.com/en-us/library/ff545890.aspx
मुझे लगता है कि WDK नमूने आप यहाँ से विंडोज ड्राइवर किट डाउनलोड करने के लिए है ould शामिल हैं: http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
WDK शायद एक फिल्टर बनाने के लिए एक नमूना कोड शामिल हैं।
वहाँ भी माइक्रोसॉफ्ट की साइट पर निम्नलिखित डाउनलोड है: http://support.microsoft.com/kb/176417
यह शायद एक छोटे से पुरानी के बाद से यूएसबी समर्थित नहीं किया गया था पूर्व NT5.0 सा है, लेकिन शायद यह अभी भी प्रासंगिक है।
मैं यह धारणा थी कि आप इस्तेमाल कर सकते हैं <dinput.h>
joySetCapture(wnd, JOYSTICKID1) or joySetCapture(wnd,JOYSTICKID2)
तो जॉयस्टिक घटनाओं WM_JOYMOVE
घटनाओं, से निकाल देते थे, हालांकि क्या wParam
और lParam
संदेश के लिए मुझे नहीं पता होगा।
फिर जब अपने कार्यक्रम बंद कर देता है या अब आप नहीं चाहते joyReleaseCapture(JOYSTICKID1)
आदि
यह सिर्फ खाली पैरामीटर जो तब joyGetPos
या joyGetPosEx
कार्यों उपयोग करने के लिए यूएसबी डिवाइस से खुद के लिए डेटा खोजने के लिए आपको बता हो सकता है।
आप Autohotkey का उपयोग करना चाह सकते हैं। यह विंडोज़ के लिए एक स्क्रिप्ट भाषा है जो माउस/कीबोर्ड/जॉयस्टिक के हर कुंजी को रीमेप कर सकती है। यदि आप एक स्क्रिप्ट के माध्यम से कुंजी को कैप्चर करते हैं और सक्रिय एप्लिकेशन पर सही कुंजी/मैक्रो भेजने से पहले देरी डालते हैं, तो आपके पास आपकी समस्या के समाधान का एक हिस्सा हो सकता है।
- 1. मेरा खुद का सीएमएस
- 2. एक नकली इनपुट डिवाइस के लिए एक विंडोज चालक लिखना
- 3. अपना खुद का एक्सएमएल पार्सर/एक्सएमएल पार्सिंग एल्गोरिदम रोल करें?
- 4. कैश कार्यान्वयन उठाएं, या अपना खुद का रोल करें?
- 5. Django व्यवस्थापक ऐप या अपना खुद का रोल?
- 6. जावा में जॉयस्टिक समर्थन
- 7. जावा में वर्चुअल जॉयस्टिक
- 8. मेरा खुद का स्मार्ट कैसे लिखें यदि केस
- 9. मेरा खुद का पसंद बटन: Django + Ajax - कैसे?
- 10. वर्डप्रेस 3.5 मीडिया मैनेजर - मेरा खुद का backbone.js विचार जोड़ें
- 11. एमएसबिल्ड - .csproj फ़ाइल का उपयोग करें या अपना खुद का रोल करें?
- 12. एंड्रॉइड यूएसबी चालक?
- 13. जॉयस्टिक प्रोग्रामेटिक रूप से नकल
- 14. एएसपीनेट प्रोफाइल और सदस्यता - कस्टम प्रदाता या पूरी तरह से अपना खुद का रोल करना चाहिए?
- 15. मेरा छुपा <tr> क्यों वास्तव में छुपा नहीं है?
- 16. लगातार संदेश/सेवा बस - अपना खुद का रोल करें या सीखने की अवस्था को जोखिम दें?
- 17. पायथन रीस्टफुल webservice ढांचे: अपना खुद का रोल या एक अनुशंसित पुस्तकालय है?
- 18. मेरा TinyMCE छुपा पाठारा क्यों अभिनय कर रहा है?
- 19. मेरा टीएफएस वर्कस्पेस पथ खुद को रीमेपिंग क्यों करता है?
- 20. सी # चालक
- 21. मेरा एप्लिकेशन खुद को पुनरारंभ कैसे कर सकता है?
- 22. नई टाइमलाइन में (मेरा खुद का) फ़्लैश प्लेयर का एक बड़ा पूर्वावलोकन कैसे प्रदर्शित करें?
- 23. एएसपीनेट एमवीसी रोल मैनेजर
- 24. चालक विकास पर शुरू करना
- 25. मोंगोडीबी सी # चालक - पीओसीओ संदर्भों का क्रमबद्धता?
- 26. Azure वर्कर रोल
- 27. सी # से अपना खुद का इंस्टॉलर बनाएं?
- 28. ओरेकल पतली चालक बनाम ओसीआई चालक। फायदा और नुकसान?
- 29. Azure इंटर-रोल सिंक्रनाइज़ेशन
- 30. जावा मोंगोडीबी चालक कनेक्शन प्रश्न
मुझे स्पैम फ़िल्टर को ट्रिक करने के लिए टाइपो को दूसरे और तीसरे लिंक में रखना पड़ा क्योंकि मैं एक नया उपयोगकर्ता हूं। :( – David
मैंने आपके लिए लिंक संपादित किए हैं :)। –