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