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 UcxControllerCreate abgerufen.

[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 auf 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 entsprechenden NTSTATUS-Fehlercode zurück.

Hinweise

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

Vor dem Aufrufen dieser Methode muss der Clienttreiber eine UCX_ROOTHUB_CONFIG-Struktur initialisieren, indem er UCX_ROOTHUB_CONFIG_INIT aufruft. Stellen Sie Funktionszeiger auf vom Treiber bereitgestellte Ereignisrückrufimplementierungen bereit, indem Sie entsprechende Member von UCX_ROOTHUB_CONFIG festlegen. 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
Unterstützte Mindestversion (Client) Windows 10
Kopfzeile ucxroothub.h
IRQL PASSIVE_LEVEL

Weitere Informationen

UCX_ROOTHUB_CONFIG