Aracılığıyla paylaş


Cihaz Nesnelerini Doğrulama Hatası

Birçok sürücü IoCreateDevice'i çağırarak birden fazla tür cihaz nesnesi oluşturur. Bazı sürücüler, sürücü bir FDO oluşturmadan önce bile uygulamaların sürücüyle iletişim kurmasına izin vermek için DriverEntry yordamlarında denetim cihazı nesneleri oluşturur. Örneğin, dosya sistemi sürücüleri kendilerini IoRegisterFileSystem ile dosya sistemleri olarak kaydettiklerinde dosya sistemi bildirimlerini işlemek için cihaz nesneleri oluşturur.

Bir sürücü, oluşturduğu herhangi bir cihaz nesnesi için IRP_MJ_CREATE isteklerine hazır olmalıdır. İstek başarıyla tamamlandıktan sonra, sürücü oluşturulan dosya nesnesinde kullanıcı tarafından erişilebilir G/Ç isteklerini almayı beklemelidir. Sonuç olarak, birden fazla cihaz nesnesi oluşturan herhangi bir sürücü, her G/Ç isteğinin hangi cihaz nesnesini belirttiğini denetlemelidir.

Örneğin, bir sürücünün DriverEntry'de genel denetim cihazı nesneleri oluşturduğunu ve ardından AddDevice yordamında başka bir cihaz nesneleri kümesi oluşturduğunu varsayalım. AddDevice yordamının cihaz uzantısını alt düzey sürücüler hakkında bilgilerle başlatdığını, ancak denetim cihazı nesnelerinin bu bilgileri içermediğini varsayalım. Bu durumda, tüm dağıtım yordamları aldıkları her cihaz nesnesini denetlemek için dikkatli olmalıdır. Aksi takdirde, cihaz uzantısı bilgilerini kullanmaya çalışırken sürücü çökebilir.