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

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate