Fungsi UrsDeviceInitialize (ursdevice.h)
Menginisialisasi objek perangkat kerangka kerja untuk mendukung operasi yang terkait dengan pengontrol peran ganda USB dan mendaftarkan fungsi panggilan balik peristiwa yang relevan dengan ekstensi kelas pengontrol peran ganda USB.
Sintaks
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
Parameter
[in] Device
Handel ke objek perangkat kerangka kerja yang diambil driver klien dalam panggilan sebelumnya ke WdfDeviceCreate.
[in] Config
Penunjuk ke struktur URS_CONFIG yang diinisialisasi driver klien dengan memanggil URS_CONFIG_INIT.
Nilai kembali
Metode mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan kode kesalahan NTSTATUS yang sesuai.
Keterangan
Driver klien untuk pengontrol peran ganda USB harus memanggil metode ini setelah panggilan WdfDeviceCreate .
Driver klien memanggil metode ini dalam implementasi EvtDriverDeviceAdd-nya .
Selama panggilan ini, implementasi panggilan balik peristiwa yang disediakan driver klien juga terdaftar dengan menetapkan anggota URS_CONFIG yang sesuai.
Metode ini membuat daftar sumber daya untuk peran host dan fungsi dan antrean yang diperlukan untuk menangani permintaan IOCTL yang dikirim ke pengontrol. Dengan setiap operasi sakelar peran, tumpukan perangkat turunan peran saat ini ditumbangkan dan tumpukan perangkat untuk peran baru dimuat. Metode UrsDeviceInitialize mengambil informasi identifikasi yang digunakan untuk membangun tumpukan perangkat tersebut. Metode ini juga mengambil informasi tentang perangkat dari bus yang mendasar, seperti ACPI.
Contoh
EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtUrsFilterResourceRequirements;
EVT_URS_SET_ROLE EvtUrsSetRole;
EvtDriverDeviceAdd (
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
...
WDFDEVICE device;
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES attributes;
URS_CONFIG ursConfig;
...
status = UrsDeviceInitInitialize(DeviceInit);
if (!NT_SUCCESS(status)) {
//UrsDeviceInitInitialize failed.
return status;
}
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
if (!NT_SUCCESS(status)) {
// WdfDeviceCreate failed.
return status;
}
URS_CONFIG_INIT(&ursConfig, UrsHostInterfaceTypeXhci, EvtUrsFilterResourceRequirements);
ursConfig.EvtUrsSetRole = EvtUrsSetRole;
status = UrsDeviceInitialize(device, &ursConfig);
if (!NT_SUCCESS(status)) {
// UrsDeviceInitialize failed.
return status;
}
...
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 |
Server minimum yang didukung | Server Windows 2016 |
Target Platform | Windows |
Versi KMDF minimum | 1.15 |
Header | ursdevice.h (termasuk Urscx.h) |
Pustaka | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |
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