Windows Kernel Sockets and QoS

Hi guys,

Currently, I am working on implementation of Windows Driver in Kernel Mode using WDF frameworkhttps: (more specifically - KMDF). One of the functionalities driver has to support is sending and receiving TCP packets with some custom payload. I found out that it is possible to do networking from Windows Kernel using Windows Kernel Socketshttps: What I need is not only simple TCP packet exchanging between driver and remote host, but also having control over the QoS. Preferred way to control QoS is by manipulating DSCP IP header fieldhttps:. One way to do this in windows driver using Windows Kernel Sockets is to create raw socket and then manually create, not only payload data I want to send to remote host, but also IP header. According to official Microsoft documentations, this approach has its limitations:

1) TCP packets couldn’t be sent with raw windows sockets, only datagrams (is this true?!)

2) Application that uses raw sockets has to be run with administrator privileges.

In user-application, it is easy to set DSCP IP header field using qWAVE componenthttps:. But qWAVE is not available in kernel-space.

How can we set DSCP field from windows kernel driver when driver sends tcp packets using WSK?

Kind regards,

Nikola Simic

The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Any opinions expressed are mine and do not necessarily represent the opinions of the Company. Emails are susceptible to interference. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is strictly prohibited and may be unlawful. If you have received this message in error, do not open any attachments but please notify the Endava Service Desk on (+44 (0)870 423 0187), and delete this message from your system. The sender accepts no responsibility for information, errors or omissions in this email, or for its use or misuse, or for any act committed or omitted in connection with this communication. If in doubt, please verify the authenticity of the contents with the sender. Please rely on your own virus checkers as no responsibility is taken by the sender for any damage rising out of any bug or virus infection.

Endava Limited is a company registered in England under company number 5722669 whose registered office is at 125 Old Broad Street, London, EC2N 1AR, United Kingdom. Endava Limited is the Endava group holding company and does not provide any services to clients. Each of Endava Limited and its subsidiaries is a separate legal entity and has no liability for another such entity’s acts or omissions.</https:></https:></https:></https:>