Aracılığıyla paylaş


İşlem Bildirimleri

KTM, her kaynak yöneticisi için bir bildirim kuyruğu sağlar. KTM, bildirimleri kaynak yöneticisinin kuyruğuna yerleştirerek bir kaynak yöneticisine teslim eder.

Kaynak yöneticisi, kuyruktan zaman uyumlu veya zaman uyumsuz olarak bildirim alabilir.

  • Bildirimleri zaman uyumlu olarak almak için kaynak yöneticisi ZwGetNotificationResourceManager'ı tekrar tekrar çağırabilir.

  • Zaman uyumsuz olarak bildirim almak için, kaynak yöneticisi bir geri çağırma yordamı ayarlamak için TmEnableCallbacks'i çağırabilir. KTM, kaynak yöneticisinin kuyruğuna her bildirim yerleştirdiğinde geri çağırma rutinini çağırır.

Kaynak yöneticisi bir işlem için bir liste oluşturmak üzere ZwCreateEnlistment'i çağırdığında, kaynak yöneticisi alması gereken bildirim türlerini belirtir. Kaynak yöneticileri yalnızca almak üzere kaydettikleri bildirimleri alır.

Bildirim sabitleri Ktmtypes.h içinde tanımlanır. Bildirim sabit adları TRANSACTION_NOTIFY_Xxx biçimindedir.

Bu konunun geri kalanında Ktmtypes.h tarafından tanımlanıp bunları üç gruba bölen tüm bildirim sabitleri listelenir:

  • Kaynak yöneticilerinin alabileceği bildirimler

  • Üst düzey işlem yöneticilerinin alabileceği bildirimler

  • Tanımlanan ancak şu anda kullanılmayan bildirim sabitleri

Kaynak Yöneticileri için Bildirimler

Tüm kaynak yöneticilerinin TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE ve TRANSACTION_NOTIFY_COMMIT bildirimlerini almak için kaydolması gerekir; daha sonra bir kaydı salt okunur olarak işaretlemek için ZwReadOnlyEnlistment'i çağırsalar bile.

Kaynak yöneticileri TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT destekleyebilir, ancak çok aşamalı ön hazırlık, hazırlama ve işleme bildirimlerini de desteklemelidir.

Aşağıdaki liste, kaynak yöneticilerinin alabileceği tüm bildirimleri içerir:

TRANSACTION_NOTIFY_PREPREPARE
Gönderildiğinde: İstemci ZwCommitTransaction'ı çağırır ve hiçbir kaynak yöneticisi tek aşamalı işlemeyi desteklemez veya üstün bir işlem yöneticisiZwPrePrepareEnlistment'i çağırır.

Alındı: Kaynak yöneticileri.

Alıcının gerekli eylemi: Önceden hazırlama işlemleri gerçekleştirin ve ardından ZwPrePrepareComplete öğesini çağırin. (Önceden hazırlama işlemleri hakkında daha fazla bilgi için bkz Taahhüt İşlemlerini Yönetme.)

Kısıtlama -ları: Kaynak yöneticisinin de TRANSACTION_NOTIFY_PREPARE ve TRANSACTION_NOTIFY_COMMIT desteklemesi gerekir.

İŞLEM_BİLDİRİM_HAZIRLIK (TRANSACTION_NOTIFY_PREPARE)
Gönderildiğinde: TRANSACTION_NOTIFY_PREPREPARE sonra bir istemci ZwCommitTransaction'ı çağırırsa ve hiçbir kaynak yöneticisi tek aşamalı işlemeyi desteklemezse veya üst düzey bir işlem yöneticisi ZwPrepareEnlistment'i çağırırsa.

Alıcı: Kaynak yöneticileri.

