2012-01-19 28 views
8

我想寫一些類似於DaemonTools的東西:一種將系統呈現爲真實設備(前一示例中的DVD-ROM)的軟件,但它會從文件中讀取數據。我的要求不限於DVD-ROM。第一個目標是Windows操縱桿/遊戲手柄。編碼虛擬設備的起點

我是一名Web開發人員,所以我不知道從哪裏開始創建這樣的項目。我相信它必須用C/C++編寫,但除此之外,我不知道從哪裏開始。

有沒有人嘗試過這樣的事情,可以給我一些啓動提示?

+0

如何以這種方式使用遊戲手柄,當然,一旦你加載了遊戲應用程序等,你將不再有任何的焦點集或控制與虛擬(據我瞭解)遊戲手柄? –

+0

如果您通過lan/internet/TCP從另一臺計算機控制「遊戲手柄」,該怎麼辦? –

+0

理論上應該是可能的,但是開發虛擬解決方案的主要原因是爲了節省產品的硬件成本等,但在這種情況下,您不需要購買遊戲手柄,但需要購買另一臺PC才能運行如果你還沒有的話。我很欣賞這只是一個項目,但值得考慮的是,在花費幾個小時編碼之前,實現如何工作:) –

回答

8

大多數驅動程序都是用C或C++語言編寫的,所以如果你不太瞭解這些語言,那麼在開始之前,你需要熟悉它們。 Windows編程使用了許多有趣的快捷鍵,可能會讓初學者感到困惑 - 例如PVOIDstypedef void* PVOID)和LPVOID(typedef void* far LPVOD;)。你需要對指針作爲概念以及結構感到滿意,因爲你會使用它們中的很多。我建議編寫一個非常簡單的win32應用程序,作爲掌握使用C/C++的Windows風格的練習。

然後您的下一個端口就是瀏覽Windows Driver Kit - 具體來說,您需要它來爲Windows構建驅動程序。在這個階段,我的建議能力確實取決於你在做什麼以及你有可用硬件等,或者你是否真的在使用硬件。您需要知道如何驅動您的硬件,並從那裏您需要選擇一種適當的驅動程序編寫方式 - 根據您需要實現的驅動程序,有幾種不同類型的驅動程序,您可以插入其中之一。

Windows驅動程序工具包包含相當多的示例,包括實現虛擬烤麪包機的驅動程序。這些應該爲您提供起點。

我強烈建議你在虛擬機上測試它。如果您的驅動程序成功構建,但會導致運行時錯誤,那麼如果您處於內核模式,結果可能會完全崩潰窗口。因此,如果您損壞虛擬機,您可以通過恢復虛擬機來節省自己的一些痛苦,並且不必等待系統重新啓動。由於可以使用虛擬串行電纜,因此它還會使調試更加容易。


這是一個相當大的任務,所以在你開始之前,我會更深入研究的Windows開發 - 首先檢查使用的Windows API,你不能這樣做,然後看看在用戶模式驅動程序框架,最後只有在需要時才查看內核級別的內容。

+0

+1這樣的問題很多答案都是「不要」。儘管這樣做可能不太合適,但你的回答非常有用。 –