전원 관리를 위한 디바이스 개체 플래그 설정
AddDevice 루틴에서 각 드라이버는 디바이스 개체(필터 디바이스 개체(DO), 기능 디바이스 개체(FDO) 또는 PDO(물리적 디바이스 개체))를 만들고 디바이스 개체의 DO_XXX 플래그를 설정하여 디바이스 특성 및 드라이버 구성을 설명합니다. 다음 디바이스 개체 플래그는 전원 관리와 관련이 있습니다.
플래그 | 설명 |
---|---|
DO_POWER_INRUSH | 디바이스가 처음 켜져 있을 때 디바이스에서 그린 현재 가 급증했음을 나타냅니다. 이 서지 또는 "inrush"는 짧은 기간 동안 지속되며, 그 후 디바이스에서 그린 현재 작동 수준이 낮아집니다. |
DO_POWER_PAGABLE | 드라이버가 페이지할 수 있음을 나타냅니다. Windows 2000부터 페이징할 수 있는 드라이버는 DO_POWER_PAGABLE 플래그를 설정해야 합니다. 전원 관리자는 IRQL = PASSIVE_LEVEL 이러한 드라이버를 호출합니다. 페이지 가능한 드라이버에 대한 자세한 내용은 드라이버 페이지 가능 만들기를 참조하세요. |
디바이스 개체 플래그는 일반적으로 버스 드라이버가 디바이스에 대한 PDO를 만들 때 설정됩니다. 그러나 일부 함수 드라이버는 AddDevice 루틴의 일부로 이러한 플래그의 값을 변경해야 할 수 있습니다. Windows Vista부터 운영 체제에서는 디바이스 스택 내의 모든 디바이스 개체에 동일한 전원 관련 플래그가 설정되어 있지 않아도됩니다. 그러나 Windows Server 2003, Windows XP 및 Windows 2000에서는 디바이스 스택의 모든 디바이스 개체에 동일한 전원 관련 플래그가 설정되어 있어야 합니다.
Windows 2000부터 페이징 경로에 있는 디바이스 드라이버는 DO_POWER_PAGABLE 플래그를 설정해서는 안됩니다. 드라이버는 페이징 파일의 I/O 작업에 참여하는 경우 "페이징 경로"에 있습니다. 이 플래그를 설정하지 않은 드라이버는 IRQL = DISPATCH_LEVEL 호출할 수 있어야 합니다. 자세한 내용은 디스패치 루틴에 대한 제약 조건을 참조하세요.
일반적으로 드라이버는 DO_POWER_PAGABLE 플래그에 대한 버스 드라이버의 값을 변경해서는 안 되며, 하위 수준 드라이버가 이 플래그를 지운 경우 드라이버는 이 플래그를 설정해서는 안 됩니다. PnP 페이징 요청과 관련된 전환을 처리할 때(일반적으로 IRP_MN_DEVICE_USAGE_NOTIFICATION 요청이 있는 IRP_MJ_PNP 대한 응답으로) 스토리지 드라이버는 플래그 설정 및 지우기를 신중하게 시퀀싱해야 합니다.
시작 시 전원이 필요한 디바이스의 드라이버는 DO_DEVICE_INITIALIZING 플래그를 지우기 전에 디바이스 개체에서 DO_POWER_INRUSH 플래그를 설정해야 합니다. 일반적으로 PDO(버스 드라이버)의 디바이스 스택에 있는 드라이버 하나만 디바이스에 대한 DO_POWER_INRUSH 플래그를 설정해야 합니다. 플래그는 전원 공급 장치의 과부하를 방지하기 위해 이러한 디바이스를 한 번에 하나씩, 다른 디바이스와 순서대로 전원을 켜야 한다는 것을 전원 관리자에게 알 수 있습니다. 전원 관리자는 지정된 시간에 시스템의 어느 곳에서나 하나의 전원 인러시브 IRP만 활성화되도록 합니다.
Windows Vista부터 드라이버는 DO_POWER_PAGABLE 플래그와 DO_POWER_INRUSH 플래그를 모두 설정할 수 있습니다. Windows Server 2003, Windows XP 및 Windows 2000에서 드라이버는 DO_POWER_PAGABLE 플래그와 DO_POWER_INRUSH 플래그를 모두 설정할 수 없습니다.