Hopefully you've read the previous entry with the QOS2 sample. Here are the answers to questions you might have.

  1. What header file do I need to include? qos2.h
  2. Is this only for user-mode applications? yes it is. However, leave us a comment if you need a kernel mode QOS API. We'll want to learn more about your scenario.
  3. What library do I link against? qwave.lib
  4. What DLL will this pull into my application? qwave.dll
  5. QOSCreateHandle returns a file handle; can I attach it to a I/O completion port? yes, you can. Since some of the other calls take OVERLAPPED structures, you can use a completion port for asynchronous completions.
  6. Why do you set the QoSFlowID variable to 0 before calling QOSAddSocketToFlow? Because 0 signifies that you want a new flow. You could use another value to refer to an existing flow (which you would have created earlier). More about this later.
  7. Why did you use the QOS_NON_ADAPTIVE_FLOW flag? Because this is a non-adaptive scenario. More about this later.
  8. What is the flowtype QOSTrafficTypeExcellentEffort? It's one of the flow type  the QOS subsystem will recognize. It maps to a set of DSCP and, if applicable, 802.1p values. Gabe wrote about the different flowtypes in his post about WMM recently.

Next we'll describe what else you can do with a non-adaptive flow.

- Mathias Jourdain