Bagikan melalui


EVT_SERCX2_SET_WAIT_MASK fungsi panggilan balik (sercx.h)

Fungsi panggilan balik peristiwa EvtSerCx2SetWaitMask dipanggil oleh versi 2 dari ekstensi kerangka kerja serial (SerCx2) untuk mengonfigurasi pengontrol serial untuk memantau serangkaian peristiwa perangkat keras yang ditentukan oleh masker tunggu.

Sintaks

EVT_SERCX2_SET_WAIT_MASK EvtSercx2SetWaitMask;

void EvtSercx2SetWaitMask(
  [in] WDFDEVICE Device,
  [in] WDFREQUEST Request,
  [in] ULONG WaitMask
)
{...}

Parameter

[in] Device

Handel WDFDEVICE ke objek perangkat kerangka kerja yang mewakili pengontrol serial. Driver pengontrol serial membuat objek ini dalam fungsi panggilan balik EvtDriverDeviceAdd . Untuk informasi selengkapnya, lihat SerCx2InitializeDevice.

[in] Request

Handel WDFREQUEST ke objek permintaan kerangka kerja yang mewakili permintaan IOCTL_SERIAL_SET_WAIT_MASK .

[in] WaitMask

Topeng tunggu baru. Untuk informasi selengkapnya, lihat Keterangan.

Nilai kembali

Tidak ada

Keterangan

Driver pengontrol serial Anda dapat, sebagai opsi, menerapkan fungsi ini. Jika diimplementasikan, driver mendaftarkan fungsi dalam panggilan ke metode SerCx2InitializeDevice yang menyelesaikan inisialisasi objek perangkat kerangka kerja untuk pengontrol serial.

Ketika SerCx menerima permintaan IOCTL_SERIAL_SET_WAIT_MASK dari klien, penangan permintaan di SerCx2 memanggil fungsi EvtSerCx2SetWaitMask , jika diimplementasikan, untuk memberi tahu driver bahwa masker tunggu telah berubah. Jika masker tunggu bukan nol, driver segera mulai memantau peristiwa di masker tunggu baru, dan membuang masker tunggu lama yang mungkin telah disediakan dalam panggilan EvtSerCx2SetWaitMask sebelumnya. Jika masker tunggu baru adalah nol, pengemudi hanya membuang masker tunggu lama dan berhenti untuk memantau peristiwa masker tunggu. Untuk informasi selengkapnya tentang jenis peristiwa yang dapat ditentukan oleh masker tunggu, lihat SERIAL_EV_XXX.

Jika driver tidak menerapkan fungsi ini, SerCx2 gagal semua permintaan IOCTL_SERIAL_SET_WAIT_MASK dengan kode status kesalahan STATUS_NOT_SUPPORTED.

Untuk memantau peristiwa di masker tunggu, fungsi EvtSerCx2SetWaitMask biasanya memungkinkan gangguan untuk peristiwa ini. Kemudian, ketika peristiwa di masker tunggu terdeteksi, driver pengontrol serial memanggil metode SerCx2CompleteWait untuk memberi tahu SerCx2 tentang peristiwa tersebut.

Fungsi EvtSerCx2SetWaitMask bertanggung jawab untuk menyelesaikan permintaan IOCTL_SERIAL_SET_WAIT_MASK yang ditunjukkan oleh parameter Permintaan . Setelah driver pengontrol serial mengaktifkan gangguan yang diperlukan, driver ini memanggil metode dan persediaan WdfRequestComplete , sebagai parameter input, nilai parameter Permintaan dan nilai status untuk menunjukkan apakah permintaan berhasil.

Sebelum driver pengontrol serial memanggil WdfRequestComplete untuk menyelesaikan permintaan, driver harus menyelesaikan panggilan apa pun ke SerCx2CompleteWait yang mungkin masih tertunda karena peristiwa di masker tunggu lama.

Awalnya, setelah klien membuka koneksi logis ke port serial dan sebelum panggilan EvtSerCx2SetWaitMask pertama, masker tunggu secara efektif nol, dan driver pengontrol serial tidak memantau peristiwa SERIAL_EV_XXX apa pun.

SerCx2 gagal dalam permintaan IOCTL_SERIAL_SET_WAIT_MASK yang memiliki masker tunggu yang menyertakan salah satu bendera peristiwa SERIAL_EV_XXX berikut:

  • SERIAL_EV_PERR
  • SERIAL_EV_RING
  • SERIAL_EV_RXFLAG
Dengan demikian, masker tunggu yang disediakan ke fungsi EvtSerCx2SetWaitMask Anda tidak pernah berisi bendera peristiwa apa pun dalam daftar sebelumnya.

Jika diimplementasikan, fungsi EvtSerCx2SetWaitMask Anda harus mendukung bendera peristiwa berikut:

  • SERIAL_EV_CTS
  • SERIAL_EV_BREAK
  • SERIAL_EV_ERR
Selain itu, jika pengontrol serial memiliki baris sinyal siap himpunan data (DSR), fungsi EvtSerCx2SetWaitMask harus mendukung SERIAL_EV_DSR. Sebagai opsi, driver dapat mendukung salah satu bendera peristiwa lain yang dijelaskan dalam SERIAL_EV_XXX. Jika masker tunggu menentukan peristiwa yang tidak didukung driver, fungsi EvtSerCx2SetWaitMask harus gagal dalam permintaan dan mengatur nilai status dalam permintaan ke STATUS_INVALID_PARAMETER.

Contoh

Untuk menentukan fungsi panggilan balik EvtSerCx2SetWaitMask , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk pengandar. 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 EvtSerCx2SetWaitMask yang diberi nama MySetWaitmask, gunakan jenis fungsi EVT_SERCX2_SET_WAIT_MASK , seperti yang ditunjukkan dalam contoh kode ini:

EVT_SERCX2_SET_WAIT_MASK  MySetWaitmask;

Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
VOID
  MySetWaitmask(
    WDFDEVICE  Device,
    WDFREQUEST Request,
    ULONG WaitMask
    )
  {...}

Jenis fungsi EVT_SERCX2_SET_WAIT_MASK ditentukan 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_SET_WAIT_MASK 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

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX

SerCx2CompleteWait

SerCx2InitializeDevice

WdfRequestComplete