2017-01-24 1 views
-3

J'ai récemment demandé the question si je pouvais limiter la bande passante via une application C# WinForms un peu comme NetLimiter et NetBalancer. On m'a dit qu'il y avait deux façons de le faire. Soit par l'intermédiaire QoS approprié ou en écrivant quelque chose le long d'un "NDIS Network Filter Driver". L'utilisation de QoS n'est pas la façon dont je veux prendre. J'ai donc recherché quelques-unes des choses nécessaires pour écrire des pilotes et trouvé des points intéressants. Des points tels qu'une bonne compréhension de C/C++, car le code exécuté est très sujet aux BSOD car il pourrait être exécuté dans quelque chose appelé "mode noyau". J'ai également trouvé un GitHub "dump" qui semble intéressant et me tente d'enquêter et de regarder autour.Rédaction des pilotes pour Windows

Comme vous pouvez le voir, je ne suis pas assez avancé pour y plonger sur un niveau professionnel. Ignorant cela, ce serait un bon début pour commencer mes aventures dans l'écriture des pilotes à surveiller - et plus loin dans la ligne manipuler le réseau pour introduire la limitation.

Toute aide, des guides ou des informations qui pourraient être utiles sont toujours appréciés. PS: Je ne suis pas sûr que ce soit (comme mentionné dans un commentaire à ma question précédente) une question trop large à répondre sur Stack Overflow. Si oui, où irais-je demander cela?

+1

Cela semble trop large (et hors-sujet avec le tutoriel/guide demander) pour moi. Vous pourriez aller à un forum plus traditionnel, essayer de trouver un tuteur/mentor, ou si c'était moi, commencer à écrire quelque chose basé sur ce que vous avez déjà trouvé et poser des questions * spécifiques * à ce sujet ici. – BradleyDotNET

+0

Où puis-je trouver un tuteur/mentor pour cela, @BradleyDotNET. Y a-t-il un formulaire où je peux m'inscrire? Et j'ai trouvé quelque chose que je comprends peu, d'où je l'ai inclus. Bien que cela aurait pu être mieux si j'ai commencé avec ça. – Farcrada

+0

Pluralsight a un programme de mentor/aide, je suis sûr qu'il y en a d'autres. Le conseil de Vilx est le chemin que je commencerais au moins bien. – BradleyDotNET

Répondre

2

En effet, ce serait trop large. L'écriture de pilote est une chose compliquée qui nécessite une bonne compréhension du fonctionnement de l'ordinateur et du système d'exploitation. En outre, C# (et .NET lui-même) n'est en effet pas disponible en mode noyau, donc C/C++ est le moyen préféré. Bien que théoriquement tout langage non géré (comme Pascal) pourrait faire, je n'ai entendu parler de personne qui écrit des pilotes en eux. Les propres ressources de développement de Microsoft sont également écrites avec C/C++ à l'esprit.

Ce qui nous amène à la question de pourquoi vous voulez le faire.

Si vous en avez besoin pour le travail et qu'il y a un délai, oubliez-le. Obtenez quelqu'un d'autre qui sait déjà ce genre de choses. Ou il pourrait y avoir une bibliothèque là-bas qui répond au besoin. Chacune de ces options sera moins chère que votre temps passé à apprendre tout cela.

Si c'est pour votre propre curiosité cependant - allez-y! Je conseillerais en commençant à apprendre le C d'abord. Pas de C++, c'est plus compliqué et pour les pilotes ça sera plus facile avec C de toute façon. Mais vous pouvez aussi récupérer C++ plus tard, c'est une bonne chose. C++ est principalement compatible avec C, donc vous pouvez commencer avec C, puis continuer avec C++.

En parallèle, obtenez un bon livre sur la conception d'OS. Pas parce que vous voulez concevoir un système d'exploitation, mais pour comprendre les concepts de base sur lesquels il repose. Vous devriez avoir une bonne compréhension des choses telles que le mode noyau/mode utilisateur, la mémoire virtuelle, les interruptions, la planification des processus, etc.

L'apprentissage d'un peu d'assemblage peut également être utile (bien que non requis).

Enfin, lorsque vous avez l'impression d'avoir une bonne compréhension de ce qui précède, rendez-vous au MSDN et commencez à lire sur le développement de pilotes. Il y aura de longs articles et des exemples de programmes pour vous aider à démarrer. Modifiez-les et jouez dans une machine virtuelle jusqu'à ce que vous obteniez ce dont vous avez besoin.

Et aussi ... lire this.