REQUEST_POWER_COMPLETE 콜백 함수(wdm.h)

PowerCompletion 콜백 루틴은 전원 IRP 처리를 완료합니다.

구문

REQUEST_POWER_COMPLETE RequestPowerComplete;

void RequestPowerComplete(
  [in]           PDEVICE_OBJECT DeviceObject,
  [in]           UCHAR MinorFunction,
  [in]           POWER_STATE PowerState,
  [in, optional] PVOID Context,
  [in]           PIO_STATUS_BLOCK IoStatus
)
{...}

매개 변수

[in] DeviceObject

완료된 전원 IRP에 대한 대상 DEVICE_OBJECT 대한 포인터입니다.

[in] MinorFunction

전원 IRP의 부 함수 코드를 지정합니다. 자세한 내용은 설명 섹션에서 지원되는 IRP_MN_XXX 코드 목록을 참조하세요.

[in] PowerState

PoRequestPowerIrp 루틴에 전달된 디바이스전원 상태 또는 시스템 전원 상태를 지정합니다.

[in, optional] Context

PoRequestPowerIrp에 전달된 컨텍스트에 대한 포인터입니다.

[in] IoStatus

완료된 IRP의 IO_STATUS_BLOCK 구조체에 대한 포인터입니다.

반환 값

없음

설명

전원 IRP를 보내는 드라이버는 다른 모든 드라이버가 IRP를 완료한 후 추가 작업을 수행해야 할 수 있습니다. 이 경우 송신 드라이버는 IRP를 할당하는 PoRequestPowerIrp 루틴을 호출하는 동안 PowerCompletion 콜백 루틴을 등록해야 합니다.

드라이버의 PowerCompletion 콜백 루틴은 IRP_MN_SET_POWER, IRP_MN_QUERY_POWER 및 IRP_MN_WAIT_WAKE 부 IRP 코드가 있는 IRP_MJ_POWER IRP에만 사용됩니다. 자세한 내용은 디바이스 전원 상태에 대한 IRP_MN_QUERY_POWER 또는 IRP_MN_SET_POWER 보내기대기/절전 모드 해제 콜백 루틴을 참조하세요.

I/O 관리자는 I/O 관리자가 IRP를 스택 아래로 전달할 때 다른 드라이버에서 설정한 모든 IoCompletion 루틴을 호출한 후에만 보내는 드라이버의 PowerCompletion 루틴을 호출합니다. PowerCompletion 루틴은 다른 모든 드라이버가 IRP를 완료한 후 IRP의 보낸 사람에게 필요한 추가 작업을 수행합니다. PowerCompletion 루틴은 IRP를 해제해서는 안 됩니다. 그러면 전원 관리자가 이 작업을 수행합니다.

PowerCompletion 루틴은 IRQL = PASSIVE_LEVEL 또는 IRQL = DISPATCH_LEVEL 호출됩니다.

예제

PowerCompletion 콜백 루틴을 정의하려면 먼저 정의 중인 콜백 루틴의 유형을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾을 수 있으며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 라는 MyPowerCompletionPowerCompletion 콜백 루틴을 정의하려면 다음 코드 예제와 같이 REQUEST_POWER_COMPLETE 형식을 사용합니다.

REQUEST_POWER_COMPLETE MyPowerCompletion;

그런 다음 다음과 같이 콜백 루틴을 구현합니다.

_Use_decl_annotations_
VOID
  MyPowerCompletion(
    PDEVICE_OBJECT DeviceObject,
    UCHAR MinorFunction,
    POWER_STATE PowerState,
    PVOID Context,
    PIO_STATUS_BLOCK IoStatus
    )
  {
      // Function body
  }

REQUEST_POWER_COMPLETE 함수 형식은 Wdm.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 _Use_decl_annotations_ 주석을 추가해야 합니다. 주석을 _Use_decl_annotations_ 사용하면 헤더 파일의 REQUEST_POWER_COMPLETE 함수 형식에 적용되는 주석이 사용됩니다. 함수 선언에 대한 요구 사항에 대한 자세한 내용은 WDM 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요. 에 대한 _Use_decl_annotations_자세한 내용은 함수 동작 주석 지정을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL IRQL <= DISPATCH_LEVEL 호출됩니다(주의 섹션 참조).

추가 정보

DEVICE_OBJECT

IO_STATUS_BLOCK

IRP_MJ_POWER

IRP_MN_QUERY_POWER

IRP_MN_SET_POWER

IRP_MN_WAIT_WAKE

IoCompletion

PoRequestPowerIrp