Bagikan melalui


Gunakan Kembali Objek Transaksi DMA

[Berlaku untuk KMDF saja]

Setelah driver memproses semua transfer DMA yang terkait dengan transaksi DMA, driver dapat menghapus atau menggunakan kembali objek transaksi. Biasanya, fungsi panggilan balik EvtInterruptDpc driver menghapus objek transaksi (dengan memanggil WdfObjectDelete). Selanjutnya, ketika driver membuat transaksi DMA baru, ia memanggil WdfDmaTransactionCreate untuk membuat objek transaksi baru.

Namun, terkadang bermanfaat bagi driver untuk menggunakan kembali objek transaksi. Dalam kasus seperti itu, driver memanggil WdfDmaTransactionRelease alih-alih WdfObjectDelete.

Misalnya, driver dan perangkat Anda harus beroperasi ketika sumber daya memori komputer rendah. Untuk menangani masalah memori ini, driver Anda dapat menggunakan prosedur berikut:

  1. Fungsi panggilan balik EvtDriverDeviceAdd driver dapat memanggil WdfDmaTransactionCreate untuk membuat satu atau beberapa objek transaksi. Driver menyimpan handel ke objek transaksi ini.

  2. Setiap kali driver siap untuk membuat dan menginisialisasi transaksi baru, driver memanggil WdfDmaTransactionCreate. Jika metode ini mengembalikan STATUS_INSUFFICIENT_RESOURCES, driver dapat menggunakan salah satu objek transaksi yang disimpan.

  3. Jika driver menggunakan salah satu objek transaksi yang disimpan, driver harus menggunakan kembali objek transaksi, alih-alih menghapusnya, ketika transaksi selesai. Driver mengatur objek transaksi untuk digunakan kembali dengan memanggil WdfDmaTransactionRelease alih-alih WdfObjectDelete.

Sampel PLX9x5x menggunakan kembali objek transaksi DMA.