سؤال
قبل أن تقفز المتهور في C#...
لقد شعرت دائما أن ج ، أو ربما C++, كان أفضل لتطوير السائقين على ويندوز.أنا لست حريصا على تطوير فكرة السائق على .صافي آلة.
ولكن .صافي يبدو أن الطريق MS تتجه نحو تطوير التطبيقات ، لذلك أنا أتساءل الآن:
- هي الناس باستخدام C# لتطوير السائقين ؟
- عليك أن تفعل الكثير من API السنانير ، أو C# لها المرافق واجهة مع النواة دون الكثير من hackery?
- يمكن لأي شخص التحدث موثوقية وسلامة تشغيل برنامج C# أقرب إلى الحلقة 0 من شأنه عادة أن يكون الحال ؟
أريد الأجهزة يمكن استخدامها في C# و إذا كان السائق ديف في C# ناضجة ومن الواضح أن هذا الطريق للذهاب, ولكن لا تريد أن تنفق الكثير من الجهد هناك إذا ليس من المستحسن.
- ما هي بعض موارد جيدة للبدء ، النامية بسيط الظاهري المنفذ التسلسلي السائق ؟
-آدم
المحلول
أنت لا يمكن أن تجعل kernel-وضع برامج تشغيل الأجهزة في C# كما runtime لا يمكن أن يكون بأمان تحميلها في ring0 و تعمل كما هو متوقع.
بالإضافة إلى ذلك, C# لا خلق ثنائيات مناسبة التحميل برامج تشغيل الأجهزة ، خاصة فيما يتعلق نقاط الدخول أن السائقين تحتاج إلى كشف.الاعتماد على وقت التشغيل إلى القفز في تحليل و جيت الثنائية أثناء التحميل يحظر الوصول المباشر السائق الفرعي يحتاج إلى تحميل الثنائية.
هناك أعمال جارية ، ومع ذلك ، من أجل رفع بعض برامج تشغيل الجهاز في وضع المستخدم ، يمكنك مشاهدة مقابلة هنا مع بيتر فيلاند من UDMF (المستخدم تشغيل وضع إطار) فريق.
برامج تشغيل وضع المستخدم سيكون أكثر مناسبة تمكن العمل ، ولكن عليك أن جوجل قليلا لمعرفة ما إذا كان C#.صافي سوف تكون معتمدة مباشرة.كل ما أعرفه هو أن نواة مستوى السائقين غير قابلة للتنفيذ إلا في C#.
ومع ذلك ، يمكنك على الأرجح إجراء C/C++ السائق و C# خدمة (أو ما شابه) و السائق التحدث إلى التعليمات البرمجية المدارة, إذا كان لديك على الاطلاق لكتابة الكثير من التعليمات البرمجية في C#.
نصائح أخرى
هذا سوف تساعدك في هذه الطريقة: برنامج تشغيل Windows طقم
انها ليست الإجابة المباشرة على سؤالك ولكن إذا كنت مهتما قد تبدو في التفرد المشروع.
يمكن لأي شخص التحدث موثوقية وسلامة تشغيل برنامج C# أقرب إلى الحلقة 0 من شأنه عادة أن يكون الحال ؟
C# يعمل في .صافي ظاهري لا يمكنك نقل أي أنها أقرب إلى الحلقة 0 من VM هو ، VM يعمل في userspace.
إذا كنت على استعداد أن يكون الذهاب في الملكية الإطار ، Jungo هو WinDriver أدوات يدعم برنامج تشغيل وضع المستخدم التنمية (حتى في التعليمات البرمجية المدارة) USB PCI و PCI-E الأجهزة.
مايكروسوفت لديها عدد من المشاريع البحثية في مجال وجود تمكنت رمز نظام التشغيل ، وبعبارة أخرى قتل مع Win32 API.
ترى ماري جو فولي المادة: إعادة بناء إرث
كتابة برامج تشغيل الجهاز في .صافي لا معنى الإصدارات الحالية من ويندوز.
<speculation>
الشائعات هي أن مايكروسوفت تستثمر الكثير من المال في تحقيق التفرد إلى المستوى التالي.مجرد إلقاء نظرة على ميدوري.ولكن هذا في 2015+
</speculation>
إذا كنت أتذكر بشكل صحيح ، دوكان المشروع هو وضع المستخدم ملف نظام التشغيل الذي يسمح أيضا .صافي رمز ليتم تنفيذها من قبل نظام التشغيل: https://github.com/dokan-dev/dokan-dotnet.
لذا أنت يمكن أن تتطور C# "السائق" (وضع المستخدم التطبيق حقا) ، ثم دعا/تحتج C++ برنامج تشغيل وضع kernel.Kernel-سائق يمكن أن تمر ببساطة كل شيء جنبا إلى جنب دون التلاعب في البيانات بمثابة المجمع بسيطة.
وغني عن الذكر أنه غير آمنة جدا و كنت على الأرجح في نهاية مع الموت الزرقاء (حاولت).
أقل ما يقال ذات الصلة:
على الكون المشروع هو مفتوح المصدر نظام التشغيل التي تم تطويرها في C# و يعمل
"(kernel) السائقين" مستوى المستخدم التطبيقات مكتوبة تماما في C#/F#/VB.NET/...
على الرغم من أن هذه من الناحية الفنية على مستوى النواة السائقين ، OS لم يعد ويندوز ولكن الخاصة بك, لذا أعتقد أن هذا هو الجواب الصحيح ......