IWDFDevice2::StopIdle 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
StopIdle 메서드는 디바이스가 작동 중(D0) 전원 상태에 있어야 한다는 것을 프레임워크에 알릴 수 있습니다.
통사론
HRESULT StopIdle(
[in] BOOL WaitForD0
);
매개 변수
[in] WaitForD0
StopIdle 반환되는 시기를 나타내는 부울 값입니다. TRUE 경우 지정된 디바이스가 D0 디바이스 전원 상태를 입력한 후에만 반환됩니다. FALSE 메서드는 즉시 반환됩니다.
반환 값
StopIdle 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
호출 드라이버는 디바이스의 전원 정책 소유자아닙니다. |
|
디바이스가 이미 작동 상태로 돌아왔습니다. |
|
디바이스 오류가 발생하여 디바이스가 D0 전원 상태를 입력할 수 없습니다. |
이 메서드는 Winerror.h에 포함된 다른 값 중 하나를 반환할 수 있습니다.
발언
디바이스가 유휴 상태가 될 때 저전력 상태로 전환할 수 있는 경우 드라이버는 때때로 StopIdle 호출하여 디바이스를 작동(D0) 상태로 되돌리거나 저전력 상태로 전환하지 못하도록 해야 할 수 있습니다.
디바이스가 유휴 상태이고 프레임워크가 디바이스의 전원 관리 I/O 큐에 I/O 요청을 배치할 때 드라이버가 StopIdle 호출할 필요가 없습니다. 또한 디바이스가 유휴 상태이고 절전 모드 해제 신호를 감지할 때 드라이버는 StopIdle 호출할 필요가 없습니다. 두 경우 모두 프레임워크는 버스 드라이버에 디바이스의 전원 상태를 D0으로 복원하도록 요청합니다.
일반적으로 드라이버는 전원 관리 I/O 큐에서 가져오는 I/O 요청을 처리할 때 StopIdle 호출할 필요가 없지만 호출이 허용됩니다. 그러나 전원 관리형 I/O 큐에서 I/O 요청을 처리할 때 드라이버는 WaitForD0 매개 변수를 TRUE 설정해서는 안 됩니다.
드라이버가 전원 관리형 I/O 큐 외부에서 수신한 요청으로 인해 디바이스에 액세스해야 하는 경우 드라이버가 StopIdle 호출해야 합니다. 예를 들어 드라이버는 디바이스에 액세스해야 하는 드라이버 정의 인터페이스 또는 WMI 요청을 지원할 수 있습니다. 이 경우 드라이버가 디바이스에 액세스하기 전에 디바이스가 작동 상태이고 드라이버가 디바이스 액세스를 완료할 때까지 디바이스가 작동 상태로 유지되는지 확인해야 합니다.
StopIdle 호출하면 시스템이 작동 중(S0) 상태인 경우 디바이스가 작동(D0) 상태로 전환됩니다. 드라이버가 iWDFDevice2::ResumeIdle 호출할 때까지 디바이스는 작동 상태로 유지되며, 이때 프레임워크는 유휴 상태로 유지되는 경우 디바이스를 저전력 상태로 배치할 수 있습니다.
프레임워크가 드라이버의 IPnpCallback::OnD0Entry 콜백 메서드를 처음으로 호출하기 전에 StopIdle 호출하지 마세요.
StopIdle 호출하면 시스템이 S0(작동 중) 상태인 경우에만 유휴 디바이스를 작업 상태로 복원할 수 있습니다. 드라이버가 WaitForD0 매개 변수를 TRUE설정된 StopIdle 호출할 때 시스템이 저전력 상태로 전환되면 시스템이 S0 상태로 돌아갈 때까지 함수가 반환되지 않습니다.
StopIdle 대한 모든 호출은 결국 ResumeIdle호출되어야 합니다. 그렇지 않으면 디바이스가 다시 유휴 상태가 되면 저전력 상태로 돌아가지 않습니다. StopIdle 대한 호출은 중첩될 수 있으므로 ResumeIdle 대한 호출 수는 StopIdle대한 호출 수와 같아야 합니다.
StopIdle 및 ResumeIdle대한 자세한 내용은 UMDF 기반 드라이버 지원 유휴 Power-Down 참조하세요.
예제
다음 코드 예제에서는 IWDFDevice2 인터페이스를 가져온 다음 StopIdle 호출합니다. StopIdle 디바이스가 D0 디바이스 전원 상태가 되면 반환됩니다.
IWDFDevice2 *pIWDFDevice2 = NULL;
HRESULT hr;
//
// Get a pointer to the IWDFDevice2 interface.
//
hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
(void**) &pIWDFDevice2);
if (SUCCEEDED(hr))
{
hr = pIWDFDevice2->StopIdle(TRUE);
}
...
SAFE_RELEASE(pIWDFDevice2);
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.9 |
헤더 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |