EVT_UCX_ROOTHUB_GET_INFO función de devolución de llamada (ucxroothub.h)
La implementación del controlador de cliente que UCX llama cuando recibe una solicitud de información sobre el centro raíz.
Sintaxis
EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;
void EvtUcxRoothubGetInfo(
[in] UCXROOTHUB UcxRootHub,
[in] WDFREQUEST Request
)
{...}
Parámetros
[in] UcxRootHub
Identificador de un objeto UCX que representa el centro raíz.
[in] Request
Estructura de tipo ROOTHUB_INFO.
Valor devuelto
None
Observaciones
El controlador cliente UCX registra esta función de devolución de llamada con la extensión del controlador de host USB (UCX) llamando al método UcxRootHubCreate .
La estructura _ROOTHUB_INFO contiene el número de puertos USB 2.0 y USB 3.0 admitidos por el concentrador raíz.
Después de que UCX llame a la función EVT_UCX_ROOTHUB_GET_INFO , se garantiza que el número de puertos expuestos por el centro raíz siga siendo el mismo. Tenga en cuenta que son puertos virtuales, no puertos físicos. Cada conector USB físico se representa mediante uno o varios puertos de velocidad diferente en el concentrador raíz.
El controlador cliente devuelve el estado de finalización en Solicitud. El controlador puede completar WDFREQUEST de forma asincrónica.
Ejemplos
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);
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | ucxroothub.h (incluya Ucxclass.h) |
IRQL | DISPATCH_LEVEL |