Fungsi VideoPortGetDeviceBase (video.h)

Fungsi VideoPortGetDeviceBase memetakan berbagai memori perangkat relatif bus atau alamat I/O ke dalam ruang sistem.

Sintaks

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

Parameter

HwDeviceExtension

Arahkan ke ekstensi perangkat driver miniport.

IoAddress

Alamat fisik dasar rentang yang akan dipetakan. Anda mendapatkan nilai relatif bus ini dengan memanggil VideoPortGetDeviceData, VideoPortGetRegistryParameters, atau VideoPortGetAccessRanges. Jika tidak, nilai ini adalah alamat dasar default yang disediakan driver untuk memori perangkat atau port I/O.

Anda harus berhasil mengklaim rentang yang dijelaskan oleh IoAddress dan NumberOfUchars di registri melalui panggilan sebelumnya ke VideoPortVerifyAccessRanges atau VideoPortGetAccessRanges.

NumberOfUchars

Jumlah byte, mulai dari IoAddress, untuk memetakan.

InIoSpace

Lokasi rentang IoAddress . Parameter ini bisa menjadi salah satu bendera berikut atau ORed, kombinasi bendera ini yang kompatibel.

Bendera Makna
VIDEO_MEMORY_SPACE_DENSE Kedaluwarsa.
VIDEO_MEMORY_SPACE_IO Rentang alamat berada di ruang I/O, bukan di ruang memori.
VIDEO_MEMORY_SPACE_MEMORY Rentang alamat berada di ruang memori, bukan di ruang I/O.
VIDEO_MEMORY_SPACE_P6CACHE Prosesor menggabungkan urutan operasi tulis, mengirimkannya ke baris cache, dan kemudian menghapus cache. Bendera ini bermakna hanya ketika VIDEO_MEMORY_SPACE_IO tidak diatur. Menunjuk memori video sebagai write-combined (WC). Untuk informasi tentang penembolokan WC, lihat artikel situs web Write-Combining Memory in Video Miniport Drivers .

Mengembalikan nilai

Jika berhasil, VideoPortGetDeviceBase mengembalikan alamat virtual dasar pemetaan. Jika rentang relatif bus yang ditentukan tidak dapat dipetakan, VideoPortGetDeviceBase mengembalikan NULL.

Keterangan

Anda dapat meneruskan alamat virtual yang dipetakan ke fungsi VideoPortReadXxx, VideoPortWriteXxx, dan VideoPortXxxMemory , kecuali untuk Fungsi VideoPortMapMemory dan VideoPortUnmapMemory.

Anda harus memanggil VideoPortGetDeviceBase dari fungsi HwVidFindAdapter driver miniport, HwVidQueryDeviceCallback, atau HwVidQueryNamedValueCallback .

Sebelum HwVidFindAdapter mengembalikan kontrol, Anda harus menyimpan alamat dasar yang dipetakan yang dikembalikan oleh VideoPortGetDeviceBase dan panjang rentang akses yang dipetakan dalam ekstensi perangkat adaptor (ditujukkan oleh HwDeviceExtension) untuk digunakan nanti.

Akses ke ruang alamat yang dipetakan harus mengikuti aturan ini:

  • Jika InIoSpace VIDEO_MEMORY_SPACE_IO, yang menunjukkan bahwa alamat berada di ruang I/O, alamat virtual yang dikembalikan fungsi ini harus diteruskan ke fungsi VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx, dan VideoPortWritePortBufferXxx , di mana Xxx adalah Uchar, Ushort, atau Ulong.
  • Jika InIoSpace VIDEO_MEMORY_SPACE_MEMORY, yang menunjukkan bahwa alamat tidak berada di ruang I/O tetapi di ruang memori, alamat virtual yang dikembalikan fungsi ini harus diteruskan ke fungsi VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxx, dan VideoPortWriteRegisterBufferXxx , di mana Xxx adalah Uchar, Ushort, atau Ulong.
  • Driver tidak boleh mengakses alamat yang berada di luar rentang yang dibatasi oleh NumberOfUchars.
VideoPortGetDeviceBase dan VideoPortMapMemory keduanya dapat dipanggil oleh driver miniport video untuk memetakan memori video ke ruang alamat virtual. Jika Anda memanggil kedua fungsi ini untuk memetakan alamat fisik yang sama, atau jika Anda memanggil salah satu fungsi lebih dari sekali untuk memetakan alamat fisik yang sama, Anda mungkin memiliki lebih dari satu rentang alamat virtual yang memetakan ke rentang alamat fisik yang sama. Dalam hal ini, Anda harus mengatur bendera VIDEO_MEMORY_SPACE_P6CACHE parameter InIoSpace ke nilai yang sama di semua panggilan tersebut.

Setiap perangkat tampilan arsitektur memori universal (UMA) menggunakan buffer bingkai yang terletak di memori utama daripada di bus PCI. Dalam hal ini, jangan panggil VideoPortMapMemory untuk memetakan buffer bingkai. Untuk memetakan buffer bingkai UMA ke ruang sistem, panggil MmMapIoSpace.

Jika driver miniport tidak mendukung adaptor yang telah dipetakan rentang logisnya, driver miniport harus melakukan dua langkah sebelum mengembalikan kontrol ke fungsi DriverEntry : panggil VideoPortFreeDeviceBase untuk membatalkan pemetaan rentang yang sebelumnya dipetakan dari ruang sistem, dan memanggil VideoPortGetAccessRanges atau VideoPortVerifyAccessRanges untuk merilis klaimnya pada rentang dalam registri.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 2000 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 PASSIVE_LEVEL

Lihat juga

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory