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.
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 |