Fungsi UcxControllerCreate (ucxcontroller.h)

Membuat objek pengontrol host.

Sintaks

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja yang diambil driver klien dalam panggilan sebelumnya ke WdfDeviceCreate.

[in] Config

Penunjuk ke struktur UCX_CONTROLLER_CONFIG yang dialokasikan pemanggil yang diinisialisasi driver klien dengan memanggil UCX_CONTROLLER_CONFIG_INIT. Struktur berisi informasi konfigurasi yang diperlukan untuk membuat objek.

[in, optional] Attributes

Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang dialokasikan penelepon yang menentukan atribut untuk objek pengontrol.

[out] Controller

Penunjuk ke variabel yang menerima handel ke objek pengontrol baru.

Nilai kembali

Metode mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan satu kode kesalahan NTSTATUS yang sesuai.

Keterangan

Driver klien untuk pengontrol host harus memanggil metode ini setelah panggilan WdfDeviceCreate . Induk objek pengontrol host baru adalah objek perangkat kerangka kerja.

Selama panggilan ini, implementasi panggilan balik peristiwa yang disediakan driver klien juga terdaftar. Berikan penunjuk fungsi ke fungsi tersebut dengan memanggil pengaturan anggota UCX_CONTROLLER_CONFIG yang sesuai.

Jika jenis induk adalah PCI, maka inisialisasi UCX_CONTROLLER_CONFIG dengan memanggil UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Jika induknya adalah ACPI, panggil UCX_CONTROLLER_CONFIG_SET_ACPI_INFO sebagai gantinya.

Metode ini membuat berbagai antrean yang diperlukan untuk menangani permintaan IOCTL yang dikirim ke perangkat USB.

Metode ini mendaftarkan antarmuka perangkat GUID_DEVINTERFACE_USB_HOST_CONTROLLER dan tautan simbolis sehingga komponen mode pengguna dapat membuka handel ke pengontrol.

Contoh


    WDF_OBJECT_ATTRIBUTES                   objectAttributes;
    UCX_CONTROLLER_CONFIG                   ucxControllerConfig;
    UCXCONTROLLER                           ucxController;
    PUCX_CONTROLLER_CONTEXT                 ucxControllerContext;

    // Create the controller
    //
    UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
    ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
    ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
    ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
    
    status = UcxControllerCreate(wdfDevice,
        &ucxControllerConfig,
        &objectAttributes,
        &ucxController);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Controller created.");

    controllerContext->UcxController = ucxController;

    ucxControllerContext = GetUcxControllerContext(ucxController);
    ucxControllerContext->WdfDevice = wdfDevice;

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Target Platform Windows
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header ucxcontroller.h (termasuk Ucxclass.h)
IRQL PASSIVE_LEVEL

Lihat juga

WdfDeviceCreate