驅動程式物件的簡介

I/O 管理員會為每個已安裝和載入的 驅動程式建立驅動程式物件 。 驅動程式物件是使用 DRIVER_OBJECT 結構來定義。

當 I/O 管理員呼叫驅動程式的 DriverEntry 常式時,它會提供驅動程式驅動程式物件的位址。 驅動程式物件包含許多驅動程式標準常式進入點的儲存體。 驅動程式負責填入這些進入點。

下圖說明驅動程式物件,其中包含最低層級和較高層級驅動程式可以或必須擁有的系統定義標準常式集。

除了名稱旁邊的星號,每個標準常式都會接收 I/O 要求封包, (IRP) 作為輸入。 這些標準常式也會接收 I/O 要求之目標裝置物件的指標。

說明驅動程式物件的圖表。

I/O 管理員會定義驅動程式物件類型,並使用驅動程式物件來註冊和追蹤驅動程式載入映射的相關資訊。 請注意,驅動程式物件中的分派進入點 (DDDispatchXxxDDDispatchYyy) 對應至在 I/O 堆疊位置中傳遞的主要函式代碼 (IRP_MJ_XXX) 。

I/O 管理員會先將每個 IRP 路由傳送至驅動程式提供的分派常式。 最低層級驅動程式的分派常式通常會呼叫 I/O 支援常式 (IoStartPacket) 佇列 (,或) 傳遞每個 IRP,而每個 IRP 都有驅動程式 StartIo 常式的有效引數。 StartIo常式會在特定裝置上啟動要求的 I/O 作業。 較高層級的驅動程式通常沒有 StartIo 常式,但可以。