EVT_UCX_CONTROLLER_USBDEVICE_ADD fungsi panggilan balik (ucxcontroller.h)
Implementasi driver klien yang dipanggil UCX saat perangkat USB baru terdeteksi.
Sintaks
EVT_UCX_CONTROLLER_USBDEVICE_ADD EvtUcxControllerUsbdeviceAdd;
NTSTATUS EvtUcxControllerUsbdeviceAdd(
[in] UCXCONTROLLER UcxController,
[in] PUCXUSBDEVICE_INFO UcxUsbDeviceInfo,
[in] PUCXUSBDEVICE_INIT UsbDeviceInit
)
{...}
Parameter
[in] UcxController
Handel ke pengontrol UCX yang diterima driver klien dalam panggilan sebelumnya ke metode UcxControllerCreate .
[in] UcxUsbDeviceInfo
Arahkan ke struktur UCXUSBDEVICE_INFO .
[in] UsbDeviceInit
Penunjuk ke struktur buram yang berisi informasi inisialisasi. Panggilan balik untuk objek perangkat dikaitkan dengan struktur ini. Struktur ini dikelola oleh UCX.
Nilai kembali
Jika operasi berhasil, fungsi panggilan balik harus mengembalikan STATUS_SUCCESS, atau nilai status lain yang NT_SUCCESS(status) sama dengan TRUE. Jika tidak, nilai status harus dikembalikan yang NT_SUCCESS(statusnya) sama dengan FALSE.
Keterangan
Driver klien UCX mendaftarkan implementasi EVT_UCX_CONTROLLER_USBDEVICE_ADD dengan ekstensi pengontrol host USB (UCX) dengan memanggil metode UcxControllerCreate .
Fungsi panggilan balik ini membuat objek perangkat USB baru dan mendaftarkan fungsi panggilan balik objek perangkat USB dengan memanggil UcxUsbDeviceCreate. Fungsi ini mungkin perlu mengalokasikan buffer umum yang akan digunakan sebagai konteks perangkat.
Contoh
NTSTATUS
UsbDevice_EvtControllerUsbDeviceAdd(
UCXCONTROLLER UcxController,
PUCXUSBDEVICE_INFO UsbDeviceInfo,
PUCXUSBDEVICE_INIT UsbDeviceInit
)
{
NTSTATUS status = STATUS_SUCCESS;
WDF_OBJECT_ATTRIBUTES objectAttributes;
UCX_USBDEVICE_EVENT_CALLBACKS callbacks;
UCXUSBDEVICE ucxUsbDevice;
PUCX_USB_DEVICE_CONTEXT ucxUsbDeviceContext;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_USB_DEVICE_CONTEXT);
//
// Set the event callbacks for the USB device.
//
UCX_USBDEVICE_EVENT_CALLBACKS_INIT(&callbacks,
UsbDevice_EvtUcxUsbDeviceEndpointsConfigure,
UsbDevice_EvtUcxUsbDeviceEnable,
UsbDevice_EvtUcxUsbDeviceDisable,
UsbDevice_EvtUcxUsbDeviceReset,
UsbDevice_EvtUcxUsbDeviceAddress,
UsbDevice_EvtUcxUsbDeviceUpdate,
UsbDevice_EvtUcxUsbDeviceHubInfo,
Endpoint_EvtUcxUsbDeviceDefaultEndpointAdd,
Endpoint_EvtUcxUsbDeviceEndpointAdd);
UcxUsbDeviceInitSetEventCallbacks(UsbDeviceInit, &callbacks);
//
// Create the device
//
status = UcxUsbDeviceCreate(UcxController,
&UsbDeviceInit,
&objectAttributes,
&ucxUsbDevice);
if (!NT_SUCCESS(status)) {
DbgTrace(TL_ERROR, UsbDevice, "UcxUsbDeviceCreate Failed %!STATUS!", status);
goto EvtControllerUsbDeviceAddEnd;
}
ucxUsbDeviceContext = GetUcxUsbDeviceContext(ucxUsbDevice);
ucxUsbDeviceContext->DeviceSpeed = UsbDeviceInfo->DeviceSpeed;
ucxUsbDeviceContext->TtHub = UsbDeviceInfo->TtHub;
RtlCopyMemory(&ucxUsbDeviceContext->PortPath,
&UsbDeviceInfo->PortPath,
sizeof(USB_DEVICE_PORT_PATH));
DbgTrace(TL_INFO, UsbDevice, "UsbDevice_EvtControllerUsbDeviceAdd");
EvtControllerUsbDeviceAddEnd:
return status;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | ucxcontroller.h (termasuk Ucxclass.h) |
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