Alıcının gerekli eylemi: Hazırlama işlemlerini gerçekleştirin ve ardından ZwPrepareComplete çağrısı yapın. (Daha fazla bilgi için, hazırlık operasyonları hakkında Onay İşlemlerini Yönetme'ye bakın.)

Kısıtlama -ları: Kaynak yöneticisinin de TRANSACTION_NOTIFY_PREPREPARE ve TRANSACTION_NOTIFY_COMMIT desteklemesi gerekir.

TRANSACTION_NOTIFY_COMMIT
Gönderildiğinde: TRANSACTION_NOTIFY_PREPARE sonra bir istemci ZwCommitTransaction'ı çağırırsa ve hiçbir kaynak yöneticisi tek aşamalı işlemeyi desteklemezse veya üstün bir işlem yöneticisi ZwCommitEnlistment'i çağırırsa.

Alındı tarafından: Kaynak yöneticileri.

Alıcının gerekli eylemi: İşleme işlemlerini gerçekleştirin ve ardından ZwCommitComplete'i çağırin. (İşleme işlemleri hakkında daha fazla bilgi için bkz . İşleme İşlemlerini İşleme.)

Kısıtlamalar: Kaynak yöneticisinin de TRANSACTION_NOTIFY_PREPREPARE ve TRANSACTION_NOTIFY_PREPARE desteklemesi gerekir.

TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT
Gönderildiğinde: İstemci ZwCommitTransaction'ı çağırır ve kaynak yöneticisi tek aşamalı işleme işlemlerini destekler.

Tarafından alındı: Kaynak yöneticileri.

Alıcının gerekli eylemi: İşlemi işleyin veya ZwSinglePhaseReject'i çağırın. (Tek aşamalı işleme işlemleri hakkında daha fazla bilgi için bkz İşlemleri İşleme.)

Kısıtlama -ları: Kaynak yöneticisi ayrıca TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE ve TRANSACTION_NOTIFY_COMMIT desteklemelidir.

İŞLEM_BİLDİR_GERİ_AL
Gönderildiğinde: İstemci ZwRollbackTransaction'ı çağırır, üstün bir işlem yöneticisi ZwRollbackEnlistment'i çağırır veya KTM bir hata algılar (günlük akışına başarısız yazma gibi).

Alındı: Hem kaynak yöneticileri hem de üst işlem yöneticileri.

Alıcının gerekli eylemi: İşlemin verilerini geri almak için gereken işlemleri gerçekleştirin ve ardından ZwRollbackComplete'i çağırın. (Geri alma işlemleri hakkında daha fazla bilgi için bkz. Geri Alma İşlemlerini İşleme.)

Kısıtlama -ları: Tüm kaynak yöneticileri ve üst işlem yöneticileri TRANSACTION_NOTIFY_ROLLBACK desteklemelidir.

İŞLEM_BİLDİRİM_KURTAR
Gönderildiğinde: Kaynak yöneticisi ZwRecoverResourceManager'ı çağırır.

Alındı tarafından: Kaynak yöneticileri.

Alıcının gerekli eylemi: Kaynak yöneticisi ZwRecoverEnlistment'i çağırmalıdır. (Kurtarma işlemleri hakkında daha fazla bilgi için bkz . Kurtarma İşlemlerini İşleme.)

Kısıtlama: Hiç.

İŞLEM_BİLDİRİM_SON_KURTARMA
Gönderildiğinde: KTM bir kaynak yöneticisinin listeleri için son TRANSACTION_NOTIFY_RECOVER gönderdikten sonra.

Tarafından alındı: Kaynak yöneticileri.

Alıcının gerekli eylemi: Kurtarma işlemini sonlandırın. (Kurtarma işlemleri hakkında daha fazla bilgi için bkz . Kurtarma İşlemlerini İşleme.)

Kısıtlama: Hiçbiri yok.

İŞLEM_BİLDİRİM_KARARSIZ
Gönderildiğinde: Bir kaynak yöneticisi ZwRecoverEnlistment'i çağırdıktan sonra, KTM, işlemin tamamlanıp tamamlanmayacağını veya geri alınıp alınmayacağını belirleyemezse (genellikle TPS'de mevcut olmayan üst düzey bir işlem yöneticisinin olması nedeniyle).

Alındı: Kaynak yöneticileri tarafından.

Alıcının gerekli eylemi: KTM TRANSACTION_NOTIFY_COMMIT veya TRANSACTION_NOTIFY_ROLLBACK gönderene kadar hiçbir şey yapma.

Kısıtlama: Yok.

İŞLEM_BİLDİRİM_RM_BAĞLANTISI_KESİLDİ
Gönderildiğinde: Tek aşamalı işleme işlemini işleyen kaynak yöneticisi, işlemin işlendiğini veya geri alındığını belirtmeksizin listeleme tutamacını kapatır.

Alan: İşlem için listelemeleri olan kaynak yöneticileri ve üst düzey işlem yöneticileri.

Alıcının yapması gereken eylem: İşleme özel temizleme operasyonları. Bu bildirim genellikle salt okunur kaynak yöneticileri için yararlıdır.

Kısıtlama: Yok.

Üstün İşlem Yöneticileri için Bildirimler

Üstün işlem yöneticileri aşağıdaki bildirimleri alabilir:

İŞLEM_BİLDİRİMİ_GERİ_AL
Önceki açıklamaya bakın.

TRANSAKSIYON_BİLDİR_RM_BAĞLANTISI_KESİLDİ
Önceki açıklamaya bakın.

TRANSACTION_NOTIFY_PREPREPARE_COMPLETE
Gönderildiğinde: Tüm kaynak yöneticileri TRANSACTION_NOTIFY_PREPREPARE aldıktan ve ZwPrePrepareComplete çağrısı yaparak yanıt verdikten sonra.

Alıcı: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: Üst işlem yöneticisi ZwPrepareEnlistment'i çağırmalıdır.

TRANSACTION_NOTIFY_PREPARE_COMPLETE
Gönderildiğinde: Tüm kaynak yöneticileri TRANSACTION_NOTIFY_PREPARE aldıktan ve ZwPrepareComplete çağrısı yaparak yanıt verdikten sonra.

Tarafından alındı: Üst düzey işlem yöneticileri.

Alıcının gerekli eylemi: Üst işlem yöneticisi ZwCommitEnlistment'i çağırmalıdır.

TRANSACTION_NOTIFY_COMMIT_COMPLETE
Gönderildiğinde: Tüm kaynak yöneticileri TRANSACTION_NOTIFY_COMMIT aldıktan ve ZwCommitComplete çağrısı yaparak yanıt verdikten sonra.

Alındı: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: İşlem temizliği işlemleri.

İŞLEM_BİLDİRİM_GERİ_ALMA_TAMAMlandı (TRANSACTION_NOTIFY_ROLLBACK_COMPLETE)
Gönderildiğinde: Tüm kaynak yöneticileri TRANSACTION_NOTIFY_ROLLBACK aldıktan ve ZwRollbackComplete çağrısı yaparak yanıt verdikten sonra.

Alındı: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: İşlem temizleme operasyonları.

İŞLEM_BİLDİRİ_ONAR_SORGU
Gönderildiğinde: Üstün bir işlem yöneticisi ZwRecoverResourceManager'ı çağırır.

Alan: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: Üst işlem yöneticisi, kayıt için ZwCommitEnlistment veya ZwRollbackEnlistment çağırmalıdır.

TRANSACTION_NOTIFY_COMMIT_REQUEST
Gönderildiğinde: İstemci ZwCommitTransaction'ı çağırır. Üst düzey bir işlem yöneticisi bir liste için bu bildirime kaydoldıysa, KTM TRANSACTION_NOTIFY_COMMIT kaynak yöneticilerine göndermek yerine üst işlem yöneticisine TRANSACTION_NOTIFY_COMMIT_REQUEST gönderir.

Alan: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: Üst işlem yöneticisi ZwCommitEnlistment'i çağırır.

İŞLEM_BİLDİRİM_İSTEK_SONUCU
Gönderildiğinde: Bir kaynak yöneticisi, işlem hazır durumdayken TmRequestOutcomeEnlistment'i çağırır.

Tarafından alındı: Üstün işlem yöneticileri.

Alıcının gerekli eylemi: Üst işlem yöneticisi ZwCommitEnlistment veya ZwRollbackEnlistment'i çağırmalıdır.

Kullanılmayan Bildirimler

Aşağıdaki bildirimler Ktmtypes.h dosyasında tanımlanmıştır, ancak KTM şu anda bunları desteklememektedir:

İŞLEM_BİLDİR_YETKİLENDİRME_ONAYLA

TRANSACTION_NOTIFY_ENLIST_MASK

TRANSACTION_NOTIFY_ENLIST_PREPREPARE

TRANSACTION_NOTIFY_MARSHAL

TRANSACTION_NOTIFY_PROMOTE

İŞLEM_BİLDİR_TERFİ_ET_YENİ

TRANSACTION_NOTIFY_PROPAGATE_PULL

İŞLEM_BİLDİRİM_YAYILIM_PUSH

İŞLEM_BİLDİRİM_TM_ONLİNE

İŞLEM_BİLDİRİMİ_ONAYLAMA_TAMAMLAMA