共用方式為


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 回呼函式,則架構會在佇列的基礎裝置離開其運作狀態時呼叫它。 架構會針對驅動程式在停止佇列時擁有的每個 I/O 要求呼叫此回呼函式。 驅動程式必須執行下列其中一項,來完成、取消或延後處理每個要求:

如果您的驅動程式呼叫 stopAcknowledge ,則必須從其 IQueueCallbackIoStop::OnIoStop 回呼函式內呼叫此方法。

如果驅動程式未針對 IQueueCallbackIoStop::OnIoStop 回呼函式收到的每個要求呼叫 IWDFIoRequest::CompleteStopAcknowledge,則架構不允許裝置保持其運作狀態。 這種無所作為可能會防止系統進入其休眠狀態或其他低系統電源狀態。

當驅動程式的 IQueueCallbackIoStop::OnIoStop 回呼函式 StopAcknowledge時,可以將 Requeue 參數設定為 TRUEFALSE

  • 重新排入佇列TRUE 會導致架構將要求放回其 I/O 佇列。

    當基礎裝置回到其運作中 (D0) 狀態時,架構會將要求重新傳遞至驅動程式。

  • [重新排入佇列] 設定為 [FALSE 會導致要求擁有權維持在驅動程式上。 驅動程式必須停止進行任何需要硬體存取的 I/O 處理。

    當基礎裝置回到其運作中 (D0) 狀態時,架構會呼叫驅動程式的 IQueueCallbackIoResume::OnIoResume 回呼函式,讓驅動程式可以繼續處理要求。

如果驅動程式先前已呼叫 IWDFIoRequest::MarkCancelable,則必須先呼叫 IWDFIoRequest::UnmarkCancelable,再呼叫 stopAcknowledge,並將 Requeue 設為 true

在呼叫 stopAcknowledge之前,驅動程式 IQueueCallbackIoStop::OnIoStop 回呼函式必須停止所有需要存取基礎裝置的 I/O 要求處理,因為裝置即將進入低功率狀態。

例子

下列程式代碼範例是 IQueueCallbackIoStop::OnIoStop 回呼函式,會檢查收到的要求是否可取消,如果是,則會呼叫 IWDFIoRequest::UnmarkCancelable。 如果 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