오디오 디바이스 클래스 비활성 타이머 구현

PortCls 시스템 드라이버는 시스템의 전원 유휴 검색 기능을 활용하여 오디오 클라이언트에 대한 비활성 타이머를 구현합니다. PortCls는 두 개의 시간 제한 값과 원하는 유휴 전원 상태를 초기화할 때 타이머에 프로그래밍합니다. PortCls는 디바이스의 모든 액세스(예: I/O 및 속성 액세스)를 모니터링하고 각 액세스에서 타이머 수를 효과적으로 다시 설정합니다. 타이머 시간이 초과되면 시스템은 전원 IRP에 디바이스를 원하는 유휴 상태로 배치하도록 요청합니다. 디바이스가 유휴 상태로 전환되면 PortCls는 새 액세스 작업이 발생할 경우 디바이스를 백업합니다.

PortCls에는 유휴 시간 제한 및 유휴 전원 상태에 대한 하드 코딩된 기본값이 포함되어 있습니다. 하드웨어 공급업체는 필요에 따라 시스템 레지스트리의 드라이버별 키에 고유한 값을 작성하여 기본값을 재정의할 수 있습니다. 이러한 방식으로 공급업체는 디바이스에 가장 적합한 전원 유휴 매개 변수 값을 선택할 수 있습니다.

공급업체는 다음 전원 유휴 매개 변수의 기본값을 재정의할 수 있습니다.

  • ConservationIdleTime

    이 매개 변수는 시스템이 전원 보존 모드에서 실행 중일 때 유휴 시간 제한 간격을 지정합니다. 시스템이 배터리 전원으로 실행 중일 때 일반적으로 사용되는 모드입니다. 이 매개 변수의 기본값은 0으로, 보존 모드에서 전원 유휴 타이머를 사용하지 않도록 설정합니다. 하드웨어 공급업체는 다음과 같이 inf 파일을 사용하여 값을 설정할 수 있습니다.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
    

앞의 INF 파일 조각은 ConservationIdleTime에 대해 "1e"의 16진수(16진수) 값을 표시하며 이는 30초 유휴 시간 제한과 동일합니다.

FLG_ADDREG_BINVALUETYPE

다른 매개 변수는 레지스트리 키가 추가되는 방법을 제어하는 데 사용됩니다. 예를 들어 %REG_BINARY%는 데이터가 "원시" 데이터로 저장됨을 나타냅니다. 자세한 내용은 INF AddReg 지시문을 참조하세요.

  • PerformanceIdleTime

    이 매개 변수는 시스템이 성능 모드에서 실행 중일 때 유휴 시간 제한 간격을 지정합니다. 이 모드는 일반적으로 시스템이 AC 전원에서 실행 중일 때 사용됩니다. 이 매개 변수의 기본값은 0으로, 성능 모드에서 전원 유휴 타이머를 사용하지 않도록 설정합니다.

    하드웨어 공급업체는 다음과 같이 inf 파일을 사용하여 값을 설정할 수 있습니다.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
    

    키의 값은 제한 시간 간격(초)을 지정합니다. 이 예제에서 2c,01 값은 300초 또는 5분입니다.

  • IdlePowerState

    이 매개 변수는 유휴 시간 제한 기간이 만료되는 경우 디바이스가 배치될 전원 상태를 지정합니다. 이 매개 변수의 기본값은 디바이스 전원 상태 D3에 해당하는 3이며, 이는 전원이 가장 낮은 디바이스 저전력 상태입니다. 하드웨어 공급업체는 다음과 같이 inf 파일을 사용하여 값을 설정할 수 있습니다.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
    

    키에 배치된 값은 디바이스 전원 상태 D0, D1, D2 또는 D3에 각각 해당하는 0, 1, 2 또는 3이어야 합니다.

세 개의 전원 유휴 레지스트리 키는 디바이스 설치 INF 파일이 만드는 경우에만 존재합니다. 전원 유휴 타이머를 구성하기 전에 PortCls는 레지스트리에서 드라이버별 전원 유휴 매개 변수를 검색하려고 시도합니다. PortCls는 레지스트리에서 찾을 수 없는 전원 유휴 매개 변수 대신 기본값을 사용합니다. 앞에서 설명한 대로 기본 전원 유휴 매개 변수 값은 유휴 타이머를 사용하지 않도록 설정합니다.

ConservationIdleTime, PerformanceIdleTimeIdlePowerState 매개 변수를 지정하는 방법에 대한 자세한 내용은 PoRegisterDeviceForIdleDetection의 마지막 세 호출 매개 변수 정의를 참조하세요.

예제

예를 들어 하드웨어 공급업체는 오디오 디바이스에 대해 다음 전원 유휴 매개 변수를 지정할 수 있습니다. ConservationIdleTime = 0x0000001e(30초), PerformanceIdleTime = 0x0000012c(300초) 및 IdlePowerState = 0x00000003(디바이스 전원 상태 D3). 이러한 설정을 사용하도록 설정하기 위해 디바이스 설치 파일에는 다음 지시문이 포함된 INF AddReg 섹션 이 포함될 수 있습니다.

[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00

추가 정보

PoRegisterDeviceForIdleDetection