2017-01-24 100 views
-3

我最近問the question是否可以通過C#WinForms應用程序限制帶寬,就像NetLimiter和NetBalancer一樣。我被告知有兩種方法可以做到這一點。通過適當的QoS或者寫一些「NDIS Network Filter Driver」的行。使用QoS不是我想要的方式。所以我查了一下編寫驅動所需的一些東西,並找到了一些有趣的觀點。諸如對C/C++有很好的理解,因爲執行的代碼很容易出現BSOD,因爲它可以在稱爲「內核模式」的東西中運行。我還發現了一個GitHub「dump」,它看起來很有趣,並且誘使我去調查和環顧。爲Windows編寫驅動程序

正如你所看到的,我不是那些接近先進的專業水平的人。忽略這一點,開始我的冒險編寫驅動程序來監視 - 並進一步操縱網絡來引入節流是一個好開始。

任何幫助,指南或信息,可能會有所幫助,總是讚賞。 PS:我不確定這是否(如前面對我的上一個問題的評論中所述)在Stack Overflow上回答太寬泛的問題。如果是這樣,我會去哪裏問這個問題?

+1

這看起來太寬泛了(與教程/指南問題題外話)給我。你可以去一個更傳統的論壇,試着找一位導師/導師,或者如果是我,可以根據你已經找到的東西開始寫點東西,然後在這裏問一些關於它的具體問題。 – BradleyDotNET

+0

我在哪裏可以找到這樣的導師/導師,儘管@BradleyDotNET。有沒有我可以註冊的表單?而且我發現了一些我不瞭解的東西,因此我把它包括在內。儘管如果我從此開始,它可能會更好。 – Farcrada

+0

Pluralsight有一個導師/幫助程序,我確定還有其他人。 Vilx的建議是我至少會從頭開始的道路。 – BradleyDotNET

回答

2

的確,這會太寬泛。駕駛員寫作是一件複雜的事情,需要對計算機和操作系統的工作方式有很好的理解。另外,C#(和.NET本身)確實在內核模式下不可用,因此C/C++是首選方式。儘管理論上任何非託管語言(如帕斯卡爾)都可以這樣做,但我還沒有聽說有人在寫驅動程序。微軟自己的開發人員資源也是用C/C++編寫的。

這給我們帶來了爲什麼你想要這樣做的問題。

如果你需要它的工作,並有一個最後期限 - 忘記它。讓別人誰已經知道這個東西。或者可能有一個圖書館滿足需求。這些選項中的任何一個都比你學習所有這些東西的時間便宜。

但是,如果這是爲了您自己的好奇心 - 去爲它!我建議先開始學習C語言。不是C++,這更加複雜,對於驅動程序來說,無論如何C也會更容易。但是你也可以稍後拿起C++,這是很好的東西。 C++是主要是與C兼容,所以你可以從C開始,然後繼續使用C++。

同時,得到一本關於OS設計的好書。不是因爲你想設計一個操作系統,而是爲了理解它所基於的基本概念。你應該很好地理解諸如內核模式/用戶模式,虛擬內存,中斷,進程調度等等。

學習一點程序集也許很有用(儘管不是必需的)。

最後,當您覺得自己已經掌握了上述內容時,請前往MSDN並開始閱讀關於驅動程序開發的內容。將有長篇文章和示例程序來幫助您入門。調整它們並在虛擬機中玩耍,直到獲得所需的內容。

並且還...讀取this