Bagikan melalui


Fungsi WdfFdoRetrieveNextStaticChild (wdffdo.h)

[Hanya berlaku untuk KMDF]

Metode WdfFdoRetrieveNextStaticChild mengambil handel ke objek perangkat kerangka kerja berikutnya dalam daftar perangkat anak.

Sintaks

WDFDEVICE WdfFdoRetrieveNextStaticChild(
  [in]           WDFDEVICE Fdo,
  [in, optional] WDFDEVICE PreviousChild,
  [in]           ULONG     Flags
);

Parameter

[in] Fdo

Handel ke objek perangkat kerangka kerja yang mewakili perangkat induk.

[in, optional] PreviousChild

Handel ke objek perangkat kerangka kerja yang mewakili perangkat anak yang dikembalikan oleh panggilan sebelumnya ke WdfFdoRetrieveNextStaticChild. Untuk panggilan pertama ke WdfFdoRetrieveNextStaticChild, nilai ini harus NULL.

[in] Flags

Nilai enumerator jenis WDF_RETRIEVE_CHILD_FLAGS yang mengidentifikasi jenis perangkat anak yang harus diambil metode. Parameter ini tidak boleh nol.

Nilai kembali

Jika operasi berhasil, metode mengembalikan handel ke objek perangkat kerangka kerja. Jika tidak, ia mengembalikan NULL.

Pemeriksaan bug sistem terjadi jika driver memasok handel objek yang tidak valid.

Keterangan

Pengemudi bus yang menggunakan enumerasi bus statis dapat memanggil WdfFdoRetrieveNextStaticChild.

Untuk mengambil item dalam daftar perangkat anak, driver harus:

  1. Panggil WdfFdoLockStaticChildListForIteration untuk mengunci daftar anak.
  2. Berulang kali panggil WdfFdoRetrieveNextStaticChild untuk mendapatkan item dalam daftar, satu per satu, hingga metode mengembalikan NULL.
  3. Panggil WdfFdoUnlockStaticChildListFromIteration untuk membuka kunci daftar anak.
Untuk informasi selengkapnya tentang daftar turunan statis, lihat Menghitung Perangkat di Bus.

Contoh

Contoh kode berikut mencari daftar anak statis hingga menemukan perangkat anak dengan nomor seri yang cocok dengan nilai tertentu. Untuk contoh lain penggunaan WdfFdoRetrieveNextStaticChild, lihat contoh driver bus Toaster .

PPDO_DEVICE_DATA  pdoData;
WDFDEVICE  hChild;
NTSTATUS  status = STATUS_INVALID_PARAMETER;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device,
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context data and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
        break;
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdffdo.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Lihat juga

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration