支援通訊協定驅動程式和篩選驅動程式中的Header-Data分割
NDIS 6.0 和更新版本的通訊協定驅動程式和篩選驅動程式必須支援在非連續緩衝區中接收標頭和資料指示。
您不得假設 NET_BUFFER結構中 只有單一 MDL。 不需要通訊協定驅動程式和篩選驅動程式,才能執行任何支援標頭資料分割註冊的特定專案。 但是,驅動程式接收處理常式代碼必須在 MDL 鏈結中處理多個 MDL,而且必須使用下列 NDIS MDL 宏來存取 MDL 鏈結:
使用分割緩衝區時,與NET_BUFFER結構相關聯的資料長度 (NET_BUFFER_DATA結構成員) 會分割成多個 MDL。 例如,如果通訊協定驅動程式嘗試在第一個 MDL 中存取整個資料緩衝區,則驅動程式可能會存取不正確資料。
注意 在接收指示呼叫返回迷你埠驅動程式之後,迷你埠驅動程式可以回收標頭 MDL。 在接收指示呼叫返回迷你埠驅動程式之後,過度處理驅動程式或其用戶端不得存取標頭 MDL。 即使迷你埠驅動程式未指出具有NDIS_RECEIVE_FLAGS_RESOURCES狀態的已接收資料,也適用這項限制。