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 |