Fungsi WdfIoTargetOpen (wdfiotarget.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfIoTargetOpen membuka target I/O jarak jauh sehingga driver dapat mengirim permintaan I/O ke dalamnya.
Sintaks
NTSTATUS WdfIoTargetOpen(
[in] WDFIOTARGET IoTarget,
[in] PWDF_IO_TARGET_OPEN_PARAMS OpenParams
);
Parameter
[in] IoTarget
Handel ke objek target I/O yang diperoleh dari panggilan sebelumnya ke WdfIoTargetCreate.
[in] OpenParams
Penunjuk ke struktur WDF_IO_TARGET_OPEN_PARAMS yang dialokasikan penelepon.
Nilai kembali
WdfIoTargetOpen mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Target I/O yang ditentukan sudah terbuka. |
|
Sumber daya sistem yang tersedia tidak cukup untuk menyelesaikan operasi. |
|
Ukuran struktur WDF_IO_TARGET_OPEN_PARAMS yang ditentukan OpenParams salah. |
|
Anggota TargetFileObject dari struktur WDF_IO_TARGET_OPEN_PARAMS pemanggil menentukan objek file yang tidak valid. |
|
Parameter yang tidak valid terdeteksi. |
|
Nama perangkat yang diidentifikasi dalam parameter OpenParams tidak dapat ditemukan. |
Metode ini juga mungkin mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Driver dapat membuka target I/O jarak jauh dengan menyediakan string Unicode yang mewakili nama objek atau dengan memasok pointer ke struktur DEVICE_OBJECT Windows Driver Model (WDM). (Driver berbasis kerangka kerja biasanya tidak memiliki penunjuk ke struktur DEVICE_OBJECT driver lain.)
Untuk mendapatkan nama antarmuka perangkat sebelum memanggil WdfIoTargetOpen, driver UMDF harus memanggil CM_Register_Notification untuk mendaftar pemberitahuan kedatangan dan penghapusan antarmuka. Kemudian dapat membuka target jarak jauh menggunakan nama simbolis antarmuka yang diterimanya dalam rutinitas panggilan balik pemberitahuan antarmuka. Driver harus terus mendengarkan pemberitahuan penghapusan saat handel terbuka. Jika driver target gagal, driver UMDF harus menutup handel.
Jika antarmuka sudah ada, driver UMDF harus memanggil CM_Get_Device_Interface_List, mungkin memanggil CM_Get_Device_Interface_List_Size terlebih dahulu untuk menentukan ukuran buffer yang diperlukan.
Jika Anda ingin driver Anda menggunakan target I/O lokalnya, driver harus memanggil WdfDeviceGetIoTarget alih-alih WdfIoTargetOpen.
Jika panggilan ke WdfIoTargetOpen gagal, driver harus memanggil WdfObjectDelete untuk menghapus objek target I/O.
Untuk informasi selengkapnya tentang WdfIoTargetOpen, lihat Menginisialisasi Target I/O Umum.
Untuk informasi selengkapnya tentang target I/O, lihat Menggunakan Target I/O.
Contoh
Contoh berikut membuat objek target I/O, menginisialisasi struktur WDF_IO_TARGET_OPEN_PARAMS , dan membuka target I/O jarak jauh dengan menentukan nama tautan simbolis perangkat.
WDF_OBJECT_ATTRIBUTES ioTargetAttrib;
WDFIOTARGET ioTarget;
WDF_IO_TARGET_OPEN_PARAMS openParams;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ioTargetAttrib,
TARGET_DEVICE_INFO
);
status = WdfIoTargetCreate(
device,
&ioTargetAttrib,
&ioTarget
);
if (!NT_SUCCESS(status)) {
return status;
}
WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME(
&openParams,
SymbolicLink,
STANDARD_RIGHTS_ALL
);
status = WdfIoTargetOpen(
ioTarget,
&openParams
);
if (!NT_SUCCESS(status)) {
WdfObjectDelete(ioTarget);
return status;
}
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