UcxControllerCreate 함수(ucxcontroller.h)

호스트 컨트롤러 개체를 만듭니다.

구문

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

매개 변수

[in] Device

클라이언트 드라이버가 WdfDeviceCreate에 대한 이전 호출에서 검색한 프레임워크 디바이스 개체에 대한 핸들입니다.

[in] Config

클라이언트 드라이버가 UCX_CONTROLLER_CONFIG_INIT 호출하여 초기화한 호출자 할당 UCX_CONTROLLER_CONFIG 구조체에 대한 포인터입니다. 구조체에는 개체를 만드는 데 필요한 구성 정보가 포함되어 있습니다.

[in, optional] Attributes

컨트롤러 개체의 특성을 지정하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.

[out] Controller

새 컨트롤러 개체에 대한 핸들을 수신하는 변수에 대한 포인터입니다.

반환 값

이 메서드는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 적절한 NTSTATUS 오류 코드 하나를 반환할 수 있습니다.

설명

호스트 컨트롤러에 대한 클라이언트 드라이버는 WdfDeviceCreate 호출 후 이 메서드를 호출해야 합니다. 새 호스트 컨트롤러 개체의 부모는 프레임워크 디바이스 개체입니다.

이 호출 중에 클라이언트 드라이버 제공 이벤트 콜백 구현도 등록됩니다. UCX_CONTROLLER_CONFIG 적절한 멤버를 호출하여 해당 함수에 대한 함수 포인터를 제공합니다.

부모 형식이 PCI인 경우 UCX_CONTROLLER_CONFIG_SET_PCI_INFO 호출하여 UCX_CONTROLLER_CONFIG 초기화합니다. 부모가 ACPI인 경우 대신 UCX_CONTROLLER_CONFIG_SET_ACPI_INFO 호출합니다.

이 메서드는 USB 디바이스로 전송된 IOCTL 요청을 처리하는 데 필요한 다양한 큐를 만듭니다.

이 메서드는 사용자 모드 구성 요소가 컨트롤러에 대한 핸들을 열 수 있도록 디바이스 인터페이스 GUID_DEVINTERFACE_USB_HOST_CONTROLLER 및 기호 링크를 등록합니다.


    WDF_OBJECT_ATTRIBUTES                   objectAttributes;
    UCX_CONTROLLER_CONFIG                   ucxControllerConfig;
    UCXCONTROLLER                           ucxController;
    PUCX_CONTROLLER_CONTEXT                 ucxControllerContext;

    // Create the controller
    //
    UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
    ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
    ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
    ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
    
    status = UcxControllerCreate(wdfDevice,
        &ucxControllerConfig,
        &objectAttributes,
        &ucxController);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Controller created.");

    controllerContext->UcxController = ucxController;

    ucxControllerContext = GetUcxControllerContext(ucxController);
    ucxControllerContext->WdfDevice = wdfDevice;

요구 사항

   
지원되는 최소 클라이언트 Windows 10
대상 플랫폼 Windows
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
헤더 ucxcontroller.h(Ucxclass.h 포함)
IRQL PASSIVE_LEVEL

참고 항목

WdfDeviceCreate