Some questions about canceling a send request in my NDIS filter driver

Hello,

I’m writing my filter driver in order to implement personal firewall.
I have three questions about canceling a send request in my filter driver.

It is as in the following.

#1.
I would like to know that NDIS can call also FilterCancelSendNetBufferLists function simultaneously while NDIS is calling FilterSendNetBufferLists function.
Is it possible that NDIS calls FilterCancelSendNetBufferLists function before my filter driver returns FilterSendNetBufferLists function?
In this case, The cancel id that NDIS passed to FilterCancelSendNetBufferLists function is identical to the cancel id for NET_BUFFER_LIST structures that is FilterSendNetBufferLists’s NetBufferLists parameter.

#2.
Both ‘Canceling a Send Request in a Filter Driver’ topic and ‘FilterCancelSendNetBufferLists’ topic describe the operations that FilterCancelSendNetBufferLists function performs.
(Canceling a Send Request in a Filter Driver : http://msdn.microsoft.com/en-us/library/windows/hardware/ff544862(v=vs.85).aspx)
(FilterCancelSendNetBufferLists : http://msdn.microsoft.com/en-us/library/windows/hardware/ff549915(v=vs.85).aspx)

But, there is a little difference.

‘Canceling a Send Request in a Filter Driver’ topic says that a filter driver sets the status field of all unlinked NET_BUFFER_LIST structures to NDIS_STATUS_CANCELLED before calling NdisFSendNetBufferListsComplete function, but the status value is NDIS_STATUS_SEND_ABORTED in ‘FilterCancelSendNetBufferLists’ topic’s remarks.

Which status value is right?

#3.
As you can see above, There is the operations that FilterCancelSendNetBufferLists function performs in ‘FilterCancelSendNetBufferLists’ topic’s remarks.
Can the operations be performed by other context, not FilterCancelSendNetBufferLists function context?

My filter driver just saves the cancel id to a local variable and returns FilterCancelSendNetBufferLists function immediately when NDIS calls FilterCancelSendNetBufferLists function.
Since then, I want to perform the cancel send request operations in other context at any time before completing the send request.

In other words, I hope to handle the cancel send request operations asynchronously because of my filter driver’s design that I want. In this case, is there a problem?

Any help would be appreciated.

Thanks in advance.