共用方式為


EVT_UCX_ROOTHUB_CONTROL_URB回呼函式 (ucxroothub.h)

用戶端驅動程式會使用此回呼類型來實作 UCX 在 USB 中樞上收到功能控制要求時所呼叫的處理程式。

語法

EVT_UCX_ROOTHUB_CONTROL_URB EvtUcxRoothubControlUrb;

void EvtUcxRoothubControlUrb(
  [in] UCXROOTHUB UcxRootHub,
  [in] WDFREQUEST Request
)
{...}

參數

[in] UcxRootHub

代表根中樞之 UCX 物件的句柄。

[in] Request

包含功能要求的 URB

傳回值

備註

用戶端驅動程式會藉由呼叫 UcxRootHubCreate 方法,向USB主機控制器擴充功能註冊此回呼函式, (UCX) 。

驅動程式會提供所有個別功能要求類型的回呼,如第一個範例所示,也可以提供UCX呼叫所有中樞和埠控制傳輸之類型的單一處理程式 EVT_UCX_ROOTHUB_CONTROL_URB

用戶端驅動程式會在 要求 和 URB 標頭的USBD_STATUS中傳回完成狀態。 驅動程式可以異步完成 WDFREQUEST。

範例

此範例示範如何註冊個別功能要求類型的回呼。

EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubClearHubFeature;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubClearPortFeature;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubGetHubStatus;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubGetPortStatus;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubSetHubFeature;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubSetPortFeature;
EVT_UCX_ROOTHUB_CONTROL_URB RootHub_EvtRootHubGetPortErrorCount;

...

    //
    // Create the root hub
    //
    UCX_ROOTHUB_CONFIG_INIT(&ucxRootHubConfig,
                            RootHub_EvtRootHubClearHubFeature,
                            RootHub_EvtRootHubClearPortFeature,
                            RootHub_EvtRootHubGetHubStatus,
                            RootHub_EvtRootHubGetPortStatus,
                            RootHub_EvtRootHubSetHubFeature,
                            RootHub_EvtRootHubSetPortFeature,
                            RootHub_EvtRootHubGetPortErrorCount,
                            RootHub_EvtRootHubInterruptTx,
                            RootHub_EvtRootHubGetInfo,
                            RootHub_EvtRootHubGet20PortInfo,
                            RootHub_EvtRootHubGet30PortInfo);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_ROOTHUB_CONTEXT);

    status = UcxRootHubCreate(ucxController,
                              &ucxRootHubConfig,
                              &objectAttributes,
                              &ucxRootHub);

以下是其中一個 URB 特定要求處理程式的範例實作。

VOID
RootHub_EvtRootHubClearHubFeature(
    UCXROOTHUB         UcxRootHub,
    WDFREQUEST         ControlUrb
)
/*++

Routine Description:

    UCX calls this routine when it receives a new Clear Hub Feature request.

--*/
{
    UNREFERENCED_PARAMETER(UcxRootHub);

    DbgTrace(TL_INFO, RootHub, "RootHub_EvtRootHubClearHubFeature");

    WDF_REQUEST_PARAMETERS_INIT(&wdfRequestParams);
    WdfRequestGetParameters(WdfRequest, &wdfRequestParams);
    urb = (PURB)wdfRequestParams.Parameters.Others.Arg1;
    setupPacket = (PWDF_USB_CONTROL_SETUP_PACKET)&urb->UrbControlTransferEx.SetupPacket[0];
    ...

    WdfRequestComplete(ControlUrb, STATUS_SUCCESS);
}

規格需求

需求
目標平台 Windows
最小 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 ucxroothub.h (包含 Ucxclass.h)
IRQL DISPATCH_LEVEL

另請參閱

UcxRootHubCreate