오디오 디바이스 클래스 비활성 타이머 구현
Windows Server 2003 SP1, Windows XP SP2 이상에서 PortCls 시스템 드라이버는 시스템의 전원 유휴 검색 기능을 활용하여 오디오 클라이언트에 대한 비활성 타이머를 구현합니다. PortCls는 두 개의 시간 제한 값과 원하는 유휴 전원 상태를 초기화할 때 타이머에 프로그래밍합니다. PortCls는 디바이스의 모든 액세스(예: I/O 및 속성 액세스)를 모니터링하고 각 액세스에서 타이머 수를 효과적으로 다시 설정합니다. 타이머 시간이 초과되면 시스템에서 전원 IRP를 요청하여 디바이스를 원하는 유휴 상태로 만듭니다. 디바이스가 유휴 상태에 놓이면 PortCls는 새 액세스 활동이 발생할 경우 디바이스를 백업합니다.
PortCls에는 유휴 시간 제한 및 유휴 전원 상태에 대한 하드 코드된 기본값이 포함됩니다. 하드웨어 공급업체는 필요에 따라 시스템 레지스트리의 드라이버별 키에 고유한 값을 작성하여 기본값을 재정의할 수 있습니다. 이러한 방식으로 공급업체는 디바이스에 가장 적합한 전원 유휴 매개 변수 값을 선택할 수 있습니다.
공급업체는 다음 전원 유휴 매개 변수의 기본값을 재정의할 수 있습니다.
ConservationIdleTime
이 매개 변수는 시스템이 전원 보존 모드에서 실행 중일 때 유휴 시간 제한 간격을 지정합니다. 시스템이 배터리 전원으로 실행 중일 때 일반적으로 사용되는 모드입니다. 이 매개 변수의 기본값은 0이며, 이 값은 보존 모드에서 전원 유휴 타이머를 사용하지 않도록 설정합니다. 하드웨어 공급업체는 다음 드라이버별 레지스트리 키에 DWORD 값을 작성하여 기본값을 재정의할 수 있습니다.
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\xxxx\yyyy\PowerSettings\ConservationIdleTimexxxx는 미디어 클래스 GUID(시스템 제공 디바이스 설정 클래스 참조)를 나타내고 yyyy는 미디어 클래스 GUID에서 드라이버 하위 키의 이름을 나타냅니다. 키 값은 제한 시간 간격(초)을 지정합니다.
PerformanceIdleTime
이 매개 변수는 시스템이 성능 모드에서 실행 중일 때 유휴 시간 제한 간격을 지정합니다. 이 모드는 시스템이 AC 전원에서 실행 중일 때 일반적으로 사용되는 모드입니다. 이 매개 변수의 기본값은 성능 모드에서 전원 유휴 타이머를 사용하지 않도록 설정하는 0입니다. 하드웨어 공급업체는 다음 드라이버별 레지스트리 키에 DWORD 값을 작성하여 기본값을 재정의할 수 있습니다.
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\xxxx\yyyy\PowerSettings\PerformanceIdleTime다시 말하지만, xxxx 는 미디어 클래스 GUID를 나타내고 yyyy 는 드라이버의 하위 키 이름을 나타냅니다. 키 값은 제한 시간 간격(초)을 지정합니다.
IdlePowerState
이 매개 변수는 유휴 시간 제한 기간이 만료되는 경우 디바이스가 배치될 전원 상태를 지정합니다. 이 매개 변수의 기본값은 디바이스 전원 상태 D0(전체 전원)에 해당하는 0입니다. 하드웨어 공급업체는 다음 드라이버별 레지스트리 키에 DWORD 값을 작성하여 기본값을 재정의할 수 있습니다.
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\xxxx\yyyy\PowerSettings\IdlePowerState다시 말하지만, xxxx 는 미디어 클래스 GUID를 나타내고 yyyy 는 드라이버의 하위 키 이름을 나타냅니다. 키에 배치된 값은 각각 디바이스 전원 상태 D0, D1, D2 또는 D3에 해당하는 0, 1, 2 또는 3이어야 합니다.
세 개의 전원 유휴 레지스트리 키는 디바이스 설치 INF 파일이 만드는 경우에만 존재합니다. 전원 유휴 타이머를 구성하기 전에 PortCls는 레지스트리에서 드라이버별 전원 유휴 매개 변수를 검색하려고 시도합니다. PortCls는 레지스트리에서 찾을 수 없는 전원 유휴 매개 변수 대신 기본값을 사용합니다. 앞에서 설명한 대로 기본 전원 유휴 매개 변수 값은 유휴 타이머를 사용하지 않도록 설정합니다.
ConservationIdleTime, PerformanceIdleTime 및 IdlePowerState 매개 변수를 지정하는 방법에 대한 자세한 내용은 PoRegisterDeviceForIdleDetection의 마지막 세 호출 매개 변수 정의를 참조하세요.
예제
예를 들어 하드웨어 공급업체는 오디오 디바이스에 대해 다음 전원 유휴 매개 변수를 지정할 수 있습니다. ConservationIdleTime = 0x0000001e(30초), PerformanceIdleTime = 0x0000012c(300초) 및 IdlePowerState = 0x00000003(디바이스 전원 상태 D3). 이러한 설정을 사용하도록 설정하기 위해 디바이스 설치 파일에는 다음 지시문이 포함된 INF AddReg 섹션 이 포함될 수 있습니다.
[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,1,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,1,2c,01,00,00
HKR,PowerSettings,IdlePowerState,1,03,00,00,00
HKR은 레지스트리에서 드라이버의 루트 키를 나타냅니다.
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\xxxx\yyyy
다시 말하지만, xxxx 는 미디어 클래스 GUID를 나타내고 yyyy 는 드라이버의 하위 키 이름을 나타냅니다. PowerSettings 하위 키는 루트 키의 경로 이름을 기준으로 지정됩니다.