Partager via


UcxControllerCreate, fonction (ucxcontroller.h)

Crée un objet de contrôleur d’hôte.

Syntaxe

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

Paramètres

[in] Device

Handle de l’objet de périphérique d’infrastructure que le pilote client a récupéré lors de l’appel précédent à WdfDeviceCreate.

[in] Config

Pointeur vers une structure de UCX_CONTROLLER_CONFIG allouée par l’appelant que le pilote client a initialisée en appelant UCX_CONTROLLER_CONFIG_INIT. La structure contient les informations de configuration requises pour créer l’objet .

[in, optional] Attributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui spécifie des attributs pour l’objet contrôleur.

[out] Controller

Pointeur vers une variable qui reçoit un handle vers le nouvel objet de contrôleur.

Valeur retournée

La méthode retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner un code d’erreur NTSTATUS approprié.

Remarques

Le pilote client du contrôleur hôte doit appeler cette méthode après l’appel WdfDeviceCreate . Le parent du nouvel objet de contrôleur hôte est l’objet d’appareil d’infrastructure.

Pendant cet appel, les implémentations de rappel d’événements fournis par le pilote client sont également inscrites. Fournissez des pointeurs de fonction vers ces fonctions en appelant les membres appropriés de UCX_CONTROLLER_CONFIG.

Si le type parent est PCI, initialisez le UCX_CONTROLLER_CONFIG en appelant UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Si le parent est ACPI, appelez UCX_CONTROLLER_CONFIG_SET_ACPI_INFO à la place.

La méthode crée différentes files d’attente nécessaires pour gérer les requêtes IOCTL envoyées au périphérique USB.

La méthode enregistre une interface d’appareil GUID_DEVINTERFACE_USB_HOST_CONTROLLER et un lien symbolique afin que les composants en mode utilisateur puissent ouvrir un handle au contrôleur.

Exemples


    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;

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Plateforme cible Windows
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête ucxcontroller.h (inclure Ucxclass.h)
IRQL PASSIVE_LEVEL

Voir aussi

WdfDeviceCreate