Hi all.
I’m using NdisAllocateNetBufferListContext to allocate a NET_BUFFER_LIST_CONTEXT for a newly cloned NET_BUFFER_LIST. But this coused a deadlock (IRQL not less than or equal to). For this alocation, I use the NET_BUFFER_LIST_CONTEXT size of the source NET_BUFFER_LIST. I think this function (NdisAllocateNetBufferListContext) is being called at (IRQL>=Dispatchlevel) and the original NET_BUFFER has been unloaded (or part of that structure). So, if I’m right, what should I do? How to temporarily reduce IRQL, and then increase it.
And the second question.
So far I was cloning NET_BUFFER_LIST without any context structure and was sending that newly cloned NBL over the network, insteed of original NBL. As a result, I was able to ping from one host to another. But other more complex protocols didn’t work properly. In particular, I couldn’t see the shared directory on the other host when my driver was loaded. Is it due to missing NET_BUFFER_LIST_CONTEXT data?
Thank you.