EVT_UCX_ROOTHUB_GET_INFO fonction de rappel (ucxroothub.h)
Implémentation du pilote client qu’UCX appelle lorsqu’il reçoit une demande d’informations sur le hub racine.
Syntaxe
EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;
void EvtUcxRoothubGetInfo(
[in] UCXROOTHUB UcxRootHub,
[in] WDFREQUEST Request
)
{...}
Paramètres
[in] UcxRootHub
Handle vers un objet UCX qui représente le hub racine.
[in] Request
Structure de type ROOTHUB_INFO.
Valeur de retour
None
Remarques
Le pilote client UCX inscrit cette fonction de rappel avec l’extension de contrôleur hôte USB (UCX) en appelant la méthode UcxRootHubCreate .
La structure _ROOTHUB_INFO contient le nombre de ports USB 2.0 et USB 3.0 pris en charge par le hub racine.
Une fois qu’UCX a appelé la fonction EVT_UCX_ROOTHUB_GET_INFO , le nombre de ports exposés par le hub racine reste le même. Notez qu’il s’agit de ports virtuels, pas de ports physiques. Chaque connecteur USB physique est représenté par un ou plusieurs ports de vitesse différente sur le hub racine.
Le pilote client retourne l’achèvement status dans La requête. Le pilote peut effectuer l’opération WDFREQUEST de manière asynchrone.
Exemples
VOID
RootHub_EvtRootHubGetInfo(
UCXROOTHUB UcxRootHub,
WDFREQUEST Request
)
/*++
For sample demonstration purposes, this function returns statically
defined information for the root hub.
--*/
{
PUCX_ROOTHUB_CONTEXT ucxRootHubContext;
WDF_REQUEST_PARAMETERS wdfRequestParams;
PROOTHUB_INFO rootHubInfo;
NTSTATUS status;
ucxRootHubContext = GetUcxRootHubContext(UcxRootHub);
WDF_REQUEST_PARAMETERS_INIT(&wdfRequestParams);
WdfRequestGetParameters(Request, &wdfRequestParams);
rootHubInfo = (PROOTHUB_INFO)wdfRequestParams.Parameters.Others.Arg1;
if (rootHubInfo->Size < sizeof(ROOTHUB_INFO)) {
DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_INFO Size %d", rootHubInfo->Size);
status = STATUS_INVALID_PARAMETER;
goto RootHub_EvtRootHubGetInfo;
}
rootHubInfo->ControllerType = ControllerTypeSoftXhci;
rootHubInfo->NumberOf20Ports = ucxRootHubContext->NumberOf20Ports;
rootHubInfo->NumberOf30Ports = ucxRootHubContext->NumberOf30Ports;
rootHubInfo->MaxU1ExitLatency = ucxRootHubContext->U1DeviceExitLatency;
rootHubInfo->MaxU2ExitLatency = ucxRootHubContext->U2DeviceExitLatency;
DbgTrace(TL_INFO, RootHub, "RootHub_UcxEvtGetInfo NumberOf20Ports %d NumberOf30Ports %d", rootHubInfo->NumberOf20Ports, rootHubInfo->NumberOf30Ports);
status = STATUS_SUCCESS;
RootHub_EvtRootHubGetInfo:
WdfRequestComplete(Request, status);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | ucxroothub.h (inclure Ucxclass.h) |
IRQL | DISPATCH_LEVEL |