PoRegisterDeviceForIdleDetection 함수(ntifs.h)

PoRegisterDeviceForIdleDetection 루틴은 유휴 검색을 사용하거나 취소하고 디바이스에 대한 유휴 시간 제한 값을 설정합니다.

구문

PULONG PoRegisterDeviceForIdleDetection(
  [in] PDEVICE_OBJECT     DeviceObject,
  [in] ULONG              ConservationIdleTime,
  [in] ULONG              PerformanceIdleTime,
  [in] DEVICE_POWER_STATE State
);

매개 변수

[in] DeviceObject

디바이스에 대해 드라이버에서 만든 DEVICE_OBJECT 대한 포인터입니다. Windows 2000 이상 시스템에서 이 매개 변수는 PDO(물리적 디바이스 개체) 또는 FDO(기능 디바이스 개체)를 가리킬 수 있습니다. Windows 98/Me에서 이 매개 변수는 기본 디바이스의 PDO를 가리킵니다.

[in] ConservationIdleTime

시스템 전원 정책이 에너지 절약을 위해 최적화할 때 적용할 제한 시간 값(초)을 설정합니다. 보존 정책이 적용되는 경우 유휴 검색을 사용하지 않도록 설정하려면 0을 지정합니다.

[in] PerformanceIdleTime

시스템 전원 정책이 성능을 최적화할 때 적용할 제한 시간 값(초)을 설정합니다. 성능 정책이 적용되는 경우 유휴 검색을 사용하지 않도록 설정하려면 0을 지정합니다.

[in] State

ConservationIdleTime 또는 PerformanceIdleTime이 충족된 경우 IRP_MN_SET_POWER 요청에서 요청할 디바이스 전원 상태를 지정합니다. 가능한 값은 DEVICE_POWER_STATE 값입니다.

반환 값

PoRegisterDeviceForIdleDetection 은 유휴 검색을 사용하도록 설정되었음을 나타내는 유휴 카운터에 대한 포인터를 반환합니다. 유휴 검색이 비활성화되었거나, 유휴 카운터를 할당할 수 없거나, 시간 제한 값 중 하나 또는 둘 다 유효하지 않음을 나타내기 위해 NULL 을 반환합니다.

설명

PoRegisterDeviceForIdleDetection 을 사용하면 드라이버가 전원 관리자에서 제공하는 유휴 검색 메커니즘을 사용할 수 있습니다. 드라이버는 다음과 같은 이유로 PoRegisterDeviceForIdleDetection 을 호출합니다.

  • 디바이스에 대해 유휴 검색을 사용하도록 설정하고 초기 유휴 시간 제한 값을 설정하려면
  • 디바이스의 유휴 시간 제한 값을 변경하려면
  • 디바이스에 대한 유휴 검색을 사용하지 않도록 설정하려면
유휴 검색을 위해 디바이스를 사용하도록 설정한 후 드라이버는 [PoSetDeviceBusy](.)를 호출합니다. 디바이스가 사용 중일 때마다 /wdm/nf-wdm-posetdevicebusy.md)이 PoRegisterDeviceForIdleDetection에서 반환된 NULL이 아닌 유휴 포인터를 전달합니다. PoSetDeviceBusy를 호출하면 유휴 카운트다운이 다시 시작됩니다. 드라이버가 PoSetDeviceBusyNULL 포인터를 전달해서는 안 됩니다.

디바이스가 현재 유휴 시간 제한 값을 충족할 때마다 전원 관리자는 디바이스 스택의 맨 위에 디바이스 전원 상태 상태를 지정하는 IRP_MN_SET_POWER 요청을 보냅니다. IRP에 대한 응답으로 각 드라이버는 전원 상태 전환 전에 필요한 모든 디바이스별 작업을 수행한 다음 IRP를 다음 하위 드라이버에 전달합니다. IRP가 버스 드라이버에 도달하면 해당 드라이버는 디바이스를 요청된 저전력 상태로 두고 IRP를 완료합니다.

PoRegisterDeviceForIdleDetection은 보존 및 성능 모두에 대한 시간 제한 값을 설정합니다. ConservationIdleTime 값은 시스템 전원 정책이 보존을 위해 최적화할 때 적용됩니다. PerformanceIdleTime 값은 시스템 전원 정책이 성능을 최적화할 때 적용됩니다. 일반적으로 적용 가능한 정책은 전원에 따라 달라집니다. AC 전원으로 실행할 때 시스템은 성능을 최적화하고 배터리를 끄면 시스템이 보존을 최적화합니다.

특정 디바이스는 시간 제한 값을 -1로 지정하여 디바이스 클래스에 대한 표준 전원 정책 제한 시간을 사용할 수 있습니다. 표준 제한 시간 값은 지원되는 표준 디바이스 클래스에 더 나은 시스템 통합을 제공합니다. 현재 WDM은 FILE_DEVICE_DISK 및 FILE_DEVICE_MASS_STORAGE 유형의 디바이스에 대해 이 기능을 지원합니다. 지원되지 않는 유형의 디바이스에 대해 -1이 지정되면 PoRegisterDeviceForIdleDetectionNULL을 반환합니다. (디바이스 유형에 대한 자세한 내용은 디바이스 유형 지정을 참조하세요.)

디바이스당 하나의 유휴 검색만 설정할 수 있습니다. PoRegisterDeviceForIdleDetection에 대한 후속 호출은 유휴 검색 값을 변경합니다.

ConservationIdleTimePerformanceIdleTime이 모두 0이면 이 루틴은 디바이스에 대한 모든 유휴 검색을 취소하고 NULL을 반환합니다.

PoRegisterDeviceForIdleDetection 은 드라이버가 자체 유휴 검색을 수행할 필요가 없도록 해줍니다. 그러나 드라이버는 자체 유휴 검색을 구현할 수도 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntifs.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

IRP

IRP_MN_SET_POWER

PoSetDeviceBusy