IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion 方法 (wudfusb.h)

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

驅動程式的 OnReaderCompletion 事件回呼函式會通知驅動程式連續讀取器已成功完成讀取要求。

語法

void OnReaderCompletion(
  [in] IWDFUsbTargetPipe *pPipe,
  [in] IWDFMemory        *pMemory,
  [in] SIZE_T            NumBytesTransferred,
  [in] PVOID             Context
);

參數

[in] pPipe

驅動程式已啟用連續讀取器的USB管道 IWDFUsbTargetPipe 介面指標。

[in] pMemory

讀取緩衝區的 IWDFMemory 介面指標,其中包含從USB管道讀取的數據。

[in] NumBytesTransferred

讀取緩衝區包含的位元組數目。

[in] Context

驅動程式提供之內容資訊的指標,該驅動程式先前稱為 IWDFUsbTargetPipe2::ConfigureContinuousReader 時所提供的內容資訊。

傳回值

備註

若要註冊 IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion 回呼函式,您的驅動程式必須在呼叫 IWDFUsbTargetPipe2::ConfigureContinuousReader 時提供驅動程式 IUsbTargetPipeContinuousReaderCallbackReadComplete 介面的指針。

如果驅動程式已建立 USB 管道的連續讀取器,則架構會在每次驅動程式的 I/O 目標成功完成讀取要求時呼叫驅動程式的 OnReaderCompletion 回呼函式。 如果 I/O 目標未順利完成要求,架構會呼叫驅動程式的 IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 回呼函式。

若要存取包含從裝置讀取數據的緩衝區,驅動程式可以呼叫 IWDFMemory::GetDataBuffer。 架構會將數據寫入緩衝區,在 IWDFUsbTargetPipe2::ConfigureContinuousReaderHeaderLength 參數所定義的標頭之後。 請注意, IWDFMemory::GetDataBuffer 傳回的指標會指向標頭的開頭,但 OnReaderCompletion 回呼函式的 NumBytesTransferred 參數不包含標頭的長度。

根據預設,架構會在 OnReaderCompletion 回呼函式傳回之後刪除緩衝區的記憶體物件。 不過,您可能會希望記憶體物件在回呼函式傳回之後保持有效。 例如,您可能希望驅動程式將記憶體物件的介面指標儲存在架構管道對象 的內容空間 中,讓驅動程式可以在回呼函式傳回之後處理記憶體物件的內容。 若要延長記憶體物件的存留期,回呼函式必須呼叫緩衝區的 IWDFMemory::AddRef 方法。 接著,驅動程式必須呼叫緩衝區的 IWDFMemory::Release 方法,讓架構可以刪除物件。

架構會根據下列規則同步處理 OnReaderCompletionIUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 回呼函式的呼叫:

  • 這些回呼函式不會針對個別 USB 管道同時執行。
  • 如果驅動程式為多個 USB 管道建立多個連續讀取器,且有多個 OnReaderCompletionOnReaderFailure 回呼函式,則多個回呼函式可以同時執行。
  • 如果驅動程式在呼叫 IWDFUsbTargetPipe2::ConfigureContinuousRead (er 時指定了預設的 NumPendingReads 值,或指定大於 1) 的任何 NumPendingReads 值,而且當 OnReaderCompletion 回呼函式執行時,如果讀取要求完成,架構可以在回呼函式傳回之前再次呼叫 OnReaderCompletion 回呼函式。
  • 架構不會與任何其他回呼函式同步處理這些回呼函式。
當您的驅動程式呼叫 IWDFUsbTargetPipe2::ConfigureContinuousReader 時,它可以指定 IObjectCleanup::OnCleanup 回呼函式。 在 OnReaderCompletion 回呼函式傳回之後,架構會在嘗試刪除記憶體物件時呼叫該回呼函式。

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

規格需求

需求
終止支援 UMDF 2.0 和更新版本中無法使用。
目標平台 桌面
最低UMDF版本 1.9
標頭 wudfusb.h (包括 Wudfusb.h)

另請參閱

IUsbTargetPipeContinuousReaderCallbackReadComplete

IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure