Fungsi WdfIoTargetClose (wdfiotarget.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfIoTargetClose menutup target I/O jarak jauh tertentu.

Sintaks

void WdfIoTargetClose(
  [in] WDFIOTARGET IoTarget
);

Parameter

[in] IoTarget

Handel ke objek target I/O yang diperoleh dari panggilan sebelumnya ke WdfIoTargetCreate.

Nilai kembali

Tidak ada

Keterangan

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Setelah driver memanggil WdfIoTargetClose, driver dapat memanggil WdfIoTargetOpen untuk membuka kembali target I/O jarak jauh.

Driver yang menyediakan fungsi panggilan balik EvtIoTargetRemoveComplete harus memanggil WdfIoTargetClose dari dalam fungsi panggilan balik tersebut.

Sebelum metode WdfIoTargetClose kembali, kerangka kerja membatalkan semua permintaan I/O antrean target.

Jika driver telah selesai menggunakan target I/O jarak jauh dan tidak akan menggunakan target lagi, dan target tidak memiliki objek permintaan anak yang masih tertunda, driver dapat memanggil WdfObjectDelete tanpa terlebih dahulu memanggil WdfIoTargetClose. Panggilan ke WdfObjectDelete akan menutup target I/O jarak jauh, membatalkan semua permintaan I/O antrean target, dan menghapus objek target I/O. (Perhatikan bahwa jika objek induk target I/O jarak jauh adalah objek perangkat, kerangka kerja menutup target dan menghapus objek target saat menghapus objek induk.) Jika target memiliki objek permintaan anak yang masih tertunda, driver harus memanggil WdfIoTargetClose sebelum dapat memanggil WdfObjectDelete dengan aman.

Untuk informasi selengkapnya tentang WdfIoTargetClose, lihat Mengontrol Status Target I/O Umum.

Untuk informasi selengkapnya tentang target I/O, lihat Menggunakan Target I/O.

Contoh

Contoh kode berikut adalah fungsi panggilan balik EvtIoTargetRemoveComplete yang menghapus target I/O tertentu dari kumpulan target I/O driver lalu menutup target I/O.

VOID
MyEvtIoTargetRemoveComplete(
    WDFIOTARGET IoTarget
)
{
    //
    // Get device information from the I/O target object's
    // context space.
    //
    targetDeviceInfo = GetTargetDeviceInfo(IoTarget);
    deviceExtension = targetDeviceInfo->DeviceExtension;

    //
    // Remove the target device from the collection.
    //
    WdfWaitLockAcquire(
                       deviceExtension->TargetDeviceCollectionLock,
                       NULL
                       );

    WdfCollectionRemove(
                        deviceExtension->TargetDeviceCollection,
                        IoTarget
                        );

    WdfWaitLockRelease(deviceExtension->TargetDeviceCollectionLock);

    //
    // Close the target.
    //
    WdfIoTargetClose(IoTarget);
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header wdfiotarget.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Lihat juga

EvtIoTargetRemoveComplete

WdfIoTargetCreate