다음을 통해 공유


IWDFIoRequest2::StopAcknowledge 메서드(wudfddi.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.

StopAcknowledge 메서드는 드라이버가 지정된 I/O 요청 처리를 중지했음을 프레임워크에 알릴 수 있습니다.

통사론

void StopAcknowledge(
  [in] BOOL Requeue
);

매개 변수

[in] Requeue

TRUE 경우 프레임워크가 요청을 큐에 다시 큐에 넣도록 하여 프레임워크가 드라이버에 다시 배달하도록 하는 부울 값입니다. FALSE 경우 프레임워크는 요청을 다시 큐에 추가하지 않습니다. 자세한 내용은 다음 설명 섹션을 참조하세요.

반환 값

없음

발언

드라이버가 I/O 큐에 대한 IQueueCallbackIoStop::OnIoStop 콜백 함수를 등록하는 경우 프레임워크는 큐의 기본 디바이스가 작동 중(D0) 상태를 떠날 때 호출합니다. 프레임워크는 큐가 중지될 때 드라이버가 소유하는 모든 I/O 요청에 대해 이 콜백 함수를 호출합니다. 드라이버는 다음 중 하나를 수행하여 각 요청의 처리를 완료, 취소 또는 연기해야 합니다.

  • 드라이버가 요청을 소유하는 경우 IWDFIoRequest::Complete 호출하여 요청을 완료하거나 취소할 수 있습니다.
  • 드라이버가 I/O 대상에 요청을 전달한 경우 IWDFIoRequest::CancelSentRequest 호출하여 요청을 취소할 수 있습니다.
  • 드라이버가 요청 처리를 연기하면 StopAcknowledge호출해야 합니다.
드라이버가 StopAcknowledge호출하는 경우 IQueueCallbackIoStop::OnIoStop 콜백 함수 내에서 이 메서드를 호출해야 합니다.

드라이버가 IQueueCallbackIoStop::OnIoStop 콜백 함수가 수신하는 모든 요청에 대해 IWDFIoRequest::Complete 또는 StopAcknowledge 호출하지 않으면 프레임워크는 디바이스가 작동 중(D0) 상태를 유지하도록 허용하지 않습니다. 이 동작이 실행되지 않으면 시스템이 최대 절전 모드 또는 다른 낮은 시스템 전원 상태를 입력하지 못할 수 있습니다.

드라이버의 IQueueCallbackIoStop::OnIoStop 콜백 함수가 StopAcknowledge 호출하는 경우 Requeue 매개 변수를 TRUE 또는 FALSE 설정할 수 있습니다.

  • 다시 큐에 넣기TRUE 설정하면 프레임워크가 요청을 해당 I/O 큐에 다시 배치합니다.

    기본 디바이스가 작동(D0) 상태로 돌아오면 프레임워크는 드라이버에 요청을 다시 배달합니다.

  • 다시 큐에 설정하여 false 요청의 소유권이 드라이버와 함께 유지됩니다. 드라이버는 하드웨어 액세스가 필요한 I/O 처리 작업을 중지해야 합니다.

    기본 디바이스가 작동(D0) 상태로 돌아오면 프레임워크는 드라이버가 요청을 계속 처리할 수 있도록 드라이버의 IQueueCallbackIoResume::OnIoResume 콜백 함수를 호출합니다.

드라이버가 이전에 IWDFIoRequest::MarkCancelable호출한 경우 RequeueTRUE설정된 StopAcknowledge 호출하기 전에 IWDFIoRequest::UnmarkCancelable 호출해야 합니다.

StopAcknowledge호출하기 전에 드라이버의 IQueueCallbackIoStop::OnIoStop 콜백 함수는 디바이스가 저전력 상태로 들어가려고 하기 때문에 기본 디바이스에 액세스해야 하는 I/O 요청의 모든 처리를 중지해야 합니다.

예제

다음 코드 예제는 수신된 요청을 취소할 수 있는지 확인하고 IWDFIoRequest::UnmarkCancelable 호출하는 IQueueCallbackIoStop::OnIoStop 콜백 함수입니다. IWDFIoRequest::UnmarkCancelable HRESULT_FROM_WIN32(ERROR_OPERATION_ABORTED)를 반환하는 경우 드라이버의 IRequestCallbackCancel::OnCancel 콜백 함수가 요청을 처리하므로 예제가 반환됩니다. 그렇지 않으면 이 예제에서는 StopAcknowledge 호출하고 FALSE 지정하므로 프레임워크는 결국 드라이버의 IQueueCallbackIoResume::OnIoResume 콜백 함수를 호출합니다.

void
CMyReadWriteQueue::OnIoStop(
    __in IWDFIoQueue*  pWdfQueue,
    __in IWDFIoRequest*  pWdfRequest,
    __in ULONG  ActionFlags
    )
{ HRESULT status;

    if (ActionFlags & WdfRequestStopRequestCancelable) {
        status = pWdfRequest->UnmarkCancelable();
        if (status == HRESULT_FROM_WIN32(ERROR_OPERATION_ABORTED)) {
        return;
        }
    }
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = pWdfRequest;

    r2->StopAcknowledge(FALSE);
}

요구 사항

요구
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 바탕 화면
최소 UMDF 버전 1.9
헤더 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

참고 항목

IQueueCallbackIoResume::OnIoResume

IQueueCallbackIoStop::OnIoStop

IWDFIoRequest2