Bagikan melalui


EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY fungsi panggilan balik (wdfchildlist.h)

[Berlaku untuk KMDF saja]

Fungsi panggilan balik peristiwa EvtChildListAddressDescriptionCopy driver menyalin deskripsi alamat anak dari satu lokasi tertentu ke lokasi lain.

Sintaks

EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY EvtWdfChildListAddressDescriptionCopy;

void EvtWdfChildListAddressDescriptionCopy(
  [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

Tidak ada

Keterangan

Jika driver bus menggunakan enumerasi dinamis, driver dapat mendaftarkan fungsi panggilan balik EvtChildListAddressDescriptionCopy dengan memanggil WdfFdoInitSetDefaultChildListConfig atau WdfChildListCreate.

Kerangka kerja menyalin informasi dari satu deskripsi alamat yang disediakan driver ke yang lain ketika perlu memperbarui deskripsi yang ada dengan informasi baru, atau ketika perlu meneruskan konten deskripsi alamat ke driver.

Fungsi panggilan balik EvtChildListAddressDescriptionCopy harus menyalin konten deskripsi sumber ke deskripsi tujuan. Driver harus menyediakan fungsi panggilan balik ini jika perangkat turunannya memerlukan deskripsi alamat, dan jika kerangka kerja tidak dapat memanggil RtlCopyMemory untuk menyalin 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 EvtChildListAddressDescriptionCopy , kerangka kerja menyalin deskripsi alamat dengan memanggil RtlCopyMemory.

Langkah-langkah berikut menjelaskan skenario umum:

  1. Pengandar menentukan bahwa ada perangkat anak.
  2. 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.
  3. Driver memanggil WdfChildListAddOrUpdateChildDescriptionAsPresent untuk melaporkan perangkat anak, menyediakan penunjuk ke deskripsi alamat.
  4. Kerangka kerja menentukan bahwa driver sebelumnya telah melaporkan perangkat, sehingga kerangka kerja dapat memperbarui deskripsi alamat lama perangkat dengan informasi baru.
  5. Kerangka kerja memanggil fungsi panggilan balik EvtChildListAddressDescriptionCopy (jika ada) atau RtlCopyMemory untuk menyalin informasi deskripsi alamat baru ke deskripsi alamat yang ada.
Kerangka kerja dapat menggunakan RtlCopyMemory untuk menyalin deskripsi alamat, jika deskripsi terdiri dari satu struktur dengan ukuran yang telah ditentukan sebelumnya yang ditentukan oleh anggota AddressDescriptionSize dari struktur WDF_CHILD_ADDRESS_DESCRIPTION_HEADER . Namun, terkadang deskripsi juga harus berisi informasi tambahan yang disimpan dalam memori yang dialokasikan secara dinamis. Dalam hal ini, Anda biasanya akan menentukan struktur deskripsi sehingga anggota menunjuk ke memori yang dialokasikan secara dinamis, dan driver Anda harus menyediakan fungsi panggilan balik EvtChildListAddressDescriptionCopy . Fungsi panggilan balik harus melakukan hal berikut:
  1. Dalam struktur SourceAddressDescription dan DestinationAddressDescription fungsi panggilan balik, temukan penunjuk ke memori yang dialokasikan secara dinamis.
  2. Salin memori yang dialokasikan secara dinamis dari sumber ke tujuan, menggunakan pointer.
  3. Salin anggota struktur lain dari struktur SourceAddressDescription fungsi panggilan balik ke struktur DestinationAddressDescription fungsi panggilan balik.
Satu-satunya metode objek daftar anak kerangka kerja yang dapat dipanggil oleh fungsi panggilan balik EvtChildListAddressDescriptionCopy driver adalah WdfChildListGetDevice.

Kerangka kerja memperoleh kunci objek daftar anak internal sebelum memanggil fungsi panggilan balik EvtChildListAddressDescriptionCopy . Fungsi panggilan balik hanya boleh melakukan operasi yang terkait dengan operasi penyalinan 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 EvtChildListAddressDescriptionCopy , mungkin juga memerlukan fungsi panggilan balik EvtChildListAddressDescriptionDuplicate 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

EvtChildListAddressDescriptionDuplicate

RtlCopyMemory

WDF_CHILD_ADDRESS_DESCRIPTION_HEADER

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfChildListCreate

WdfChildListGetDevice

WdfFdoInitSetDefaultChildListConfig