Origiating send requests

Hello. Help me please.
I want to initiate a send request (NdisFSendNetBufferLists()) from inside a DeviceIoControl routineof Ndis filter driver. At the same time, I want to set some information in the NET_BUFFER_LIST structure to indicate that this package was created in my filter driver, for later use in the Complete function. Where can I save this information. In NET_BUFFER_LIST->context or NET_BUFFER_LIST->NetBufferListInfo.

What must be the _ID parameter for NET_BUFFER_LIST_INFO macro, when that NET_BUFFER_LIST was originated by Ndis filter driver.How to assign, that NET_BUFFER_LIST was originated from my filter driver, and after use that information inside complete routine. Thanks

That’s not what the _Id parameter is for. The NetBufferListInfo member of the NET_BUFFER_LIST structure is basically a big anonymous structure that contains different things at different times. The _Id parameter specifies which element of that structure you want to read or write. If you look at <ndis.h> in “typedef enum _NDIS_NET_BUFFER_LIST_INFO”, that is the list of things you can fetch, by passing one of the enums as the _Id parameter.

Note that I’m not an NDIS guy – I was able to figure this out by reading the .H file. Nothing beats going straight to the source.

1 Like

Thank you mister. Tim_Roberts. I already understood it. But where can I save the information that some send request is initiated by me. I need this information in the NdisSendNetBufferListsComplete function.

Hi all.
I initiated NdisSendNetBufferLists from the DeviceIoControl routine. Therefore, I don’t need to call the top-level driver completion function (NdisSendNetBufferListsComplete) for these packages. Where can I store the information inside the NetBufferLists structure that this packet was initiated by the filter driver and I must not pass it to top-level drivers. Thanks