функция обратного вызова EVT_UCX_ROOTHUB_GET_20PORT_INFO (ucxroothub.h)
Реализация драйвера клиента, вызываемая UCX при получении запроса на получение сведений о портах USB 2.0 на корневом концентраторе.
Синтаксис
EVT_UCX_ROOTHUB_GET_20PORT_INFO EvtUcxRoothubGet20PortInfo;
void EvtUcxRoothubGet20PortInfo(
[in] UCXROOTHUB UcxRootHub,
[in] WDFREQUEST Request
)
{...}
Параметры
[in] UcxRootHub
Дескриптор объекта UCX, представляющего корневой концентратор.
[in] Request
Структура типа _ROOTHUB_20PORT_INFO.
Возвращаемое значение
None
Remarks
Драйвер клиента UCX регистрирует эту функцию обратного вызова в расширении USB-контроллера узла (UCX), вызывая метод UcxRootHubCreate .
Массив PortInfoArray структуры _ROOTHUB_20PORTS_INFO содержит список портов USB 2.0, поддерживаемых корневым концентратором.
Драйвер клиента возвращает состояние завершения в поле Запрос и в USBD_STATUS в заголовке URB. Драйвер может выполнять WDFREQUEST асинхронно.
Примеры
VOID
RootHub_EvtRootHubGet20PortInfo(
UCXROOTHUB UcxRootHub,
WDFREQUEST Request
)
/*++
For sample demonstration purposes, this function returns statically
defined information for the single 2.0 port.
--*/
{
PUCX_ROOTHUB_CONTEXT ucxRootHubContext;
WDF_REQUEST_PARAMETERS wdfRequestParams;
PROOTHUB_20PORTS_INFO rootHub20PortsInfo;
NTSTATUS status;
ucxRootHubContext = GetUcxRootHubContext(UcxRootHub);
WDF_REQUEST_PARAMETERS_INIT(&wdfRequestParams);
WdfRequestGetParameters(Request, &wdfRequestParams);
rootHub20PortsInfo = (PROOTHUB_20PORTS_INFO)wdfRequestParams.Parameters.Others.Arg1;
if (rootHub20PortsInfo->Size < sizeof(ROOTHUB_20PORTS_INFO)) {
DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_20PORTS_INFO Size %d", rootHub20PortsInfo->Size);
status = STATUS_INVALID_PARAMETER;
goto RootHub_EvtRootHubGet20PortInfoEnd;
}
if (rootHub20PortsInfo->NumberOfPorts != ucxRootHubContext->NumberOf20Ports) {
DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_20PORTS_INFO NumberOfPorts %d", rootHub20PortsInfo->NumberOfPorts);
status = STATUS_INVALID_PARAMETER;
goto RootHub_EvtRootHubGet20PortInfoEnd;
}
if (rootHub20PortsInfo->PortInfoSize < sizeof(ROOTHUB_20PORT_INFO)) {
DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_20PORT_INFO Size %d", rootHub20PortsInfo->PortInfoSize);
status = STATUS_INVALID_PARAMETER;
goto RootHub_EvtRootHubGet20PortInfoEnd;
}
//
// Return static root hub 2.0 port information.
//
rootHub20PortsInfo->PortInfoArray[0]->PortNumber = ROOTHUB_20_PORT_PORT_NUMBER;
rootHub20PortsInfo->PortInfoArray[0]->Removable = TriStateTrue;
status = STATUS_SUCCESS;
DbgTrace(TL_INFO, RootHub, "RootHub_EvtRootHubGet20PortInfo");
RootHub_EvtRootHubGet20PortInfoEnd:
WdfRequestComplete(Request, status);
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | ucxroothub.h (включая Ucxclass.h) |
IRQL | DISPATCH_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по