Bagikan melalui


Fungsi VideoPortSetTrappedEmulatorPorts (video.h)

Driver miniport yang kompatibel dengan VGA (SVGA) memanggil fungsi VideoPortSetTrappedEmulatorPorts untuk secara dinamis mengubah daftar port I/O yang terperangkap saat VDM (monitor tampilan video) berjalan dalam mode layar penuh pada mesin berbasis x86.

Sintaks

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortSetTrappedEmulatorPorts(
       PVOID               HwDeviceExtension,
       ULONG               NumAccessRanges,
  [in] PVIDEO_ACCESS_RANGE AccessRange
);

Parameter

HwDeviceExtension

Arahkan ke ekstensi perangkat driver miniport.

NumAccessRanges

Menentukan jumlah elemen dalam array AccessRange .

[in] AccessRange

Arahkan ke array elemen VIDEO_ACCESS_RANGE . Setiap elemen menjelaskan subrange emulatorAccessEntries yang tepat yang disiapkan driver miniport di VIDEO_PORT_CONFIG_INFO. Mengatur rangeVisible anggota elemen AccessRange ke TRUE memungkinkan akses langsung ke rentang port I/O oleh aplikasi MS-DOS layar penuh. Mengatur anggota RangeVisible ke FALSE menyebabkan INs yang dikeluarkan aplikasi, INSB/INSW/INSDs, OUTs dan/atau OUTSB/OUTSW/OUTSDke rentang tersebut terperangkap dan diteruskan ke fungsi driver miniport SvgaHwIoPortXxx yang sesuai untuk validasi.

Array AccessRange yang diteruskan ke VideoPortSetTrappedEmulatorPorts harus merupakan subset rentang port I/O yang tepat yang disiapkan fungsi HwVidFindAdapter dalam array EmulatorAccessEntries dari struktur VIDEO_PORT_CONFIG_INFO . Rentang port I/O apa pun dalam array rentang akses yang tidak disertakan dalam array EmulatorAccessEntries terperangkap dan tercermin ke VDD mode pengguna.

Nilai kembali

VideoPortSetTrappedEmulatorPorts mengembalikan NO_ERROR jika berhasil mengubah port yang terperangkap. Jika tidak, ia mengembalikan ERROR_INVALID_PARAMETER.

Keterangan

Secara default, AccessRange port I/O yang dapat diakses aplikasi MS-DOS layar penuh secara langsung tidak menyertakan elemen array rentang akses yang menjelaskan rentang port I/O yang juga memiliki elemen yang sesuai dalam array EmulatorAccessEntries dari struktur VIDEO_PORT_CONFIG_INFO . Artinya, rentang port I/O dengan entri akses emulator yang sesuai adalah, secara default, dikaitkan dengan fungsi SvgaHwIoPortXxx driver miniport sehingga instruksi yang dikeluarkan aplikasi diteruskan ke fungsi SvgaHwIoPortXxx untuk validasi.

Driver miniport SVGA yang kompatibel dengan VGA dapat mengaktifkan dan menonaktifkan rentang port I/O sesuai kebutuhan dengan panggilan ke VideoPortSetTrappedEmulatorPorts. Rentang port yang diaktifkan memungkinkan aplikasi MS-DOS layar penuh untuk mengakses port I/O tersebut secara langsung, tanpa memiliki instruksi rakitan yang dikeluarkan aplikasi yang terperangkap dan diteruskan ke fungsi SvgaHwIoPortXxx driver miniport untuk validasi terlebih dahulu. Akses port I/O langsung untuk aplikasi seperti itu memberi pengguna waktu respons I/O video yang lebih cepat.

VideoPortSetTrappedEmulatorPorts memindai array parameter AccessRange dari elemen pertama hingga yang terakhir, mengaktifkan dan menonaktifkan port I/O seperti yang diarahkan di setiap elemen. Perhatikan bahwa rentang port yang diaktifkan (anggota RangeVisible yang diatur ke TRUE) dapat dinonaktifkan lagi dalam panggilan yang sama jika driver miniport menyertakan deskripsi duplikat dari rentang yang sama dengan anggota RangeVisible yang diatur ke FALSE. Perhatikan juga bahwa driver miniport dapat mengaktifkan berbagai port I/O dalam elemen awal array AccessRange dan secara selektif menonaktifkan subranges port dalam elemen array berikutnya saat memanggil VideoPortSetTrappedEmulatorPorts.

Semua aplikasi MS-DOS layar penuh menggunakan IOPM (peta izin I/O) yang sama di komputer berbasis x86 dan, oleh karena itu, set port I/O yang diaktifkan atau dinonaktifkan yang sama. Pada setiap sakelar ke aplikasi layar penuh seperti itu, fungsi HwVidStartIO driver miniport yang kompatibel dengan VGA dipanggil dengan IOCTL_VIDEO_ENABLE_VDM VRP. Driver miniport kemudian harus menginisialisasi ulang sekumpulan port I/O default yang dapat diakses langsung, yang dapat menyertakan port apa pun dalam array EmulatorAccessEntries .

Saat memberikan aplikasi MS-DOS layar penuh pada komputer berbasis x86 akses langsung ke port video membuat operasi video yang dimulai aplikasi lebih cepat, setiap driver miniport SVGA yang kompatibel dengan VGA harus terus menjebak subset port I/O penting untuk mencegah aplikasi tersebut menggantung mesin. Secara khusus, driver miniport tersebut harus selalu menjebak I/O aplikasi ke pengurut adaptor yang kompatibel dengan VGA dan register output lain-lain. Driver miniport seperti itu juga harus menjebak dan memvalidasi I/O langsung yang dikeluarkan aplikasi yang dapat menyebabkan mesin macet untuk subset tambahan yang bergantung pada adaptor port I/O.

Memanggil VideoPortSetTrappedEmulatorPorts lagi dan mengatur ulang anggota RangeVisible dari elemen AccessRange ke FALSE menyebabkan instruksi yang dikeluarkan aplikasi untuk rentang tersebut diteruskan ke fungsi driver miniport SvgaHwIoPortXxx yang sesuai.

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

EMULATOR_ACCESS_ENTRY

HwVidFindAdapter

HwVidStartIO

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortSynchronizeExecution