EVT_SERCX_CONTROL fungsi panggilan balik (sercx.h)

Fungsi panggilan balik peristiwa EvtSerCxControl menangani permintaan kontrol I/O yang memiliki kode kontrol I/O (IOCTL) yang didukung ekstensi kerangka kerja serial (SerCx).

Sintaks

EVT_SERCX_CONTROL EvtSercxControl;

NTSTATUS EvtSercxControl(
  [in] WDFDEVICE Device,
  [in] WDFREQUEST Request,
  [in] size_t OutputBufferLength,
  [in] size_t InputBufferLength,
  [in] ULONG IoControlCode
)
{...}

Parameter

[in] Device

Handel WDFDEVICE ke objek perangkat kerangka kerja yang mewakili pengontrol serial.

[in] Request

Handel WDFREQUEST ke objek permintaan kerangka kerja yang mewakili permintaan kontrol I/O.

[in] OutputBufferLength

Menentukan panjang, dalam byte, dari buffer output untuk permintaan kontrol I/O yang ditentukan oleh parameter Permintaan .

[in] InputBufferLength

Menentukan panjang, dalam byte, dari buffer input untuk permintaan kontrol I/O yang ditentukan oleh parameter Permintaan .

[in] IoControlCode

Menentukan IOCTL dari permintaan kontrol I/O yang ditentukan oleh parameter Permintaan .

Nilai kembali

Fungsi EvtSerCxControl mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, kode status kesalahan akan dikembalikan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Keterangan

Driver pengontrol serial diperlukan untuk mengimplementasikan fungsi panggilan balik ini. SerCx memanggil fungsi ini untuk menyerahkan permintaan kontrol I/O ke driver pengontrol untuk diproses. Sebelum fungsi ini kembali, fungsi ini harus menyelesaikan permintaan baik dengan melakukan operasi yang diminta atau dengan mengembalikan status kesalahan. Driver yang tidak menerapkan dukungan untuk permintaan tertentu harus mengembalikan status kesalahan STATUS_NOT_IMPLEMENTED untuk permintaan ini.

Biasanya, fungsi EvtSerCxControl harus disinkronkan ke ISR driver pengontrol sebelum fungsi ini mengubah pengaturan dalam daftar perangkat keras pengontrol serial.

Nilai pengembalian fungsi EvtSerCxControl harus cocok dengan nilai status yang ditulis fungsi ini ke blok status permintaan kontrol I/O. SerCx menggunakan nilai kembali untuk melacak status driver pengontrol dan perangkat keras pengontrol serial.

Berikut ini adalah daftar IOCTL yang harus disiapkan fungsi panggilan balik ini:

IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTR IOCTL_SERIAL_CLR_RTS IOCTL_SERIAL_GET_BAUD_RATE IOCTL_SERIAL_CLR_RTS IOCTL_SERIAL_GET_CHARS IOCTL_SERIAL_GET_CHARS IOCTL_SERIAL_GET_COMMSTATUS IOCTL_SERIAL_GET_DTRRTS IOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_IMMEDIATE_CHAR IOCTL_SERIAL_GET_LINE_CONTROL IOCTL_SERIAL_GET_MODEM_CONTROL IOCTL_SERIAL_GET_PROPERTIES IOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_SET_BAUD_RATEIOCTL_SERIAL_LSRMST_INSERT IOCTL_SERIAL_SET_BREAK_OFF IOCTL_SERIAL_SET_BREAK_OFF IOCTL_SERIAL_SET_BREAK_ON IOCTL_SERIAL_SET_CHARS IOCTL_SERIAL_SET_DTR IOCTL_SERIAL_SET_FIFO_CONTROL IOCTL_SERIAL_SET_HANDFLOW IOCTL_ IOCTL_SERIAL_SET_RTS IOCTL_SERIAL_SET_HANDFLOW IOCTL_SERIAL_SET_MODEM_CONTROLIOCTL_SERIAL_SET_LINE_CONTROL IOCTL_ SERIAL_SET_XOFFIOCTL_SERIAL_SET_XONIOCTL_SERIAL_XOFF_COUNTER Untuk mendaftarkan fungsi panggilan balik EvtSerCxControl, driver pengontrol memanggil metode SerCxInitialize selama panggilan balik EvtDriverDeviceAdd.

Contoh

Jenis fungsi untuk panggilan balik ini dinyatakan dalam Sercx.h, sebagai berikut.

typedef NTSTATUS
  EVT_SERCX_CONTROL(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    );

Untuk menentukan fungsi panggilan balik EvtSerCxControl yang diberi nama MyEvtSerCxControl, Anda harus terlebih dahulu memberikan deklarasi fungsi yang diperlukan Static Driver Verifier (SDV) dan alat verifikasi lainnya, sebagai berikut.

EVT_SERCX_CONTROL MyEvtSerCxControl;

Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut.

NTSTATUS
  MyEvtSerCxControl(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    )
{ ... }

Untuk informasi selengkapnya tentang persyaratan SDV untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi Menggunakan Jenis Peran Fungsi untuk Driver KMDF.

Persyaratan

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

Lihat juga

EvtDriverDeviceAdd

SerCxInitialize