Partager via


UcxRootHubCreate, fonction (ucxroothub.h)

Crée un objet hub racine pour le contrôleur hôte spécifié.

Syntaxe

NTSTATUS UcxRootHubCreate(
  [in]           UCXCONTROLLER          Controller,
  [in]           PUCX_ROOTHUB_CONFIG    Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXROOTHUB             *RootHub
);

Paramètres

[in] Controller

Handle de l’objet contrôleur. Le pilote client a récupéré le handle dans un appel précédent à UcxControllerCreate.

[in] Config

Pointeur vers une structure UCX_ROOTHUB_CONFIG qui décrit différentes opérations de configuration pour la création de l’objet hub racine.

[in, optional] Attributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui spécifie les attributs de l’objet hub racine.

[out] RootHub

Pointeur vers une variable qui reçoit un handle vers le nouvel objet hub racine.

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 pour le contrôleur hôte doit appeler cette méthode après l’appel WdfDeviceCreate . Le parent du nouvel objet hub racine est l’objet contrôleur.

Avant d’appeler cette méthode, le pilote client doit initialiser une structure UCX_ROOTHUB_CONFIG en appelant UCX_ROOTHUB_CONFIG_INIT. Fournissez des pointeurs de fonction aux implémentations de rappel d’événements fournies par le pilote en définissant les membres appropriés de UCX_ROOTHUB_CONFIG. Lorsque des événements se produisent dans l’objet hub racine, UCX appelle ces fonctions de rappel.

Exemples

    UCX_ROOTHUB_CONFIG                      ucxRootHubConfig;
    UCXROOTHUB                              ucxRootHub;
    PUCX_ROOTHUB_CONTEXT                    ucxRootHubContext;
  

    // Create the root hub
    //
    UCX_ROOTHUB_CONFIG_INIT(&ucxRootHubConfig,
                            RootHub_EvtRootHubClearHubFeature,
                            RootHub_EvtRootHubClearPortFeature,
                            RootHub_EvtRootHubGetHubStatus,
                            RootHub_EvtRootHubGetPortStatus,
                            RootHub_EvtRootHubSetHubFeature,
                            RootHub_EvtRootHubSetPortFeature,
                            RootHub_EvtRootHubGetPortErrorCount,
                            RootHub_EvtRootHubInterruptTx,
                            RootHub_EvtRootHubGetInfo,
                            RootHub_EvtRootHubGet20PortInfo,
                            RootHub_EvtRootHubGet30PortInfo);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_ROOTHUB_CONTEXT);

    status = UcxRootHubCreate(ucxController,
                              &ucxRootHubConfig,
                              &objectAttributes,
                              &ucxRootHub);

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

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

    ucxControllerContext->UcxRootHub = ucxRootHub;

    ucxRootHubContext = GetUcxRootHubContext(ucxRootHub);
    ucxRootHubContext->UcxController = ucxController;

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
En-tête ucxroothub.h
IRQL PASSIVE_LEVEL

Voir aussi

UCX_ROOTHUB_CONFIG