2009-06-11 1183 views

回答

16

是的。您無法創建「經典」內核模式驅動程序。但是,從XP開始,Windows提供User-Mode Driver Framework。顯然,他們不能做任何事情 - 任何用於啓動操作系統的驅動程序顯然都必須是內核模式。但是對於UMDF,您只需要實現COM組件。

除了啓動時的驅動程序,你也可以不寫UMDF驅動程序:

  • 處理中斷
  • 直接訪問硬件,如直接存儲器存取(DMA)
  • 有嚴格的定時循環
  • 使用非分頁池或者被
1

Python在虛擬機中運行,因此不會。

但是:

您可以編寫一個將Python代碼轉換爲機器語言的編譯器。一旦你完成了,你可以做到。

+0

我猜想不可能。 :(比你... – Armageddon 2009-06-11 14:00:15

+2

或者你可以在驅動程序中嵌入一個Python解釋器,或者讓Microsoft在內核中包含一個Python解釋器,從技術上說,沒有理由不能完成它。你有很多的支持:); – jalf 2009-06-11 14:03:39

0

永不永不說,但誒..沒有

你也許可以破解的東西一起在Python運行驅動程序的用戶模式部分。但內核模式的東西只能用C或彙編完成。

+0

booh :( 謝謝你:) 我想我必須學習C或彙編..;) – Armageddon 2009-06-11 14:01:06

+0

如何將解釋器(用C寫成)然後執行Python腳本作爲數據存儲在驅動程序中? – 2009-06-11 14:03:06

+0

@Judge Maygarden:這可能在用戶模式下工作,但內核模式對於可以進行的調用是非常嚴格的。機會是你的翻譯不會在那裏跑。內核模式開發是一種黑色藝術。 – Mendelt 2009-06-11 14:49:27

0

不,他們不能。的Windows驅動程序必須寫在可

  1. 接口與基於C API
  2. 向下編譯成機器碼

話又說回來語言,沒有什麼阻止你寫一個編譯器,它把Python到機器代碼;)

1

我不知道在Windows上的驅動程序的限制(內存分配方案,動態加載庫和所有),但你可能能夠在你的驅動程序中嵌入一個Python解釋器,在這一點上你可以做wha你想要的東西。不是我認爲這是一個好主意:)

3

明確的答案不是沒有在您的C/assembly驅動程序中嵌入解釋器。除非有人有可用的框架,否則答案是否定的。一旦你有了解釋器和綁定,那麼其餘的邏輯就可以用Python來完成。

但是,編寫驅動程序是C最適合的事情之一。我想象得到的Python代碼看起來很像C代碼,並且打破瞭解釋器開銷的目的。

3

獲得洞察力的一個好辦法就是通過閱讀Microsoft's advice關於在驅動程序中使用C++的方法。作爲C的衍生物,C++的使用似乎很簡單。在實踐中,並非如此。例如,您必須爲每個函數(以及實際上每個彙編指令)決定它是否在可分頁或不可分頁的內存中。這需要對C進行擴展,謹慎使用新的C++特性,或者在這種情況下對Python語言和VM進行特殊擴展。另外,與驅動程序兼容的虛擬機也必須處理不同的IRQL - 有一個層次的「層次」,它限制了你可以做什麼和不可以做什麼。

相關問題