다음을 통해 공유


UrsDeviceInitialize 함수(ursdevice.h)

USB 이중 역할 컨트롤러와 관련된 작업을 지원하도록 프레임워크 디바이스 개체를 초기화하고 관련 이벤트 콜백 함수를 USB 이중 역할 컨트롤러 클래스 확장에 등록합니다.

구문

NTSTATUS UrsDeviceInitialize(
  [in] WDFDEVICE   Device,
  [in] PURS_CONFIG Config
);

매개 변수

[in] Device

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

[in] Config

클라이언트 드라이버가 URS_CONFIG_INIT 호출하여 초기화한 URS_CONFIG 구조체에 대한 포인터입니다.

반환 값

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

설명

USB 이중 역할 컨트롤러의 클라이언트 드라이버는 WdfDeviceCreate 호출 후에 이 메서드를 호출해야 합니다.

클라이언트 드라이버는 EvtDriverDeviceAdd 구현에서 이 메서드를 호출합니다.

이 호출 중에 클라이언트 드라이버 제공 이벤트 콜백 구현도 URS_CONFIG 적절한 멤버를 설정하여 등록됩니다.

메서드는 호스트 및 함수 역할에 대한 리소스 목록과 컨트롤러로 전송되는 IOCTL 요청을 처리하는 데 필요한 큐를 만듭니다. 각 역할 전환 작업을 사용하면 현재 역할의 자식 디바이스 스택이 삭제되고 새 역할에 대한 디바이스 스택이 로드됩니다. UrsDeviceInitialize 메서드는 해당 디바이스 스택을 빌드하는 데 사용되는 식별 정보를 검색합니다. 또한 메서드는 ACPI와 같은 기본 버스에서 디바이스에 대한 정보를 검색합니다.

예제



EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtUrsFilterResourceRequirements;
EVT_URS_SET_ROLE EvtUrsSetRole;

EvtDriverDeviceAdd (
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
    )
{
...

    WDFDEVICE device;
    NTSTATUS status;
    WDF_OBJECT_ATTRIBUTES attributes;
    URS_CONFIG ursConfig;
...
 
    status = UrsDeviceInitInitialize(DeviceInit);
    if (!NT_SUCCESS(status)) {
        //UrsDeviceInitInitialize failed.
        return status;
    }
   
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
    status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
    if (!NT_SUCCESS(status)) {
        // WdfDeviceCreate failed.
        return status;
    }
    URS_CONFIG_INIT(&ursConfig, UrsHostInterfaceTypeXhci, EvtUrsFilterResourceRequirements);
    
    ursConfig.EvtUrsSetRole = EvtUrsSetRole;
    status = UrsDeviceInitialize(device, &ursConfig);

    if (!NT_SUCCESS(status)) {
        // UrsDeviceInitialize failed.
        return status;

    }

...

}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 Windows
최소 KMDF 버전 1.15
머리글 ursdevice.h(Urscx.h 포함)
라이브러리 Urscxstub.lib
IRQL PASSIVE_LEVEL

추가 정보

URS_CONFIG

URS_CONFIG_INIT