Funzione UcxRootHubCreate (ucxroothub.h)
Crea un oggetto hub radice per il controller host specificato.
Sintassi
NTSTATUS UcxRootHubCreate(
[in] UCXCONTROLLER Controller,
[in] PUCX_ROOTHUB_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCXROOTHUB *RootHub
);
Parametri
[in] Controller
Handle per l'oggetto controller. Il driver client ha recuperato l'handle in una chiamata precedente a UcxControllerCreate.
[in] Config
Puntatore a una struttura UCX_ROOTHUB_CONFIG che descrive varie operazioni di configurazione per la creazione dell'oggetto hub radice.
[in, optional] Attributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che specifica gli attributi per l'oggetto hub radice.
[out] RootHub
Puntatore a una variabile che riceve un handle per il nuovo oggetto hub radice.
Valore restituito
Il metodo restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire un codice di errore NTSTATUS appropriato.
Commenti
Il driver client per il controller host deve chiamare questo metodo dopo la chiamata WdfDeviceCreate . L'elemento padre del nuovo oggetto hub radice è l'oggetto controller.
Prima di chiamare questo metodo, il driver client deve inizializzare una struttura UCX_ROOTHUB_CONFIG chiamando UCX_ROOTHUB_CONFIG_INIT. Fornire puntatori a funzioni alle implementazioni di callback degli eventi fornite dal driver impostando i membri appropriati di UCX_ROOTHUB_CONFIG. Quando si verificano eventi nell'oggetto hub radice, UCX richiama tali funzioni di callback.
Esempio
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;
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Intestazione | ucxroothub.h |
IRQL | PASSIVE_LEVEL |