為了方便開發(fā)人員為Windows編寫驅(qū)動(dòng)程序,微軟昨天發(fā)布了一個(gè)開源框架驅(qū)動(dòng)程序模塊框架(DMF)。 這個(gè)新框架將允許開發(fā)人員編寫簡單和結(jié)構(gòu)化的Windows驅(qū)動(dòng)程序框架(WDF)驅(qū)動(dòng)程序并在驅(qū)動(dòng)程序之間共享代碼。
在為 Surface 設(shè)備 開發(fā) 驅(qū)動(dòng)程序時(shí),Microsoft Devices團(tuán)隊(duì)開發(fā)了此框架供內(nèi)部使用。 微軟 現(xiàn)在將其作為開源發(fā)布,以幫助其他OEM以最高的效率和可維護(hù)性,開發(fā)和維護(hù)高質(zhì)量的驅(qū)動(dòng)程序。微軟還解釋了傳統(tǒng)WDF與這款新的基于DMF的WDF驅(qū)動(dòng)程序之間的一些主要差異。
這些差異在于:設(shè)備上下文(以綠色顯示)獨(dú)立存在于每個(gè)模塊和客戶端驅(qū)動(dòng)程序特定的代碼中。每個(gè)較小的設(shè)備上下文僅包含該模塊所需的元素。沒有模塊可以訪問另一個(gè)模塊的設(shè)備上下文;WDF回調(diào)(以紅色顯示)現(xiàn)在在每個(gè)模塊和客戶端特定代碼中獨(dú)立存在。 WDF調(diào)用客戶端驅(qū)動(dòng)程序。 DMF攔截調(diào)用并將其調(diào)度到實(shí)例化模塊樹中的每個(gè)模塊;每個(gè)模塊按其認(rèn)為合適的方式處理每個(gè)回調(diào)。最后,DMF將回調(diào)調(diào)度到客戶端驅(qū)動(dòng)程序的回調(diào)。
最后,請注意箭頭。箭頭專門顯示模塊和客戶端特定代碼之間的流程。在此示例中,特定于客戶端的代碼只能與三個(gè)模塊通信:ACPI,Button和Stream。它無法與GPIO,F(xiàn)IFO,列表或線程通信。 ACPI無法與FIFO等進(jìn)行通信。即使不查看源代碼,我們也很清楚數(shù)據(jù)如何在此驅(qū)動(dòng)程序中流動(dòng)。