سؤال

كيف يمكنني أن أذهب حول إنشاء "غمبد" الذي يبدو أن تطبيقات ديريكتينبوت كوحدة تحكم لعبة عادية ولكن يتم تعريف حالة ضوابطها في الواقع من قبل البرنامج?

هل كانت مفيدة؟

المحلول

اكتب برنامج تشغيل جهاز لتتظاهر بأنه واحد.

على وجه التحديد ، برامج تشغيل الأجهزة ويندوز التعامل مع ما يسمى طلبات المقاطعة عبر بروتوكول طلب المقاطعة - الذي يتلخص في بنية ملفوفة ومجموعة من المخازن المؤقتة داخليا في برنامج التشغيل.

الآن الشيء التالي الذي تحتاج إلى معرفته هو أن العديد من برامج التشغيل هي في الواقع الطبقات ، أو مكدسة ، أو أيهما الاسم الذي تريد استخدامه.لذلك على سبيل المثال لكتابة برنامج تشغيل القرص ، قد واجهة مع برنامج التشغيل فوقه (كفئة القرص) ولكن استخدام برنامج تشغيل أدناه (منفذ سسي ، على سبيل المثال) لإرسال الأوامر في الواقع إلى الأجهزة الخاصة بك.

هذه هي الطريقة التي تعمل بها الأجهزة الحقيقية.يجب أن تتوافق الأجهزة المزيفة مع متطلبات واجهة المستوى الأعلى ، على سبيل المثال.قرص ، أو وحدة تحكم ، أو ماوس ، أو أيا كان.ومع ذلك ، تحت أنها يمكن أن تفعل أي شيء يحلو لهم - العودة مهما كانت القيم التي يحلو لهم.

هذا يفتح إمكانية التحكم في برنامج التشغيل عبر تطبيق وضع المستخدم والتظاهر بأنه "جهاز".لإرسال رسائل برنامج تشغيل ، يمكنك DeviceIoControl إلى ذلك;ثم للحصول على تلك الرسائل يمكنك إما:

  • الاشياء لهم في إرب التي تشكل هذا ديفيسيوكونترول.
  • اطلب من السائق قراءتها من مساحة ذاكرة العملية الخاصة بك.

يمكن للسائقين أيضا الوصول \\Registry\\Machine ومختلف مناطق التسجيل غير المستكشف الأخرى غير الخاصة بالمستخدم ، لذلك من الممكن التواصل بهذه الطريقة.

وأخيرا ، ليس هناك قول لا يمكنك تصفية إو القائمة ، بدلا من جعل كل شيء عن طريق جهاز جديد.هناك العديد من الخيارات والطرق التي يمكنك القيام بها للقيام بذلك.

إذا كنت ستفعل هذا ، فستحتاج إلى:

  • فيرتوالكد أو كابل مصحح أخطاء باهظ الثمن واثنين من أجهزة الكمبيوتر.
  • وربما كنت تريد أيضا أن تبدأ مع المراجع على هذا بلوق وظيفة.ستجد أن هناك أساسا بازيليون أسماء مختلفة لرمز السائق ، ولذا فإنني سوف تفسير بعض منهم:

    • ودم = نموذج سائق ويندوز ، أساسا نموذج سائق نت مختلطة مع (بعض) ويندوز 9 إكس.
    • كمدف = نواة وضع سائق الإطار-السائقين من النوع أعلاه استخدام هذا ، بالإضافة إلى ذلك وف (ويندوز سائق مؤسسة) وهي مجموعة من المكتبات على رأس ودم لجعلها أسرع للاستخدام.
    • أومدف = وضع المستخدم إطار سائق-كتابة سائق دون خطر وضع النواة.إذا كنت تستطيع ، استخدم هذا ، كما السائقين وضع النواة التي تذهب الخطأ سوف بلوسكرين (في لغة السائق ، بوجشيك) النظام الخاص بك.

تحرير:أنا لست على دراية واسعة على ديريكتينبوت-قد تكون هناك طريقة لتجاوز مختلف الضوابط أبي في الاستخدام عن طريق إعادة توجيه دل وما شابه ذلك ، والتي قد تكون أبسط من الطريقة التي وصفتها.

نصائح أخرى

قد يكون الحل الأسهل هو محاكاة جهاز Xinput (Xbox 360 و ONE).هذه مدعومة في معظم الألعاب الحديثة والانشاء هي بسيطة للغاية.هنا مشروع C ++ هنا الذي يوفر هذا دون أي برامج تشغيل مثبتة أو تبعيات خارجية: https://github.com/shauleiz/ vxboxinterface /

هناك مشروع VJOY OpenSource: http://sourceforge.net/projects/vjoystick/ -يمكن أن يستحق النظر في.

أعرف أنه سؤال قديم ولكن بالنسبة لأي شخص مهتم بهذا الموضوع هو أيضا يستحق النظر في هذا المشروع يسمى vigem .

يمكنك محاكاة بعض gamepads المعروفة مثل وحدة تحكم Microsoft Xbox 360، وحدة تحكم Sony Dualshock 4 و Microsoft Xbox One Controller.يوفر المشروع أيضا بعض API للتفاعل مع هذه المراقب الظاهري هذه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top