EVT_UCX_CONTROLLER_USBDEVICE_ADD fonction de rappel (ucxcontroller.h)
Implémentation du pilote client qui appelle UCX lorsqu’un nouvel appareil USB est détecté.
Syntaxe
EVT_UCX_CONTROLLER_USBDEVICE_ADD EvtUcxControllerUsbdeviceAdd;
NTSTATUS EvtUcxControllerUsbdeviceAdd(
[in] UCXCONTROLLER UcxController,
[in] PUCXUSBDEVICE_INFO UcxUsbDeviceInfo,
[in] PUCXUSBDEVICE_INIT UsbDeviceInit
)
{...}
Paramètres
[in] UcxController
Handle du contrôleur UCX reçu par le pilote client lors d’un appel précédent à la méthode UcxControllerCreate.
[in] UcxUsbDeviceInfo
Pointeur vers une structure UCXUSBDEVICE_INFO.
[in] UsbDeviceInit
Pointeur vers une structure opaque contenant des informations d’initialisation. Les rappels pour l’objet d’appareil sont associés à cette structure. Cette structure est gérée par UCX.
Valeur de retour
Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS, ou une autre valeur d’état pour laquelle NT_SUCCESS(status) a la valeur TRUE. Sinon, il doit retourner une valeur d’état pour laquelle NT_SUCCESS(status) a la valeur FALSE.
Remarques
Le pilote client UCX inscrit son implémentation EVT_UCX_CONTROLLER_USBDEVICE_ADD auprès de l’extension UCX (Host Controller Extension) USB en appelant la méthode UcxControllerCreate.
Cette fonction de rappel crée un objet d’appareil USB et inscrit les fonctions de rappel d’objet périphérique USB en appelant UcxUsbDeviceCreate. La fonction peut avoir besoin d’allouer la mémoire tampon commune qui sera utilisée comme contexte d’appareil.
Exemples
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;
}
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Windows |
version minimale de KMDF | 1.0 |
version minimale de UMDF | 2.0 |
d’en-tête | ucxcontroller.h (include Ucxclass.h) |
IRQL | PASSIVE_LEVEL |