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::Start 和 Stop 。 在驅動程式呼叫其中一個函式之後,第一次呼叫傳回之前,它不得呼叫任一函式。
您的驅動程式可以呼叫 Stop 多次,而不需要呼叫 IWDFIoTargetStateManagement::Start。 例如,您的驅動程式可能會執行下列動作:
- 呼叫 Stop 並指定 WdfIoTargetLeaveSentIoPending 的 Action 值。
- 判斷目標是否應該繼續處理 I/O 要求。
- 如果目標應該繼續,請呼叫 IWDFIoTargetStateManagement::Start。 否則,請使用 WdfIoTargetCancelSentIo 的 Action 值再次呼叫 Stop。
如需 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 |