Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DeviceObject veya DriverObjectiçin sızdırılmış bir başvuru varsa sürücü boşaltmaz. Bu, başarısız sürücü yüklemelerinin yaygın bir nedenidir.
ioCreateDevice dışında, DriverObject ve DeviceObjectreferans alır. İşlevleri kullanma yönergelerini izlemezseniz referansı sızdırmak zorunda kalırsınız.
Bu sorunun hatalarını ayıklamaya yönelik bir örnek aşağıda verilmiştir. Bu örnekte DeviceObject kullanılmış olsa da, bu teknik tüm nesneler için çalışır.
Kaldırılamayan bir sürücüyü düzeltme
Sürücü IoCreateDeviceçağırdıktan hemen sonra bir kesme noktası koyun. DeviceObject adresini alın.
Bu nesne adresinde !object uzantısını kullanarak nesne üst bilgisini bulun:
kd> !object 81a578c0 Object: 81a578c0 Type: (81bd0e70) Device ObjectHeader: 81a578a8 HandleCount: 0 PointerCount: 3 Directory Object: e1001208 Name: Serial0ObjectHeader içindeki ilk değişken, işaretçi sayısı veya başvuru sayısı'dır.
ObjectHeaderadresini kullanarak işaretçi sayısına bir yazma kesme noktası koyun:
kd> ba w4 81a578a8 "k;g"Eşleşmeyen referans/dereferans çiftini arayın — özellikle eksik bir dereferansı. (ObReferenceObject çekirdek içinde bir makro olarak uygulandığını unutmayın.)