IoReportTargetDeviceChange 함수(wdm.h)
IoReportTargetDeviceChange 루틴은 PnP 관리자에게 디바이스에서 사용자 지정 이벤트가 발생했음을 알릴 수 있습니다.
구문
NTSTATUS IoReportTargetDeviceChange(
[in] PDEVICE_OBJECT PhysicalDeviceObject,
[in] PVOID NotificationStructure
);
매개 변수
[in] PhysicalDeviceObject
보고되는 디바이스의 PDO에 대한 포인터입니다.
[in] NotificationStructure
사용자 지정 이벤트를 설명하는 호출자가 제공한 TARGET_DEVICE_CUSTOM_NOTIFICATION 구조체에 대한 포인터입니다. PnP 관리자는 이벤트 알림을 위해 등록된 드라이버에 이 구조를 보냅니다.
NotificationStructure. FileObject 는 NULL이어야 합니다. NotificationStructure. 이벤트에는 이벤트에 대한 사용자 지정 GUID가 포함되어야 합니다. NotificationStructure의 다른 필드는 사용자 지정 이벤트에 맞게 채워야 합니다.
PnP 관리자는 NotificationStructure를 채웁니다. 등록자에게 알림을 보낼 때 FileObject 필드입니다.
반환 값
IoReportTargetDeviceChange는 STATUS_SUCCESS 또는 적절한 오류 상태 반환합니다. 가능한 오류 상태 값에는 다음이 포함됩니다.
반환 코드 | 설명 |
---|---|
|
호출자가 시스템 PnP 이벤트(예: GUID_TARGET_DEVICE_QUERY_REMOVE)를 지정했습니다. 이 루틴은 사용자 지정 이벤트에만 사용됩니다. |
설명
IoReportTargetDeviceChange가 PnP 관리자에게 디바이스에서 사용자 지정 이벤트가 발생했음을 알린 후 PnP 관리자는 디바이스에서 알림을 위해 등록된 드라이버에 이벤트 알림을 보냅니다. 이 루틴을 사용하여 GUID_TARGET_DEVICE_REMOVE_COMPLETE 같은 시스템 PnP 이벤트를 보고하지 마세요.
사용자 지정 디바이스 이벤트를 정의하는 드라이버는 IoReportTargetDeviceChange 를 호출하여 PnP 관리자에게 사용자 지정 이벤트가 발생했음을 알릴 수 있습니다. 사용자 지정 알림은 볼륨 레이블 변경과 같은 이벤트에 사용할 수 있습니다.
드라이버는 교착 상태를 방지하기 위해 이 루틴 대신 이 루틴의 비동기 형식인 IoReportTargetDeviceChangeAsynchronous를 호출해야 합니다.
특정 커널 모드 구성 요소는 이 동기 루틴을 호출할 수 있습니다. 예를 들어 파일 시스템은 구성 요소가 단독 액세스를 위해 볼륨을 열려고 할 때 IoReportTargetDeviceChange 를 호출하여 "볼륨에서 벗어나기" 사용자 지정 이벤트를 보고할 수 있습니다. 파일 시스템 볼륨에 알림을 등록하는 클라이언트는 PnP 알림 콜백 루틴에서 단독 열기를 요청하지 않도록 주의해야 합니다.
사용자 지정 알림 구조에는 자체 GUID가 있는 드라이버 정의 이벤트가 포함됩니다. 드라이버 작성기는 Microsoft Windows SDK 포함된 Uuidgen.exe 또는 Guidgen.exe 사용하여 GUID를 생성할 수 있습니다.
IoReportTargetDeviceChange의 호출자는 시스템 스레드의 컨텍스트에서 IRQL = PASSIVE_LEVEL 실행되어야 합니다. IRQL > PASSIVE_LEVEL 대상 디바이스 변경을 보고하려면 IoReportTargetDeviceChangeAsynchronous를 호출합니다.
IoReportTargetDeviceChange 는 Windows 98/Me에서 지원되지 않습니다. STATUS_NOT_IMPLEMENTED 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL(설명 섹션 참조) |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |