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
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