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::ConfigureContinuousReader 的 HeaderLength 參數所定義的標頭之後。 請注意, IWDFMemory::GetDataBuffer 傳回的指標會指向標頭的開頭,但 OnReaderCompletion 回呼函式的 NumBytesTransferred 參數不包含標頭的長度。
根據預設,架構會在 OnReaderCompletion 回呼函式傳回之後刪除緩衝區的記憶體物件。 不過,您可能會希望記憶體物件在回呼函式傳回之後保持有效。 例如,您可能希望驅動程式將記憶體物件的介面指標儲存在架構管道對象 的內容空間 中,讓驅動程式可以在回呼函式傳回之後處理記憶體物件的內容。 若要延長記憶體物件的存留期,回呼函式必須呼叫緩衝區的 IWDFMemory::AddRef 方法。 接著,驅動程式必須呼叫緩衝區的 IWDFMemory::Release 方法,讓架構可以刪除物件。
架構會根據下列規則同步處理 OnReaderCompletion 和 IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 回呼函式的呼叫:
- 這些回呼函式不會針對個別 USB 管道同時執行。
- 如果驅動程式為多個 USB 管道建立多個連續讀取器,且有多個 OnReaderCompletion 和 OnReaderFailure 回呼函式,則多個回呼函式可以同時執行。
- 如果驅動程式在呼叫 IWDFUsbTargetPipe2::ConfigureContinuousRead (er 時指定了預設的 NumPendingReads 值,或指定大於 1) 的任何 NumPendingReads 值,而且當 OnReaderCompletion 回呼函式執行時,如果讀取要求完成,架構可以在回呼函式傳回之前再次呼叫 OnReaderCompletion 回呼函式。
- 架構不會與任何其他回呼函式同步處理這些回呼函式。
如需 OnReaderCompletion 回呼函式和 USB I/O 目標的詳細資訊,請參閱 處理 USB I/O 目標。
規格需求
需求 | 值 |
---|---|
終止支援 | UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.9 |
標頭 | wudfusb.h (包括 Wudfusb.h) |
另請參閱
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure