Freigeben über


UcxRootHubCreate-Funktion (ucxroothub.h)

Erstellt ein Stammhubobjekt für den angegebenen Hostcontroller.

Syntax

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

Parameter

[in] Controller

Ein Handle für das Controllerobjekt. Der Clienttreiber hat das Handle in einem vorherigen Aufruf von UcxControllerCreateabgerufen.

[in] Config

Ein Zeiger auf eine UCX_ROOTHUB_CONFIG-Struktur, die verschiedene Konfigurationsvorgänge zum Erstellen des Stammhubobjekts beschreibt.

[in, optional] Attributes

Ein Zeiger auf eine vom Aufrufer zugewiesene WDF_OBJECT_ATTRIBUTES Struktur, die Attribute für das Stammhubobjekt angibt.

[out] RootHub

Ein Zeiger auf eine Variable, die ein Handle für das neue Stammhubobjekt empfängt.

Rückgabewert

Die Methode gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen geeigneten NTSTATUS Fehlercode zurück.

Bemerkungen

Der Clienttreiber für den Hostcontroller muss diese Methode nach dem WdfDeviceCreate Aufruf aufrufen. Das übergeordnete Objekt des neuen Stammhubobjekts ist das Controllerobjekt.

Vor dem Aufrufen dieser Methode muss der Clienttreiber eine UCX_ROOTHUB_CONFIG Struktur initialisieren, indem UCX_ROOTHUB_CONFIG_INITaufgerufen wird. Stellen Sie Funktionszeiger auf vom Treiber bereitgestellte Ereignisrückrufimplementierungen bereit, indem Sie die entsprechenden Member von UCX_ROOTHUB_CONFIGfestlegen. Wenn Ereignisse im Stammhubobjekt auftreten, ruft UCX diese Rückruffunktionen auf.

Beispiele

    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;

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
Header- ucxroothub.h
IRQL- PASSIVE_LEVEL

Siehe auch

UCX_ROOTHUB_CONFIG