共用方式為


無法驗證裝置物件

許多驅動程式會藉由呼叫 IoCreateDevice 來建立多種裝置物件。 某些驅動程式會在其 DriverEntry 常式中建立控制裝置物件,以允許應用程式與驅動程式通訊,甚至在驅動程式建立 FDO 之前。 例如,檔案系統驅動程式會建立裝置物件,以在使用 IoRegisterFileSystem 將自己註冊為檔案系統時處理檔案系統通知。

驅動程式應該為它所建立的任何裝置物件準備好 IRP_MJ_CREATE 要求。 完成具有成功狀態的要求之後,驅動程式應該預期會在所建立的檔案物件上收到任何使用者可存取的 I/O 要求。 因此,任何建立多個裝置物件的驅動程式都必須檢查每個 I/O 要求指定的裝置物件。

例如,假設驅動程式在 DriverEntry 中建立整體控制裝置物件,然後在其 AddDevice 常式中建立另一組裝置物件。 假設 AddDevice 常式會使用較低層級驅動程式的相關資訊來初始化裝置延伸模組,但控制裝置物件不包含此資訊。 在此情況下,所有分派例程都必須小心檢查它們所接收到的每個裝置物件。 否則,驅動程式在嘗試使用裝置延伸模組資訊時可能會當機。