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。 例如,您的驅動程式可能會執行下列動作:
- 呼叫 停止,並指定 WdfIoTargetLeaveSentIoPendingAction 值。
- 判斷目標是否應該繼續處理 I/O 要求。
- 如果目標應該繼續,請呼叫 IWDFIoTargetStateManagement::Start。 否則,請使用 WdfIoTargetCancelSentIoAction 值再次呼叫 Stop。
例子
下列程式代碼範例示範 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 |