共用方式為


IWDFIoTargetStateManagement::Stop 方法 (wudfddi.h)

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #DEE64F6716FF14BF7AC9A9B903AC2D44F 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]

Stop 方法會停止將佇列要求傳送至本機 I/O 目標

語法

HRESULT Stop(
  [in] WDF_IO_TARGET_SENT_IO_ACTION Action
);

參數

[in] Action

WDF_IO_TARGET_SENT_IO_ACTION型別值,識別停止 I/O 目標物件時如何處理已傳送的 I/O。

傳回值

停止 一律會傳回S_OK。

備註

如果您的驅動程式可以偵測到可復原的裝置錯誤,您可能希望驅動程式呼叫 Stop 以暫時停止將要求傳送至本機 I/O 目標,然後稍後呼叫 IWDFIoTargetStateManagement::Start 繼續傳送要求。

此外,如果驅動程式呼叫 IWDFUsbTargetPipe2::ConfigureContinuousReader 來設定 USB 管道的連續讀取器,驅動程式的 IPnpCallback::OnD0Exit 回呼函式必須呼叫 Stop 來停止讀取器。

如果驅動程式已呼叫 Stop,它仍然可以在呼叫 IWDFIoRequest::Send 時設定WDF_REQUEST_OPTION_IGNORE_TARGET_STATE旗標,將要求傳送至目標。 如果驅動程式設定此旗標,驅動程式可以傳送要求,例如在驅動程式呼叫 Stop 之後,將 USB 管道重設 (IWDFUsbTargetPipe::Reset) 裝置。

您的驅動程序必須同步呼叫 IWDFIoTargetStateManagement::StartStop 。 在驅動程式呼叫其中一個函式之後,第一次呼叫傳回之前,它不得呼叫任一函式。

您的驅動程式可以呼叫 Stop 多次,而不需要呼叫 IWDFIoTargetStateManagement::Start。 例如,您的驅動程式可能會執行下列動作:

  1. 呼叫 Stop 並指定 WdfIoTargetLeaveSentIoPendingAction 值。
  2. 判斷目標是否應該繼續處理 I/O 要求。
  3. 如果目標應該繼續,請呼叫 IWDFIoTargetStateManagement::Start。 否則,請使用 WdfIoTargetCancelSentIoAction 值再次呼叫 Stop
如需 停止的詳細資訊,請參閱 控制一般 I/O 目標的狀態

如需 I/O 目標的詳細資訊,請參閱 使用 I/O 目標

範例

下列程式代碼範例示範如果驅動程式對 USB 管道使用連續讀取器, IPnpCallback::OnD0Exit 回呼函式如何呼叫 Stop。 (若要查看如何取得 IWDFIoTargetStateManagement 介面,請參閱 IWDFIoTargetStateManagement::Start.) 的程式代碼範例

HRESULT
CMyDevice::OnD0Exit(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
    HRESULT hr;
    hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
    return hr;
}

規格需求

需求
終止支援 UMDF 2.0 和更新版本中無法使用。
目標平台 桌面
最低UMDF版本 1.5
標頭 wudfddi.h (包括 Wudfddi.h)
Dll WUDFx.dll

另請參閱

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop