Fungsi WdfDmaEnablerCreate (wdfdmaenabler.h)
[Hanya berlaku untuk KMDF]
Metode WdfDmaEnablerCreate membuat objek pengaktif DMA.
Sintaks
NTSTATUS WdfDmaEnablerCreate(
[in] WDFDEVICE Device,
[in] PWDF_DMA_ENABLER_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFDMAENABLER *DmaEnablerHandle
);
Parameter
[in] Device
Handel ke objek perangkat kerangka kerja.
[in] Config
Penunjuk ke struktur WDF_DMA_ENABLER_CONFIG . Driver harus menginisialisasi struktur ini dengan memanggil WDF_DMA_ENABLER_CONFIG_INIT.
[in, optional] Attributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang menentukan atribut objek untuk objek pengaktif DMA baru. Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.
[out] DmaEnablerHandle
Handel ke objek pengaktif DMA baru.
Nilai kembali
WdfDmaEnablerCreate mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Parameter yang tidak valid terdeteksi. |
|
Memori tidak cukup untuk membuat objek pengaktif DMA baru. |
|
Ukuran struktur WDF_DMA_ENABLER_CONFIG salah. |
|
Driver meminta DMA versi 3 pada sistem operasi yang lebih lama dari Windows 8. |
Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfDmaEnablerCreate , lihat Kesalahan Pembuatan Objek Kerangka Kerja.
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Driver berbasis kerangka kerja harus memanggil WdfDmaEnablerCreate sebelum membuat transaksi DMA untuk perangkat.
Sebelum driver memanggil WdfDmaEnablerCreate, driver harus memanggil WdfDeviceSetAlignmentRequirement.
Objek perangkat kerangka kerja yang ditentukan parameter PerangkatWdfDmaEnablerCreate selalu menjadi objek induk untuk objek pengaktif DMA baru. Jika driver menentukan induk yang berbeda di anggota ParentObject dari struktur WDF_OBJECT_ATTRIBUTES , kerangka kerja mengabaikan nilai ini. Kerangka kerja menghapus objek pengaktif DMA saat menghapus objek induk.
Ketika dipanggil dengan parameter Konfigurasi yang meminta profil DMA mode sistem, WdfDmaEnablerCreate membuat pengaktif DMA yang diinisialisasi sebagian. Driver kemudian harus memanggil WdfDmaEnablerConfigureSystemProfile untuk menyiapkan pengaturan DMA untuk saluran yang mendasar.
Untuk informasi selengkapnya tentang objek pengaktif DMA dan WdfDmaEnablerCreate, lihat Mengaktifkan Transaksi DMA.
Contoh
Contoh kode berikut berasal dari driver sampel PLX9x5x . Contoh ini menetapkan persyaratan perangkat untuk perataan buffer, menginisialisasi struktur WDF_DMA_ENABLER_CONFIG, dan memanggil WdfDmaEnablerCreate.
//
// PLx PCI9656 DMA_TRANSFER_ELEMENTS must be 16-byte aligned.
//
WdfDeviceSetAlignmentRequirement(
DevExt->WdfDevice,
PCI9656_DTE_ALIGNMENT_16
);
//
// Create a new DMA enabler object instance.
// Use scatter/gather, 64-bit addresses, and duplex-type profile.
//
{
WDF_DMA_ENABLER_CONFIG dmaConfig;
WDF_DMA_ENABLER_CONFIG_INIT(
&dmaConfig,
WdfDmaProfileScatterGather64Duplex,
DevExt->MaximumTransferLength
);
status = WdfDmaEnablerCreate(
DevExt->WdfDevice,
&dmaConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&DevExt->DmaEnabler
);
if (!NT_SUCCESS (status)) {
// Cannot continue, so release device resources.
return status;
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Header | wdfdmaenabler.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.) |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk