2012-01-19 12 views
8

मैं DaemonTools जैसे कुछ लिखना चाहता हूं: एक ऐसा सॉफ़्टवेयर जो स्वयं को एक वास्तविक डिवाइस (पिछले उदाहरण में एक डीवीडी-रोम) के रूप में सिस्टम में प्रस्तुत करता है लेकिन यह इसके बजाय फ़ाइल से डेटा पढ़ता है। मेरी आवश्यकता डीवीडी-रोम तक ही सीमित नहीं है। पहला लक्ष्य विंडोज के लिए जॉयस्टिक/गेमपैड है।वर्चुअल डिवाइस को कोडिंग के लिए प्रारंभ बिंदु

मैं एक वेब डेवलपर हूं, इसलिए मुझे नहीं पता कि मैं इस तरह की एक परियोजना कहां से शुरू कर सकता हूं। मेरा मानना ​​है कि इसे सी/सी ++ में लिखा जाना होगा, लेकिन इसके अलावा, मुझे कोई संकेत नहीं है कि कहां से शुरू किया जाए।

क्या किसी ने ऐसा कुछ करने की कोशिश की और मुझे कुछ शुरुआती सुझाव दे सकते हैं?

+0

इस तरह से आप गेमपैड का उपयोग कैसे करेंगे, निश्चित रूप से एक बार जब आप अपना गेमिंग एप्लिकेशन लोड कर लेंगे तो अब आपके पास आभासी (जैसा कि मैं इसे समझता हूं) गेमपैड के साथ कोई फ़ोकस सेट या नियंत्रण नहीं रखूंगा? –

+0

क्या होगा यदि आप लैन/इंटरनेट/टीसीपी के माध्यम से किसी अन्य मशीन से "गेमपैड" को नियंत्रित करते हैं? –

+0

सिद्धांत में यह संभव होना चाहिए, हालांकि वर्चुअल समाधान विकसित करने का मुख्य कारण उत्पाद की हार्डवेयर लागत को बचाने के लिए है, इस मामले में हालांकि आपको गेमपैड खरीदने की आवश्यकता नहीं होगी, लेकिन इसे चलाने के लिए एक और पीसी खरीदने की आवश्यकता होगी अगर आपके पास पहले से कोई नहीं था। मैं सराहना करता हूं कि यह सिर्फ एक परियोजना है, लेकिन इस बारे में सोचने लायक है कि कार्यान्वयन कैसे घंटों खर्च करने से पहले काम करेगा:) –

उत्तर

8

अधिकतर ड्राइवर या तो सी या सी ++ में लिखे गए हैं, इसलिए यदि आप उन भाषाओं को उचित रूप से अच्छी तरह से नहीं जानते हैं, तो आप शुरू करने से पहले उनसे परिचित होना चाहेंगे। विंडोज प्रोग्रामिंग बहुत सारे रोचक शॉर्टकट्स का उपयोग करता है जो कि शुरुआत करने वाले को भ्रमित कर सकते हैं - उदाहरण के लिए PVOIDs (typedef void* PVOID) और एलपीवीओआईडीएस (typedef void* far LPVOD;)। आपको अवधारणाओं के साथ-साथ संरचनाओं के रूप में पॉइंटर्स से खुश रहना होगा क्योंकि आप उनमें से बहुत से उपयोग करेंगे। मैं सी/सी ++ करने की विंडोज शैली के साथ पकड़ने में एक अभ्यास के रूप में एक वास्तव में सीधा Win32 ऐप लिखने का सुझाव देना चाहता हूं।

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

विंडोज चालक किट में वर्चुअल टोस्टर लागू करने वाले ड्राइवर समेत बड़ी संख्या में नमूने शामिल हैं। ये आपको शुरुआती बिंदु प्रदान करना चाहिए।

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


यह काफी बड़ा उपक्रम है, इसलिए इससे पहले कि आप शुरू करते हैं, मैं Windows विकास अनुसंधान चाहते हैं और अच्छी तरह से - जाँच आप पहली बार विंडोज API का उपयोग करके यह नहीं कर सकते, तो उपयोगकर्ता के मोड पर एक नजर है ड्राइवर ढांचे, फिर आखिरकार और केवल अगर आपको आवश्यकता है, तो कर्नेल स्तर की सामग्री देखें।

+0

+1 इस तरह के सवालों के बहुत सारे जवाब "नहीं" हैं। हालांकि ऐसा करने से अव्यवस्थित हो सकता है, आपका जवाब बहुत जानकारीपूर्ण था। –

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