共用方式為


IWDFIoTargetStateManagement::Stop 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上對 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旗標,以將要求傳送至目標。 如果驅動程式設定此旗標,驅動程式可以傳送要求,例如要求來重設USB管道(請參閱 IWDFUsbTargetPipe::Reset),在驅動程式呼叫 Stop之後將裝置傳送至裝置。

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

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

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

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

例子

下列程式代碼範例示範 IPnpCallback::OnD0Exit 回呼函式如何呼叫 Stop,如果驅動程式對 USB 管道使用連續讀取器。 (若要查看如何取得 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