設計內核模式驅動程式時,請記住下列幾點:
每個驅動程式都必須有 DriverEntry 例程,以初始化全驅動程式的數據結構和資源。 I/O 管理員會在載入驅動程式時呼叫 DriverEntry 例程。
每個驅動程式都必須至少有一個分派常式來接收和處理 I/O 要求封包 (IRP) 。 每個驅動程式必須在其DRIVER_OBJECT結構中,針對其可以接收的每個 IRP 主要函式碼,設置分派常式的進入點。 驅動程式可以針對每個 IRP 主要函式碼有個別的分派常式,也可以有一或多個處理數個函式碼的分派常式。
每個 WDM 驅動程式都必須有 卸載 常式。 驅動程式必須將 卸載 常式的進入點放在驅動程式的驅動程式物件中。 PnP 驅動程式的卸載常式的責任很少,但非 PnP 驅動程式的卸載常式會負責釋放驅動程式使用的任何系統資源。
每個 WDM 驅動程式都必須有 AddDevice 常式,並在驅動程式物件的 驅動程式延伸模組 中定義其進入點。 AddDevice 常式負責為驅動程式控制的每個 PnP 裝置建立和初始化裝置物件。
驅動程式可以有 StartIo 常式,I/O 管理員會呼叫該常式來啟動驅動程式已排入系統提供的 IRP 佇列的 IRP 的 I/O 作業。 任何沒有 StartIo 常式的驅動程式都必須設定和管理其接收之 IRP 的內部佇列,或必須完成其分派常式內的每個 IRP。 如果較高層級的驅動程式只是直接從其分派常式將 IRP 傳遞至較低層級的驅動程式,則可能沒有 StartIo 常式。
某些迷你埠驅動程式是上述需求的例外狀況。 如需迷你埠驅動程式需求的相關資訊,請參閱 Windows 驅動程式套件 (WDK) 中的裝置類型特定檔。
驅動程式是否有任何其他類型的標準常式,取決於其功能,以及驅動程式如何適合系統 (例如,它是否與系統提供的驅動程式) 互通。 如需詳細資訊,請參閱 WDK 中的裝置類型特定檔。