Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Beberapa perangkat keras pengontrol serial mungkin menerapkan mekanisme transfer data selain PIO atau DMA sistem untuk menulis data ke pengontrol serial. Driver pengontrol serial dapat mendukung transaksi pengiriman kustom untuk membuat mekanisme transfer data ini tersedia untuk digunakan oleh SerCx2.
Untuk memulai transaksi pengiriman kustom, SerCx2 memanggil fungsi panggilan balik peristiwa EvtSerCx2CustomTransmitTransactionStart dari driver dan memberikan permintaan tulis (IRP_MJ_WRITE) beserta deskripsi buffer tulis untuk transaksi sebagai parameter. Dalam panggilan ini, fungsi memulai transaksi dan mengembalikan. Driver kemudian bertanggung jawab untuk menyelesaikan transaksi dan mengerjakan permintaan tulis.
Membuat objek pengiriman kustom
Sebelum SerCx2 dapat memanggil salah satu fungsi EvtSerCx2CustomTransmitTransactionXxx**, driver harus memanggil metode SerCx2CustomTransmitTransactionCreate untuk mendaftarkan fungsi-fungsi ini ke dalam SerCx2. Metode ini menerima, sebagai parameter input, pointer ke struktur SERCX2_CUSTOM_TRANSMIT_TRANSACTION_CONFIG yang berisi pointer-pointer ke fungsi EvtSerCx2CustomTransmitTransactionXxx** dari driver.
Driver harus menerapkan fungsi berikut:
Sebagai opsi, driver dapat mengimplementasikan salah satu atau kedua fungsi berikut:
Metode SerCx2CustomTransmitTransactionCreate membuat objek transmisi kustom dan memasok driver panggilan dengan handel SERCX2CUSTOMTRANSMITTRANSACTION ke objek ini. Fungsi EvtSerCx2CustomTransmitTransactionXxx** dari driver semuanya menggunakan handle ini sebagai parameter pertama mereka. Metode SerCx2 berikut mengambil handle ini sebagai parameter pertama:
Inisialisasi dan pembersihan perangkat keras
Beberapa driver pengontrol serial mungkin perlu menginisialisasi perangkat keras pengontrol serial pada awal transaksi pengiriman kustom, atau untuk membersihkan status perangkat keras pengontrol serial di akhir transaksi.
Jika driver menerapkan fungsi panggilan balik peristiwa EvtSerCx2CustomTransmitTransactionInitialize , SerCx2 memanggil fungsi ini untuk menginisialisasi pengontrol serial sebelum memulai transaksi. Jika diimplementasikan, fungsi EvtSerCx2CustomTransmitTransactionInitialize harus memanggil metode SerCx2CustomTransmitTransactionInitializeComplete untuk memberi tahu SerCx2 ketika driver selesai menginisialisasi pengontrol serial.
Jika driver menerapkan fungsi panggilan balik peristiwa EvtSerCx2CustomTransmitTransactionCleanup, SerCx2 memanggil fungsi ini untuk membersihkan status perangkat keras setelah transaksi berakhir. Jika diimplementasikan, fungsi EvtSerCx2CustomTransmitTransactionInitialize harus memanggil metode SerCx2CustomTransmitTransactionCleanupComplete untuk memberi tahu SerCx2 ketika driver selesai membersihkan pengontrol serial.
Mengakses objek permintaan
Untuk memulai transaksi pengiriman kustom, SerCx2 memanggil fungsi EvtSerCx2CustomTransmitTransactionStart driver dan meneruskan permintaan tulis terkait (dienkapsulasi dalam handel objek WDFREQUEST) ke fungsi ini sebagai parameter. Driver bertanggung jawab untuk memanggil metode seperti WdfRequestComplete untuk menyelesaikan permintaan ini ketika transaksi selesai. Kecuali permintaan dapat segera diselesaikan, sebelum fungsi EvtSerCx2CustomTransmitTransactionStart kembali, driver harus memanggil metode seperti WdfRequestMarkCancelableEx untuk menandai permintaan sebagai dapat dibatalkan.
Driver pengontrol serial tidak boleh menggunakan metode seperti WdfRequestRetrieveInputBuffer untuk mengakses buffer data dalam permintaan tulis. Sebagai gantinya, driver harus menggunakan nilai parameter Mdl, Offset, dan Length yang diteruskan ke fungsi EvtSerCx2CustomTransmitTransactionStart untuk mengakses buffer ini.
Selama transaksi pengiriman kustom, driver mungkin perlu menyimpan informasi tentang transaksi dalam konteks yang dilampirkan ke objek permintaan. Jika demikian, fungsi panggilan balik peristiwa EvtDriverDeviceAdd driver dapat memanggil metode WdfDeviceInitSetRequestAttributes untuk mengatur atribut yang akan digunakan untuk objek permintaan. Atribut ini mencakup nama dan ukuran alokasi yang akan digunakan untuk konteks permintaan. Atribut permintaan yang ditentukan dalam panggilan ini harus cocok dengan atribut permintaan yang ditentukan driver dalam panggilan ke metode SerCx2InitializeDevice . Atribut ini ditentukan dalam anggota RequestAttributes dari struktur SERCX2_CONFIG yang diteruskan driver ke SerCx2InitializeDevice. Untuk informasi selengkapnya, lihat SERCX2_CONFIG.
Untuk permintaan tulis yang diterima driver pengontrol serial pada awal transaksi pengiriman kustom, konteks permintaan yang dialokasikan oleh kerangka kerja driver tidak diinisialisasi. Driver tersebut harus, sebagai praktik terbaik, memanggil rutinitas RtlZeroMemory untuk menginisialisasi konteks permintaan ini ke semua nol.