以非同步方式傳送 I/O 要求
您必須先格式化要求,才能以非同步方式將 I/O 要求傳送至 I/O 目標。 下表列出驅動程式可以呼叫的 I/O 目標物件方法,以格式化 I/O 要求。
方法 | 目的 |
---|---|
格式化讀取要求 |
|
格式化寫入要求 |
|
格式化裝置控制要求 |
|
格式化內部裝置控制要求 |
|
格式化非標準內部裝置控制要求 |
若要以非同步方式傳送 I/O 要求,您的驅動程式必須:
格式化要求。
使用上表中所列的其中一種方法來格式化您的要求。 如需如何使用這些方法的詳細資訊,請參閱方法的參考頁面。
註冊 CompletionRoutine 回呼函式。
如果您以非同步方式傳送要求,通常希望架構在另一個驅動程式完成每個要求時通知驅動程式。 您的驅動程式應該定義 CompletionRoutine 回呼函式,並藉由呼叫 WdfRequestSetCompletionRoutine加以註冊。 如需詳細資訊,請參閱 完成 I/O 要求。
傳送要求。
驅動程式格式化要求並註冊 CompletionRoutine 回呼函式之後,您的驅動程式必須呼叫 WdfRequestSend。 此方法可讓您根據 RequestOptions 參數中設定的旗標,以同步或非同步方式傳送要求。 如需同步傳送 I/O 要求的更簡單方式,請參閱 同步傳送 I/O 要求。 如需如何取得非同步要求或呼叫 WdfRequestSend所傳送之任何要求的完成狀態的相關資訊,請參閱 完成 I/O 要求。
呼叫 WdfRequestSend 以傳送 I/O 要求的驅動程式可以稍後嘗試取消要求。 如需詳細資訊,請參閱 取消 I/O 要求。
某些驅動程式可能會針對每個要求呼叫 WdfRequestSend 一次以上,將單一 I/O 要求傳送至多個裝置,因而傳送至多個 I/O 目標。 這些驅動程式必須在第一個驅動程式之後呼叫 WdfRequestChangeTarget 之前呼叫 WdfRequestSend ,以確認要求可以傳送至下一個 I/O 目標。