Fungsi WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)
[Berlaku untuk KMDF saja]
Metode WdfDmaEnablerWdmGetDmaAdapter mengembalikan penunjuk ke struktur DMA_ADAPTER WDM yang terkait dengan objek pengaktif DMA.
Sintaks
PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
[in] WDFDMAENABLER DmaEnabler,
[in] WDF_DMA_DIRECTION DmaDirection
);
Parameter
[in] DmaEnabler
Handel ke objek pengaktif DMA yang diperoleh driver dari panggilan sebelumnya ke WdfDmaEnablerCreate.
[in] DmaDirection
Nilai jenis WDF_DMA_DIRECTION yang menentukan arah operasi transfer DMA. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
Nilai kembali
WdfDmaEnablerWdmGetDmaAdapter mengembalikan penunjuk ke struktur DMA_ADAPTER , atau NULL jika nilai parameter DmaDirection tidak valid.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Ketika driver Anda memanggil WdfDmaEnablerCreate, kerangka kerja membuat objek adaptor terpisah untuk setiap arah jika driver menentukan profil dupleks, dan membuat objek adaptor tunggal jika driver tidak menentukan profil dupleks.
Jika driver Anda menentukan profil dupleks saat disebut WdfDmaEnablerCreate, nilai parameter DmaDirection metode WdfDmaEnablerWdmGetDmaAdapter harus WdfDmaDirectionReadFromDevice untuk mendapatkan struktur DMA_ADAPTER untuk operasi baca dan WdfDmaDirectionWriteToDevice untuk mendapatkan struktur DMA_ADAPTER untuk operasi tulis. Jika driver Anda tidak menentukan profil dupleks, driver dapat menentukan WdfDmaDirectionReadFromDevice atau WdfDmaDirectionWriteToDevice.
Penunjuk yang dikembalikan WdfDmaEnablerWdmGetDmaAdapter valid hingga objek pengaktif DMA dihapus. Jika driver menyediakan fungsi EvtCleanupCallback untuk objek pengaktif DMA, penunjuk valid hingga fungsi panggilan balik kembali.
Contoh
Contoh kode berikut membuat objek pengaktif DMA lalu mendapatkan penunjuk ke struktur DMA_ADAPTER WDM yang dibuat kerangka kerja untuk operasi baca dan tulis.
NTSTATUS status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG dmaConfig;
WDFDMAENABLER dmaEnabler;
PDMA_ADAPTER readAdapter, writeAdapter;
WDF_DMA_ENABLER_CONFIG_INIT(
&dmaConfig,
WdfDmaProfileScatterGatherDuplex,
maxLength
);
status = WdfDmaEnablerCreate(
Device,
&dmaConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&dmaEnabler
);
if (!NT_SUCCESS (status)) {
return status;
}
readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
dmaEnabler,
WdfDmaDirectionReadFromDevice
);
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
dmaEnabler,
WdfDmaDirectionWriteToDevice
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,5 |
Header | wdfdmaenabler.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.) |
IRQL | <=DISPATCH_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