使用 WDF 開發驅動程式
本主題提供您將用來開發 Kernel-Mode Driver Framework (KMDF) 驅動程式之架構物件的高階概觀。 除非另有指示,否則您將使用相同的物件來開發從 UMDF 第 2 版開始的 User-Mode Driver Framework (UMDF) 驅動程式。
Windows Driver Framework (WDF) 驅動程式是由 DriverEntry 常式 和一組事件回呼函式所組成,這些函式是由架構型驅動程式所使用的 Windows Driver Framework 物件 所定義。 回呼函式會呼叫架構匯出的物件方法。 Windows 驅動程式套件 (WDK) 包含範例 WDF 驅動程式,示範如何實作驅動程式的事件回呼函式。 您可以從 Windows 開發人員中心 - 硬體下載這些範例。 如需可用範例的詳細資訊,請參閱 範例 KMDF 驅動程式 和 範例 UMDF 驅動程式。
當您建立 WDF 驅動程式時,通常會執行下列動作:
使用 架構驅動程式物件 來代表您的驅動程式。
驅動程式的 DriverEntry 常式 必須呼叫 WdfDriverCreate ,才能建立代表驅動程式的架構驅動程式物件。 WdfDriverCreate方法也會註冊驅動程式的EvtDriverDeviceAdd回呼函式,此函式會在每次隨插即用 (PnP) 管理員報告驅動程式支援的裝置是否存在。
使用 架構裝置物件 來支援驅動程式中的 PnP 和電源管理。
所有驅動程式都必須呼叫 WdfDeviceCreate ,為驅動程式支援的每個裝置建立架構裝置物件。 裝置可以是插入電腦的硬體片段,也可以是僅限軟體的裝置。 架構裝置物件支援 PnP 和電源管理作業,而驅動程式可以註冊事件回呼函式,以在裝置進入或離開其工作狀態時通知驅動程式。
如需架構裝置物件的詳細資訊,請參閱 支援驅動程式中的 PnP 和電源管理。
使用 架構佇列物件 和 架構要求物件 來支援驅動程式中的 I/O 作業。
從應用程式或其他驅動程式接收讀取、寫入或裝置 I/O 控制要求的所有驅動程式都必須呼叫 WdfIoQueueCreate ,以建立代表 I/O 佇列的架構佇列物件。 一般而言,驅動程式會為每個 I/O 佇列註冊一或多個 要求處理常式 。 當 I/O 管理員將 I/O 要求傳送至驅動程式時,架構會為要求建立架構要求物件、將要求物件放在 I/O 佇列中,並呼叫其中一個驅動程式的要求處理常式,以通知驅動程式有可用的要求。 驅動程式會取得 I/O 要求,並可重新排入佇列、完成、取消或轉送要求。
如需使用架構之佇列物件和要求物件的詳細資訊,請參閱 Framework 佇列物件 和 Framework 要求物件。
使用 架構中斷物件 來處理裝置中斷。
處理裝置中斷的驅動程式必須呼叫 WdfInterruptCreate ,才能為每個中斷建立架構中斷物件,並註冊回呼函式。 這些回呼函式會啟用和停用中斷,並作為 ISR) 的中斷服務例 (程,以及延遲程序呼叫 (DPC) 中斷。
如需架構中斷物件的詳細資訊,請參閱 處理硬體中斷。
KMDF 驅動程式可以使用架構的 DMA 啟用器物件 和 DMA 交易對象 來處理裝置的直接記憶體存取 (DMA) 作業。
如果您的 KMDF 驅動程式的裝置支援 DMA 作業,驅動程式應該呼叫 WdfDmaEnablerCreate 來建立 DMA enabler 物件和 WdfDmaTransactionCreate 來建立一或多個 DMA 交易對象。 DMA 交易對象會定義 EvtProgramDma 回呼函式,以程式處理裝置硬體以執行 DMA 作業。
如需支援 DMA 作業的詳細資訊,請參閱 在架構型驅動程式中處理 DMA 作業。
使用架構的 I/O 目標物件 ,將 I/O 要求傳送至其他驅動程式。
若要將 I/O 要求傳遞給其他驅動程式, (驅動程式堆疊中的下一個較低驅動程式) ,驅動程式會將要求傳送至 I/O 目標物件。
如需 I/O 目標物件的詳細資訊,請參閱 使用 I/O 目標。
KMDF 驅動程式可以使用架構的 WMI 提供者物件 和 WMI 實例物件 來支援 Windows Management Instrumentation (WMI) 功能。
大部分的 KMDF 驅動程式都應該支援 WMI,而且應該呼叫 WdfWmiInstanceCreate 來註冊傳送或接收 WMI 資料的回呼函式。
如需 WMI 的詳細資訊,請參閱 在架構型驅動程式中支援 WMI。
使用架構的同步處理功能。
所有驅動程式都必須注意多處理器同步處理問題,而且應該使用架構所提供的 同步處理技術 。
使用架構所提供的其他物件和功能。
架構會提供驅動程式可以使用的其他物件。 如需這些物件的詳細資訊,請參閱 WDF 支持對象。