EVT_UCX_ROOTHUB_GET_INFO Rückruffunktion (ucxroothub.h)
Die Implementierung des Clienttreibers, die UCX aufruft, wenn sie eine Anforderung für Informationen zum Stammhub empfängt.
Syntax
EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;
void EvtUcxRoothubGetInfo(
[in] UCXROOTHUB UcxRootHub,
[in] WDFREQUEST Request
)
{...}
Parameter
[in] UcxRootHub
Ein Handle zu einem UCX-Objekt, das den Stammhub darstellt.
[in] Request
Eine Struktur vom Typ ROOTHUB_INFO.
Rückgabewert
Nichts
Bemerkungen
Der UCX-Clienttreiber registriert diese Rückruffunktion mit der USB-Hostcontrollererweiterung (UCX), indem die UcxRootHubCreate-Methode aufgerufen wird.
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 aufruft, bleibt die Anzahl der Ports, die vom Stammhub verfügbar gemacht werden, garantiert gleich bleiben. Beachten Sie, dass es sich hierbei um virtuelle Ports und nicht um physische Ports handelt. Jeder physische USB-Anschluss wird durch einen oder mehrere Ports unterschiedlicher Geschwindigkeit auf dem Stammhub dargestellt.
Der Clienttreiber gibt den Abschlussstatus in Anforderungs-zurück. Der Treiber kann den 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- | Fenster |
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Header- | ucxroothub.h (include Ucxclass.h) |
IRQL- | DISPATCH_LEVEL |