PVIDEO_HW_FIND_ADAPTER fungsi panggilan balik (video.h)
HwVidFindAdapter melakukan inisialisasi data khusus untuk driver miniport dan perangkat yang didukung oleh driver miniport.
Sintaks
PVIDEO_HW_FIND_ADAPTER PvideoHwFindAdapter;
VP_STATUS PvideoHwFindAdapter(
PVOID HwDeviceExtension,
PVOID HwContext,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again
)
{...}
Parameter
HwDeviceExtension
Arahkan ke area penyimpanan per perangkat driver. Untuk informasi selengkapnya, lihat Ekstensi Perangkat.
HwContext
Adalah NULL dan harus diabaikan oleh driver miniport.
ArgumentString
Penunjuk ke string ASCII yang dihentikan null yang berasal dari pengguna. Penunjuk ini bisa NULL.
ConfigInfo
Penunjuk ke struktur VIDEO_PORT_CONFIG_INFO . Driver port video mengalokasikan memori untuk dan menginisialisasi struktur ini dengan informasi konfigurasi apa pun yang diketahui, seperti nomor bus IO sistem dan nilai yang ditetapkan driver miniport dalam struktur VIDEO_HW_INITIALIZATION_DATA .
Again
Harus diabaikan oleh driver miniport.
Nilai kembali
HwVidFindAdapter harus mengembalikan salah satu kode status berikut:
Menampilkan kode | Deskripsi |
---|---|
ERROR_DEV_NOT_EXIST | Menunjukkan, untuk bus yang dapat di-reenumerable, bahwa driver miniport tidak dapat menemukan perangkat. |
ERROR_INVALID_PARAMETER | Menunjukkan driver miniport tidak berhasil mengonfigurasi atau menginisialisasi adapter. |
NO_ERROR | Menunjukkan keberhasilan. |
Keterangan
Setiap driver miniport video harus memiliki fungsi HwVidFindAdapter .
Driver port video melakukan hal berikut sebelum memanggil HwVidFindAdapter:
- Mengalokasikan penyimpanan untuk area penyimpanan per adaptor driver miniport sesuai dengan nilai HwDeviceExtensionSize bahwa fungsi DriverEntry driver miniport yang ditentukan dalam struktur VIDEO_HW_INITIALIZATION_DATA , dan nol menginisialisasi penyimpanan yang dialokasikan.
- Mengalokasikan penyimpanan untuk struktur VIDEO_PORT_CONFIG_INFO dan mengisi semua informasi yang tersedia berdasarkan informasi yang disediakan pengemudi miniport dalam VIDEO_HW_INITIALIZATION_DATA.
Fungsi HwVidFindAdapter untuk perangkat pada bus enumerable harus melakukan hal berikut:
- Periksa ukuran struktur VIDEO_PORT_CONFIG_INFO yang menunjuk ConfigInfo untuk memastikan penerapan versi yang tepat.
- Panggil VideoPortGetAccessRanges untuk mendapatkan alamat fisik relatif bus tempat perangkat akan merespons. Alamat ini ditetapkan oleh manajer PnP. Driver miniport harus melewati NULL di parameter VendorId, DeviceId, dan SlotVideoPortGetAccessRanges.
- Untuk driver miniport yang mendukung beberapa jenis perangkat, tentukan jenis perangkat yang telah terdeteksi oleh manajer PnP. Driver miniport dapat memanggil VideoPortGetBusData untuk mendapatkan informasi konfigurasi PCI.
- Isi informasi konfigurasi yang relevan tetapi hilang di anggota struktur VIDEO_PORT_CONFIG_INFO yang sesuai dengan data khusus adaptor.
HwVidFindAdapter dapat mengalokasikan sumber daya, seperti memori dan kunci, untuk digunakan oleh driver miniport. Sumber daya tersebut dapat spesifik untuk perangkat atau dapat dibagikan oleh beberapa perangkat yang didukung driver miniport. Jika HwVidFindAdapter mengembalikan nilai apa pun selain NO_ERROR, HwVidFindAdapter harus membebaskan semua sumber daya khusus perangkat sebelum kembali. Untuk sumber daya yang dibagikan di antara beberapa perangkat, HwVidFindAdapter harus menyimpan jumlah referensi. Misalnya, jumlah referensi dapat menunjukkan jumlah panggilan sebelumnya ke HwVidFindAdapter yang berhasil. Dengan begitu, jika HwVidFindAdapter harus gagal, dan menentukan bahwa semua panggilan sebelumnya ke HwVidFindAdapter telah gagal, itu dapat membebaskan sumber daya bersama.
Jika HwVidFindAdapter gagal setiap kali dipanggil oleh driver port video, sistem operasi mungkin membongkar driver miniport nanti. Dalam kasus seperti itu, sumber daya apa pun yang dialokasikan HwVidFindAdapter tetapi tidak gratis akan bocor.
Untuk perangkat pada bus yang dapat dihidupkan kembali seperti ISA, PnP masih mencoba memulai perangkat, meskipun HwVidFindAdapter bertanggung jawab untuk menentukan apakah perangkat benar-benar ada. Jika perangkat tidak ditemukan, HwVidFindAdapter harus mengembalikan ERROR_DEV_NOT_EXIST.
HwVidFindAdapter juga harus memanggil VideoPortSetRegistryParameters untuk menyimpan informasi khusus adaptor di kunci HardwareInformation . Informasi ini digunakan oleh program Tampilan dalam Panel Kontrol. Lihat Mengatur Informasi Perangkat Keras di Registri untuk detailnya.
Bergantung pada adaptor dan nilai AdapterInterfaceType dalam VIDEO_PORT_CONFIG_INFO, HwVidFindAdapter dapat memanggil beberapa fungsi VideoPortXxx berikut untuk mendapatkan data konfigurasi relatif bus yang diperlukan dan rentang akses yang dipetakan untuk berkomunikasi dengan adaptor:
-
VideoPortGetBusData untuk mendapatkan informasi konfigurasi khusus jenis bus tentang adaptor pada bus I/O tertentu.
-
VideoPortGetDeviceData untuk mendapatkan informasi khusus VIDEO_DEVICE_DATA_TYPE dari registri dan memanggil HwVidQueryDeviceCallback untuk memproses informasi ini.
-
VideoPortGetRegistryParameters untuk mendapatkan informasi konfigurasi dari registri.
-
VideoPortGetAccessRanges untuk mendapatkan alamat rentang akses relatif bus dan mungkin nilai konfigurasi perangkat keras lainnya, dan untuk mengklaimnya di registri untuk digunakan oleh driver adaptor.
-
VideoPortVerifyAccessRanges untuk menentukan apakah memori video relatif bus dan/atau port I/O untuk adaptor dapat diklaim oleh driver miniport; jika tidak, driver yang dimuat sebelumnya telah mengklaim sumber daya dalam registri dan HwVidFindAdapter harus mencoba mengklaim rentang akses lain jika memungkinkan atau gagal.
-
VideoPortGetDeviceBase untuk memetakan setiap alamat dasar dan ukuran rentang relatif bus yang berhasil diklaim, seperti yang dijelaskan dalam struktur VIDEO_ACCESS_RANGE , ke alamat logis ruang sistem . HwVidFindAdapter harus berhasil memanggil VideoPortVerifyAccessRanges atau VideoPortGetAccessRanges sebelum dapat memanggil VideoPortGetDeviceBase.
HwVidFindAdapter tidak boleh meninggalkan adaptor yang tidak didukung dengan statusnya berubah. Untuk adaptor VGA/SVGA, HwVidFindAdapter harus meninggalkan adaptor dalam status VGA dan memulihkan register yang diperluas yang mungkin telah dimodifikasi ke kondisi aslinya.
HwVidFindAdapter harus dibuat dapat di-pageable.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | video.h (sertakan Video.h) |
Lihat juga
DriverEntry dari Driver Miniport Video