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.
Çoğu KTM yordamı ZwXxx adlandırma biçimini kullanır. Bu rutinler tanıtıcı tabanlıdır. Diğer bir ifadeyle, giriş veya çıkış parametrelerinden en az biri KTM nesnesinin tanıtıcısıdır.
KTM ayrıca TmXxx adlandırma biçimini kullanan daha az sayıda yordam sağlar. Bu rutinler işaretçi tabanlıdır. Giriş veya çıkış parametrelerinden en az biri KTM nesnesine yönelik bir işaretçidir.
Bazı TmXxx rutinleri ZwXxx rutinlerini çoğaltıyor. Diğer TmXxx yordamlarının ZwXxx eşdeğerleri yoktur.
Çoğu durumda ZwXxx yordamlarını kullanmanız gerekir. Ancak aşağıdaki durumlarda TmXxx yordamlarını kullanmalısınız:
Kaynak yöneticiniz, tanıtıcı yerine bir listeleme nesnesine işaretçi sağlayan ResourceManagerNotification geri çağırma yordamını kullanır.
Liste nesnesi işaretçisini, liste nesnesinin TmXxx yordamlarına geçirebilirsiniz.
İşlem işlem sistemi (TPS) bileşeniniz KTM'ye birçok hızlı çağrı yapar ve bu da sistem performansının çok yavaş olması olasılığına neden olur.
Bu durumda, bileşeniniz her KTM nesne tutamacını bir işaretçiye dönüştürmek, işaretçiyi kaydetmek ve sonra işaretçiyi TmXxx yordamlarına geçirmek için ObReferenceObjectByHandle'ı çağırabilir. Bu dönüştürme, ZwXxx yordamı her çağrıldığında KTM'nin her tanıtıcıyı dahili olarak bir işaretçiye dönüştürme ihtiyacını ortadan kaldırır.
ObReferenceObectByHandle'a yapılan her çağrı, uygun KTM tanımlı bayrakları içeren bir erişim maskesi içermelidir. Bu bayraklar, KTM'nin oluşturma ve açma rutinlerinin başvuru sayfalarında açıklanmıştır.
Bileşeniniz KTM nesnesini kullanmayı tamamladığında, nesneyi dereference etmek için ObDereferenceObjectDeferDelete veya ObDereferenceObject çağrısını yapması gerekir.
Bileşeniniz veya sürücü yığınınızdaki başka bir bileşen, döndürme kilitleri, mutex nesneleri veya hızlı mutex'ler gibi sistem tarafından sağlanan kilitleri tutuyorsa ObDereferenceObjectDeferDelete kullanmalısınız.
Sürücü yığınınızdaki hiçbir bileşenin sistem tarafından sağlanan kilitleri tutmadığınızdan eminseniz ObDereferenceObject kullanabilirsiniz.
KTM, nesne ad alanı için kilitleri de tutuyor olabileceğinden, bileşeniniz kilitleri tutarken ObDereferenceObject'i çağırırsa kilitlenmeler oluşabilir. Ayrıca, bileşeniniz bir işlemin tanımlayıcısını ZwQueryInformationTransaction çağrısından daha verimli bir şekilde almak için TmGetTransactionId'yi çağırabilir.
ZwXxx rutininin sağlamadığı bir yeteneğe sahip olmalısınız.
Özellikle, bir kaynak yöneticisi aşağıdaki yordamları çağırabilir:
- Bildirimlerin bir geri arama rutini aracılığıyla zaman uyumsuz teslimini etkinleştirmek için TmEnableCallbacks.
- Bir liste nesnesinin anahtar başvuru sayısını artırmak veya silmek için TmReferenceEnlistmentKey ve TmDereferenceEnlistmentKey.
- TmRequestOutcomeEnlistment, bir liste için anında işleme veya geri alma bildirimi istemek için.
- TmIsTransactionActive , bir işlemin etkin durumda olup olmadığını belirler.