EVT_UCX_ROOTHUB_GET_INFO fonction de rappel (ucxroothub.h)
Implémentation du pilote client qui appelle UCX 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
Aucun
Remarques
Le pilote client UCX inscrit cette fonction de rappel auprès de l’extension UCX (Host Controller Extension) USB 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 UCX appelé la fonction EVT_UCX_ROOTHUB_GET_INFO, le nombre de ports exposés par le hub racine est garanti pour rester le même. Notez qu’il s’agit de ports virtuels, et non de ports physiques. Chaque connecteur USB physique est représenté par un ou plusieurs ports d’une vitesse différente sur le hub racine.
Le pilote client retourne l’état d’achèvement dans demande. 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);
}
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Windows |
version minimale de KMDF | 1.0 |
version minimale de UMDF | 2.0 |
d’en-tête | ucxroothub.h (include Ucxclass.h) |
IRQL | DISPATCH_LEVEL |