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 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 de retour

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

Remarques

Le pilote client du 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 de 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;

Exigences

Exigence Valeur
client minimum pris en charge Windows 10
d’en-tête ucxroothub.h
IRQL PASSIVE_LEVEL

Voir aussi

UCX_ROOTHUB_CONFIG