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.
Çerçeve nesnesinin "yaşam döngüsü", bir nesnenin oluşturulduğu zamandan silindiği zamana kadar olan süreyi kaplar. Bir nesnenin başvuru sayısı, ne zaman silineceğini kontrol eder.
Çerçeve Nesnesi Oluşturma
Çoğu çerçeve nesnesi, bir sürücünün nesnenin oluşturma yöntemine çağrısıyla oluşturulur. Örneğin, çerçeve sürücüsü nesnesi oluşturmak için her çerçeve sürücüsünün WdfDriverCreate çağırması gerekir.
Diğer çerçeve nesneleri çerçeve tarafından oluşturulur. Örneğin, bir kullanıcı uygulaması okuma veya yazma işlemleri için bir cihaz açtığında, çerçeve bir çerçeve dosyası nesnesi oluşturur ve bunu sürücünün EvtDeviceFileCreate geri çağırma işlevine geçirir.
Çerçeve veya bir sürücü tarafından birkaç çerçeve nesnesi oluşturulabilir. Örneğin, G/Ç yöneticisi bir sürücüye G/Ç isteği teslim ettiğinde, çerçeve bir çerçeve isteği nesnesi oluşturur ve genellikle sürücünün istek işleyicilerinden birini çağırarak bunu sürücüye teslim eder. Bir sürücü ayrıca çerçeve isteği nesneleri oluşturabilir ve bunları diğer sürücülere teslim edebilir.
Referans Sayılarını Kullanma
Çerçeve, her nesne için bir başvuru sayısı tutar. Bir nesne oluşturulduğunda, çerçeve başvuru sayısını bir olarak ayarlar. Başvuru sayısı sıfır olursa çerçeve nesneyi siler.
Sürücüler, nesnenin başvuru sayısını değiştirebilir; başvuru sayısını artırmak için WdfObjectReference çağırarak veya başvuru sayısını azaltmak için WdfObjectDereference çağırarak. (Bir sürücü, yalnızca daha önce WdfObjectReferenceçağırmışsa WdfObjectDereference çağırabilir.)
Çoğu durumda, sürücülerin bir nesnenin başvuru sayısını artırması veya azaltması gerekmez. Çerçeve, nesnenin tutamacını sürücüye geçirmeden önce sayıyı artırır ve sürücü artık nesneye ihtiyaç duymadığında sayıyı azaltır.
Sürücüler WdfObjectReference çağırarak, bir nesnenin sürücü tarafından kullanımı tamamlanmadan önce silinmemesini (çerçeve veya sürücü iş parçacığı tarafından) sağlar. Bir sürücünün WdfObjectReference ve WdfObjectDereferenceçağrısı yapması gereken örnek bir durum için, bkz. Gönderilen İsteklerin İptalini Eşitleme.
Framework Nesnesi Silme
Nesneler, ya bir sürücü WdfObjectDelete çağırdığı için ya da kütüphane bir iç silme yordamı çağırdığı için silinir, ancak bir nesne yalnızca başvuru sayısı sıfır olduğunda silinir. Sürücü veya altyapı bir nesneyi silmeye çalıştıktan sonra, başvuru sayısı sıfır olana kadar nesnenin tanıtıcısı geçerli kalır. Bir sürücü yalnızca WdfObjectDereference çağırarak nesnenin başvuru sayısını sıfıra silemez; sürücünün de WdfObjectDeleteçağrısı yapması gerekir.
Çerçeve nesnesi bir üst öğenin alt nesnesiyse ve üst öğe siliniyorsa, çerçeve üst öğeyi silmeden önce alt nesneyi silmeye çalışır. Nesne silme, üst öğeden en uzak nesneden başlar ve köke doğru nesne hiyerarşisini çalıştırır.
Sürücüler, sürücü veya çerçeve bir nesneyi silerken çerçevenin çağırabileceği aşağıdaki iki geri çağırma işlevini kaydedebilir:
Bir EvtCleanupCallback geri çağırma işlevidir. Bu işlev, silinmekte olan nesne için daha önce WdfObjectReference çağırmışsa, çerçevenin WdfObjectDereference çağırabilmesini sağlar.
Nesnenin referans sayısı sıfıra indikten sonra çerçevenin çağırdığı bir EvtDestroyCallback geri çağırma işlevi.
Bu geri çağırma işlevlerinden birinin, sürücünün nesne oluşturulduğunda ayırmış olduğu nesneye özgü kaynakları serbest bırakması gerekir.
Çerçeve her zaman bazı çerçeve nesnelerinin silinmesini işler ve sürücülerin bu nesneleri silmeye çalışmaması gerekir. Sürücülerin silemediği çerçeve nesnelerinin listesi için bkz. WdfObjectDelete.