다음을 통해 공유


EVT_WDF_DEVICE_RELATIONS_QUERY 콜백 함수(wdfdevice.h)

[KMDF에만 적용]

드라이버의 EvtDeviceRelationsQuery 이벤트 콜백은 드라이버에서 지원하는 디바이스 간의 관계 변경 내용을 보고합니다.

구문

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

void EvtWdfDeviceRelationsQuery(
  [in] WDFDEVICE Device,
  [in] DEVICE_RELATION_TYPE RelationType
)
{...}

매개 변수

[in] Device

프레임워크 디바이스 개체에 대한 핸들입니다.

[in] RelationType

DEVICE_RELATION_TYPE 형식의 열거자 값입니다. DEVICE_RELATION_TYPE 열거형은 wdm.h에 정의되어 있습니다.

반환 값

없음

설명

EvtDeviceRelationsQuery 콜백 함수를 등록하려면 드라이버가 WdfDeviceInitSetPnpPowerEventCallbacks를 호출해야 합니다.

대부분의 프레임워크 기반 드라이버는 이 콜백 함수를 제공할 필요가 없습니다.

시스템 초기화 중에 플러그 앤 플레이 관리자는 드라이버 스택에 IRP_MN_QUERY_DEVICE_RELATIONS 요청을 전송하여 시스템의 모든 디바이스를 열거합니다. 프레임워크 기반 드라이버가 EvtDeviceRelationsQuery 콜백 함수를 등록한 경우 프레임워크는 이를 호출합니다. 버스의 함수 드라이버는 버스에 연결된 모든 자식 디바이스를 보고해야 합니다.

또한 프레임워크가 IoInvalidateDeviceRelations 루틴을 호출하여 드라이버 버스의 디바이스 간에 변경된 관계를 보고한 후 플러그 앤 플레이 관리자는 드라이버 스택에 또 다른 IRP_MN_QUERY_DEVICE_RELATIONS 요청을 보냅니다. 그런 다음 프레임워크는 드라이버가 변경에 대한 세부 정보를 제공할 수 있도록 드라이버의 EvtDeviceRelationsQuery 콜백 함수를 호출합니다.

드라이버에서 수행해야 하는 작업 유형은 RelationType 매개 변수에 대해 받은 값에 따라 달라집니다. 값은 다음 중 하나일 수 있습니다.

BusRelations

    대부분의 프레임워크 기반 드라이버는 EvtDeviceRelationsQuery 콜백 함수에서 버스 관계를 보고하지 않습니다. 대신 드라이버는 버스에서 디바이스 열거에 설명된 지침을 따릅니다.

EjectionRelations

    대부분의 프레임워크 기반 드라이버는 EvtDeviceRelationsQuery 콜백 함수에서 배출 관계를 보고하지 않습니다. 대신 디바이스 버스용 드라이버는 WdfPdoAddEjectionRelationsPhysicalDevice 및 WdfPdoRemoveEjectionRelationsPhysicalDevice를 호출합니다.

RemovalRelations

    대부분의 프레임워크 기반 드라이버는 EvtDeviceRelationsQuery 콜백 함수에서 제거 관계를 보고하지 않습니다. 대신 드라이버는 WdfDeviceAddRemovalRelationsPhysicalDevice 및 WdfDeviceRemoveRemovalRelationsPhysicalDevice를 호출합니다.

TargetDeviceRelation

    프레임워크 기반 드라이버는 디바이스의 대상 관계를 보고할 필요가 없습니다. 대신 프레임워크는 이 요청을 처리합니다.

프레임워크는 디바이스가 제거되는 경우에도 RelationType 값이 EjectionRelations 또는 RemovalRelationsEvtDeviceRelationsQuery 콜백 함수를 호출할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfdevice.h(Wdf.h 포함)
IRQL PASSIVE_LEVEL