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

URS_CONFIG

URS_CONFIG_INIT