EVT_UCX_ROOTHUB_GET_INFO Rückruffunktion (ucxroothub.h)
Die Implementierung des Clienttreibers, die UCX aufruft, wenn eine Anforderung für Informationen zum Stammhub empfangen wird.
Syntax
EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;
void EvtUcxRoothubGetInfo(
[in] UCXROOTHUB UcxRootHub,
[in] WDFREQUEST Request
)
{...}
Parameter
[in] UcxRootHub
Ein Handle für ein UCX-Objekt, das den Stammhub darstellt.
[in] Request
Eine Struktur vom Typ ROOTHUB_INFO.
Rückgabewert
Keine
Bemerkungen
Der UCX-Clienttreiber registriert diese Rückruffunktion bei der USB-Hostcontrollererweiterung (UCX), indem er die UcxRootHubCreate-Methode aufruft .
Die _ROOTHUB_INFO-Struktur enthält die Anzahl der USB 2.0- und USB 3.0-Ports, die vom Stammhub unterstützt werden.
Nachdem UCX die EVT_UCX_ROOTHUB_GET_INFO-Funktion aufgerufen hat, bleibt die Anzahl der Ports, die vom Stammhub verfügbar gemacht werden, garantiert gleich. Beachten Sie, dass dies virtuelle Ports und keine physischen Ports sind. Jeder physische USB-Anschluss wird durch einen oder mehrere Ports mit unterschiedlicher Geschwindigkeit auf dem Stammhub dargestellt.
Der Clienttreiber gibt den Abschluss status in Anforderung zurück. Der Treiber kann WDFREQUEST asynchron abschließen.
Beispiele
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);
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | ucxroothub.h (include Ucxclass.h) |
IRQL | DISPATCH_LEVEL |