EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE fungsi panggilan balik (wdfchildlist.h)
[Berlaku untuk KMDF saja]
Fungsi panggilan balik peristiwa EvtChildListAddressDescriptionDuplicate driver menduplikasi deskripsi alamat anak.
Sintaks
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE EvtWdfChildListAddressDescriptionDuplicate;
NTSTATUS EvtWdfChildListAddressDescriptionDuplicate(
[in] WDFCHILDLIST ChildList,
[in] PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER SourceAddressDescription,
[out] PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER DestinationAddressDescription
)
{...}
Parameter
[in] ChildList
Handel ke objek daftar turunan kerangka kerja.
[in] SourceAddressDescription
Penunjuk ke struktur WDF_CHILD_ADDRESS_DESCRIPTION_HEADER yang mengidentifikasi lokasi sumber deskripsi alamat anak.
[out] DestinationAddressDescription
Penunjuk ke struktur WDF_CHILD_ADDRESS_DESCRIPTION_HEADER yang mengidentifikasi lokasi tujuan deskripsi alamat anak.
Nilai kembali
Fungsi panggilan balik EvtChildListAddressDescriptionDuplicate harus mengembalikan STATUS_SUCCESS, atau nilai status lain yang NT_SUCCESS(statusnya) sama dengan TRUE, jika operasi berhasil. Jika tidak, fungsi ini harus mengembalikan nilai status yang NT_SUCCESS(status) sama dengan FALSE.
Keterangan
Jika driver bus menggunakan enumerasi dinamis, driver dapat mendaftarkan fungsi panggilan balik EvtChildListAddressDescriptionDuplicate dengan memanggil WdfFdoInitSetDefaultChildListConfig atau WdfChildListCreate.
Kerangka kerja ini menduplikasi deskripsi alamat yang disediakan driver sehingga dapat memiliki salinan internal deskripsi.
Fungsi panggilan balik EvtChildListAddressDescriptionDuplicate harus membuat salinan duplikat deskripsi alamat. Driver harus menyediakan fungsi panggilan balik ini jika perangkat turunannya memerlukan deskripsi alamat, dan jika kerangka kerja tidak dapat memanggil RtlCopyMemory untuk menduplikasi deskripsi alamat. (Kerangka kerja tidak dapat memanggil RtlCopyMemory jika deskripsi berisi pointer ke memori tambahan.)
Jika driver Anda memberikan deskripsi alamat tetapi tidak menyediakan fungsi panggilan balik EvtChildListAddressDescriptionDuplicate , kerangka kerja menduplikasi deskripsi alamat dengan memanggil RtlCopyMemory.
Langkah-langkah berikut menjelaskan skenario umum:
- Pengandar menentukan bahwa ada perangkat anak.
- Driver membuat deskripsi alamat dengan mengisi struktur yang ditentukan driver yang berisi struktur WDF_CHILD_ADDRESS_DESCRIPTION_HEADER dan mungkin dengan mengalokasikan memori tambahan secara dinamis untuk menyimpan informasi alamat yang memiliki ukuran khusus perangkat.
- Driver memanggil WdfChildListAddOrUpdateChildDescriptionAsPresent untuk melaporkan perangkat anak, menyediakan penunjuk ke deskripsi alamat.
- Kerangka kerja memanggil fungsi panggilan balik EvtChildListAddressDescriptionDuplicate (jika ada) atau RtlCopyMemory untuk menduplikasi deskripsi alamat sehingga dapat memiliki salinan internal deskripsi.
- Alokasikan memori tambahan, biasanya dengan memanggil ExAllocatePool.
- Simpan alamat memori yang dialokasikan dalam struktur deskripsi alamat yang ditentukan driver (yaitu, struktur DestinationAddressDescription fungsi panggilan balik).
- Salin anggota struktur lain dari struktur SourceAddressDescription fungsi panggilan balik ke struktur DestinationAddressDescription fungsi panggilan balik.
Kerangka kerja memperoleh kunci objek daftar turunan internal sebelum memanggil fungsi panggilan balik EvtChildListAddressDescriptionDuplicate . Fungsi panggilan balik hanya boleh melakukan operasi yang terkait dengan operasi duplikasi yang dijelaskan, seperti memanggil metode objek memori kerangka kerja dan mengakses ruang konteks objek. Ini tidak boleh memanggil metode yang mengakses driver lain.
Jika driver Anda menyediakan fungsi panggilan balik EvtChildListAddressDescriptionDuplicate , mungkin juga memerlukan fungsi panggilan balik EvtChildListAddressDescriptionCopy dan EvtChildListAddressDescriptionCleanup .
Untuk informasi selengkapnya tentang enumerasi dinamis, lihat Menghitung Perangkat di Bus.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Header | wdfchildlist.h (termasuk Wdf.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
EvtChildListAddressDescriptionCleanup
WDF_CHILD_ADDRESS_DESCRIPTION_HEADER
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk