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 |