EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION fungsi panggilan balik (sercx.h)

Fungsi panggilan balik peristiwa EvtSerCx2PioReceiveEnableReadyNotification dipanggil oleh versi 2 dari ekstensi kerangka kerja serial (SerCx2) untuk mengaktifkan driver pengontrol serial untuk memberi tahu SerCx2 ketika pengontrol serial menerima data baru.

Sintaks

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION EvtSercx2PioReceiveEnableReadyNotification;

void EvtSercx2PioReceiveEnableReadyNotification(
  [in] SERCX2PIORECEIVE PioReceive
)
{...}

Parameter

[in] PioReceive

Handel SERCX2PIORECEIVE ke objek penerima PIO. Driver pengontrol serial sebelumnya disebut metode SerCx2PioReceiveCreate untuk membuat objek ini.

Nilai kembali

Tidak ada

Keterangan

Driver pengontrol serial Anda harus menerapkan fungsi ini. Driver mendaftarkan fungsi dalam panggilan SerCx2PioReceiveCreate yang membuat objek penerima PIO.

Setelah fungsi EvtSerCx2PioReceiveEnableReadyNotification dipanggil untuk mengaktifkan pemberitahuan siap untuk transaksi penerima PIO, driver pengontrol serial harus memanggil metode SerCx2PioReceiveReady untuk memberi tahu SerCx2 ketika driver mendeteksi bahwa satu atau beberapa byte data tersedia untuk dibaca dari FIFO penerima di perangkat keras pengontrol serial. Jika data sudah tersedia di FIFO penerima ketika pemberitahuan siap diaktifkan, driver segera memanggil metode ini untuk memberi tahu SerCx2.

Pemberitahuan siap untuk transaksi penerima PIO adalah pemberitahuan satu kali. Setelah mengirim pemberitahuan siap ke SerCx2, driver pengontrol serial tidak mengirimkan pemberitahuan lebih lanjut sampai SerCx2 memanggil fungsi EvtSerCx2PioReceiveEnableReadyNotification untuk mengaktifkan pemberitahuan lain.

Panggilan fungsi panggilan balik peristiwa EvtSerCx2PioReceiveReadBuffer mungkin hanya menyelesaikan sebagian transaksi penerima PIO karena tidak ada lagi data yang segera tersedia untuk dibaca dari FIFO penerima. Dalam hal ini, SerCx2 memanggil fungsi EvtSerCx2PioReceiveEnableReadyNotification untuk mengaktifkan pemberitahuan siap, dalam hal ini driver pengontrol serial harus memberi tahu SerCx2 ketika FIFO penerima berisi lebih banyak data. Menanggapi pemberitahuan ini, SerCx2 melanjutkan transaksi penerimaan yang diselesaikan sebagian dengan memanggil fungsi EvtSerCx2PioReceiveReadBuffer lagi.

Biasanya, fungsi EvtSerCx2PioReceiveEnableReadyNotification memungkinkan interupsi yang terjadi ketika pengontrol serial memiliki lebih banyak data yang tersedia untuk dibaca. Menanggapi gangguan ini, driver pengontrol serial memanggil SerCx2PioReceiveReady.

Tidak lebih dari satu pemberitahuan siap dapat tertunda pada satu waktu. Setelah SerCx2 memanggil fungsi EvtSerCx2PioReceiveEnableReadyNotification untuk mengaktifkan pemberitahuan siap, SerCx2 tidak memanggil fungsi ini lagi sampai driver pengontrol memanggil SerCx2PioReceiveReady.

SerCx2 tidak pernah memanggil fungsi EvtSerCx2PioReceiveReadBuffer saat pemberitahuan siap diaktifkan.

Pemberitahuan siap yang tertunda dapat dibatalkan jika waktu permintaan baca terkait habis atau dibatalkan. Untuk membatalkan pemberitahuan siap untuk transaksi penerima PIO, SerCx2 memanggil fungsi panggilan balik peristiwa EvtSerCx2PioReceiveCancelReadyNotification .

SerCx2 menggunakan pemberitahuan siap untuk mengelola batas waktu interval yang terjadi secara efisien selama penanganan permintaan baca yang diproses sebagai transaksi penerima PIO.

Untuk informasi selengkapnya, lihat Transaksi PIO-Receive SerCx2.

Contoh

Untuk menentukan fungsi panggilan balik EvtSerCx2PioReceiveEnableReadyNotification , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk driver. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan fungsi panggilan balik EvtSerCx2PioReceiveEnableReadyNotification yang bernama MyPioReceiveEnableReadyNotification, gunakan jenis fungsi EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION , seperti yang ditunjukkan dalam contoh kode ini:

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION  MyPioReceiveEnableReadyNotification;

Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
VOID
  MyPioReceiveEnableReadyNotification(
    SERCX2PIORECEIVE  PioReceive
    )
  {...}

Jenis fungsi EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION didefinisikan dalam file header Sercx.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver KMDF. Untuk informasi selengkapnya tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.1.
Target Platform Desktop
Header sercx.h
IRQL Dipanggil di IRQL <= DISPATCH_LEVEL.

Lihat juga

EvtSerCx2PioReceiveCancelReadyNotification

EvtSerCx2PioReceiveCleanupTransaction

IRP_MJ_READ

SERCX2PIORECEIVE

SerCx2PioReceiveCreate

SerCx2PioReceiveReady