ndis 6 filter driver send NBL crash in NdisFSendNetBufferListsComplete()

I use nids 6 filter driver on Win7X86 to send my customize data to mini port. My code is base on MS sample code and main process as:

  1. In FilterSendNetBufferLists fucton, find the NBL which i want to modify.
  2. Copy this NBL and modify copy data.
  3. Call NdisFSendNetBufferListsComplete to original NBL.
  4. Call NdisFSendNetBufferLists to send copy data which create in steo 2.
  5. In FilterSendNetBufferListsComplete function, check if this NBL is I created then delete and free it. if this NBL is system data jus call NdisFSendNetBufferListsComplete funcion.
    In my test scenes?if i send my customize data, especially if this data is TCP packet, the system will be random blue screen(DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)). VS debug show last execute function is NdisFSendNetBufferListsComplete in step 5. I don’t understand in step 5 NdisFSendNetBufferListsComplete process system data(Check this data is valid), this data i never touched, why crash here?
    My scenes is same as this
    http://www.osronline.com/showThread.CFM?link=225261
    but no solution for it.
    I am dead end too and crazy, so ask help again, can spmebody help me, so thanks…

This means that the driver accessed pageable memory at an IRQL that is too high.

The output of the !analyze -v command is required to see where this happened in the code.