Set Process Name/Id to newly created NBL in wfp

Hello All,

We have a WFP callout driver that receives packets at a transport layer and reinjects after processing at a network layer. Most of our packet processing is at the Userland service. Whenever we get a packet at callout, we redirect packet bytes and some metadata info like IP, Port, direction, etc.

Once processing is done at user mode, we either send a packet to our tunnel or redirect back to our driver for reinjection (bypass). We create new NBL (FwpsAllocateNetBufferAndNetBufferList0) and reinject back using either FwpsInjectNetworkSendAsync0 or FwpsInjectNetworkReceiveAsync0.

As reinjected NBL is created by our driver, actual metadata information for NBL is lost and all below drivers get process name as SYSTEM. Is there any way, we can add process information (name or id) to newly created NBL?

Please feel free to redirect if this is already explained. Thanks for the help and support. Apologies if I missed adding any required information.