Bagikan melalui


Fungsi VideoPortStartDma (video.h)

Fungsi VideoPortStartDma menyiapkan sistem untuk operasi DMA. Segera setelah sumber daya yang sesuai tersedia, VideoPortStartDma membuat daftar sebar/kumpulkan, menginisialisasi sumber daya sistem, dan memanggil rutinitas HwVidExecuteDma yang disediakan driver miniport video untuk melakukan operasi DMA.

Sintaks

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

Parameter

[in] HwDeviceExtension

Arahkan ke ekstensi perangkat driver miniport.

[in] VpDmaAdapter

Penunjuk ke struktur VP_DMA_ADAPTER yang mewakili adaptor bus-master. Struktur ini dikembalikan dari panggilan ke VideoPortGetDmaAdapter.

[in] Mdl

Penunjuk ke MDL yang menjelaskan buffer. Penunjuk ini dikembalikan dari panggilan ke fungsi VideoPortLockBuffer driver port video.

[in] Offset

Menentukan offset byte dalam buffer tempat operasi DMA dimulai. Parameter Mdl menjelaskan buffer ini.

[in, out] pLength

Penunjuk ke variabel yang menentukan ukuran transfer yang diminta, dalam byte, dan yang akan menerima ukuran aktual yang akan ditransfer. Variabel akan diperbarui ketika salah satu peristiwa berikut terjadi: Pengembalian VideoPortStartDma atau HwVidExecuteDma dipanggil. Oleh karena itu, aman untuk membaca variabel ini dari dalam HwVidExecuteDma bahkan sebelum VideoPortStartDma kembali.

[in] ExecuteDmaRoutine

Penunjuk ke rutinitas panggilan balik HwVidExecuteDma yang disediakan driver miniport. VideoPortStartDma memanggil rutinitas ini untuk memprogram pendaftaran perangkat keras dan memulai operasi DMA yang sebenarnya.

[in] Context

Arahkan ke konteks yang ditentukan driver untuk diteruskan ke rutinitas panggilan balik HwVidExecuteDma driver miniport. Karena rutinitas panggilan balik HwVidExecuteDma berjalan pada DISPATCH_LEVEL, data yang dituju konteks harus berada dalam memori yang tidak dipagasi.

[in] WriteToDevice

Menentukan arah transfer DMA. Nilai TRUE menunjukkan transfer dari buffer ke perangkat, dan nilai FALSE menunjukkan transfer dari perangkat ke buffer.

Nilai kembali

VideoPortStartDma mengembalikan salah satu kode status berikut:

Menampilkan kode Deskripsi
NO_ERROR Operasi berhasil dilakukan.
ERROR_NOT_ENOUGH_MEMORY Tidak cukup sumber daya sistem untuk operasi ini.

Keterangan

Untuk mempersiapkan operasi transfer DMA, VideoPortStartDma:

  • Menghapus wilayah memori di cache prosesor host.
  • Menyusun daftar sebar/kumpulkan.
  • Memanggil panggilan balik HwVidExecuteDma driver miniport video.
Ada kemungkinan bahwa tidak semua data yang diminta telah ditransfer, karena jumlah memori aktual yang ditransfer dibatasi oleh jumlah register peta yang tersedia untuk driver. Pemanggil fungsi ini harus memeriksa ukuran transfer aktual yang dikembalikan di pLength untuk menentukan apakah data tambahan tetap akan ditransfer. Jika demikian, driver miniport harus memanggil VideoPortStartDma (dan selanjutnya, VideoPortCompleteDma) sebanyak yang diperlukan untuk memenuhi seluruh permintaan transfer.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows XP dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Desktop
Header video.h (sertakan Video.h)
Pustaka Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Lihat juga

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter