PTM_RM_NOTIFICATION fungsi panggilan balik (wdm.h)

Rutinitas panggilan balik ResourceManagerNotification resource manager menerima dan menangani pemberitahuan transaksi.

Sintaks

PTM_RM_NOTIFICATION PtmRmNotification;

NTSTATUS PtmRmNotification(
  [in]      PKENLISTMENT EnlistmentObject,
  [in]      PVOID RMContext,
  [in]      PVOID TransactionContext,
  [in]      ULONG TransactionNotification,
  [in, out] PLARGE_INTEGER TmVirtualClock,
  [in]      ULONG ArgumentLength,
  [in]      PVOID Argument
)
{...}

Parameter

[in] EnlistmentObject

Penunjuk ke objek pendaftaran. Rutinitas panggilan balik ResourceManagerNotification menerima pemberitahuan untuk pendaftaran yang diwakili objek ini.

[in] RMContext

Nilai yang sebelumnya ditentukan manajer sumber daya untuk parameter RMKey dari rutinitas TmEnableCallbacks .

[in] TransactionContext

Nilai yang sebelumnya ditentukan manajer sumber daya untuk parameter EnlistmentKey dari rutinitas ZwCreateEnlistment .

[in] TransactionNotification

Salah satu nilai TRANSACTION_NOTIFY_XXX yang ditentukan dalam Ktmtypes.h. Nilai ini menentukan jenis pemberitahuan transaksi yang dikirim KTM ke pemanggil.

[in, out] TmVirtualClock

Penunjuk ke lokasi yang berisi nilai jam virtual pada saat KTM menyiapkan pemberitahuan untuk pengiriman ke manajer sumber daya. Jika rutinitas panggilan balik meningkatkan nilai ini sebelum kembali, KTM memperbarui jam virtual ke nilai baru. (Biasanya, manajer sumber daya tidak memodifikasi nilai jam virtual.)

[in] ArgumentLength

Panjang, dalam byte, dari buffer yang dirujuk oleh parameter Argumen . Parameter ini nol jika buffer tidak tersedia.

[in] Argument

Penunjuk ke buffer yang berisi argumen khusus pemberitahuan. Parameter ini adalah NULL jika pemberitahuan yang ditentukan parameter TransactionNotification tidak memerlukan buffer argumen.

Untuk daftar pemberitahuan yang menyertakan buffer argumen tambahan, lihat bagian Keterangan TRANSACTION_NOTIFICATION.

Nilai kembali

Rutinitas panggilan balik ResourceManagerNotification harus mengembalikan STATUS_SUCCESS atau nilai status lain yang NT_SUCCESS(status) sama dengan TRUE jika operasi berhasil.

Biasanya, manajer sumber daya mengembalikan STATUS_SUCCESS jika layanan pemberitahuan secara sinkron dan STATUS_PENDING jika layanan pemberitahuan secara asinkron, tetapi dapat mengembalikan STATUS_PENDING dalam kedua kasus. Namun, manajer sumber daya dapat mengembalikan STATUS_PENDING hanya untuk pemberitahuan yang ditanggapinya dengan memanggil salah satu rutinitas TmXxxComplete atau ZwXxxComplete .

Dengan kata lain, jika manajer sumber daya harus menanggapi pemberitahuan dengan memanggil salah satu rutinitas TmXxxComplete atau ZwXxxComplete , manajer sumber daya dapat mengembalikan STATUS_PENDING untuk pemberitahuan dan kemudian memanggil rutinitas TmXxxComplete atau ZwXxxComplete yang sesuai.

Jika terjadi kesalahan, rutinitas panggilan balik harus mengembalikan nilai status yang NT_SUCCESS(status) sama dengan FALSE.

Keterangan

Untuk mendaftarkan rutinitas panggilan balik ResourceManagerNotification , manajer sumber daya Anda harus memanggil TmEnableCallbacks.

Perhatikan bahwa rutinitas panggilan balik ResourceManagerNotification menerima penunjuk, bukan handel, ke objek pendaftaran. Anda dapat meneruskan penunjuk objek pendaftaran ke rutinitas TmXxx objek pendaftaran.

Untuk informasi selengkapnya tentang rutinitas panggilan balik ResourceManagerNotification, lihat Membuat Resource Manager.

Rutinitas panggilan balik ResourceManagerNotification dipanggil di IRQL = PASSIVE_LEVEL, dan harus kembali di IRQL = PASSIVE_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi sistem operasi yang lebih baru.
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
IRQL PASSIVE_LEVEL (Lihat bagian Keterangan)

Lihat juga

TRANSACTION_NOTIFICATION

TmEnableCallbacks

ZwCreateEnlistment

ZwGetNotificationResourceManager