EVT_WDF_USB_READERS_FAILED回呼函式 (wdfusb.h)

[適用於 KMDF 和 UMDF]

驅動程式的 EvtUsbTargetPipeReadersFailed 事件回呼函式會通知驅動程式連續讀取器在處理讀取要求時回報錯誤。

語法

EVT_WDF_USB_READERS_FAILED EvtWdfUsbReadersFailed;

BOOLEAN EvtWdfUsbReadersFailed(
  [in] WDFUSBPIPE Pipe,
  [in] NTSTATUS Status,
  [in] USBD_STATUS UsbdStatus
)
{...}

參數

[in] Pipe

架構管道物件的句柄。

[in] Status

管道 I/O 目標傳回的 NTSTATUS 值

[in] UsbdStatus

管道 I/O 目標傳回 的USBD_STATUS類型狀態值。

傳回值

EvtUsbTargetPipeReadersFailed 事件回呼函式會傳回布爾值,如果為 TRUE,則會導致架構重設 USB 管道,然後重新啟動連續讀取器。 如果此函式傳回 FALSE,架構不會重設裝置或重新啟動連續讀取器。

備註

若要註冊 EvtUsbTargetPipeReadersFailed 回呼函式,驅動程式必須將函式的位址放在 WDF_USB_CONTINUOUS_READER_CONFIG 結構中。 如需何時新增此函式指標的資訊,請參閱 WDF_USB_CONTINUOUS_READER_CONFIG_INIT的一節。

如果驅動程式已建立 USB 管道的連續讀取器,如果驅動程式的 I/O 目標在完成讀取要求時,架構會呼叫驅動程式的 EvtUsbTargetPipeReadersFailed 回呼函式。 (如果 I/O 目標成功完成要求,架構會呼叫驅動程式的 EvtUsbTargetPipeReadComplete 回呼函式。)

在架構呼叫驅動程式的 EvtUsbTargetPipeReadersFailed 回呼函式之前,它會嘗試取消所有進行中的讀取要求。 當架構呼叫 EvtUsbTargetPipeReadersFailed 回呼函式時,不會進行讀取要求。 架構不會在 EvtUsbTargetPipeReadersFailed 回呼函式傳回之前,將任何其他讀取要求排入佇列。

如需架構如何同步處理 對 EvtUsbTargetPipeReadersFailed 回呼函式的呼叫與其他回呼函式的資訊,請參閱 EvtUsbTargetPipeReadComplete 的一節。

EvtUsbTargetPipeReadersFailed 回呼函式不得呼叫 WdfIoTargetStop 來停止連續讀取器的 USB 目標。 (事實上,在 EvtUsbTargetPipeReadersFailed 回呼函式中呼叫 WdfIoTargetStop 會導致死結。) 此外,回呼函式不得呼叫 WdfIoTargetStart 來重新啟動連續讀取器。 相反地,如果回呼函式傳回 TRUE,架構會重新啟動讀取器。 如需何時呼叫 WdfIoTargetStartWdfIoTargetStop 以取得連續讀取器的詳細資訊,請參閱 使用 USB 管道

如果驅動程式未提供 EvtUsbTargetPipeReadersFailed 回呼函式,且驅動程式的 I/O 目標回報錯誤,架構會重設 USB 管道並重新啟動連續讀取器。

如需 EvtUsbTargetPipeReadersFailed 回呼函式和 USB I/O 目標的詳細資訊,請參閱 USB I/O 目標

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfusb.h (包含 Wdf.h)
IRQL PASSIVE_LEVEL

另請參閱

EvtUsbTargetPipeReadComplete

WDF_USB_CONTINUOUS_READER_CONFIG