What APIs can I use for my specific bandwidth requirements?

I need to know which APIs I can use to do the following:

  • I have an existing process running on a Windows machine (call this app A), which can be any existing process on this Windows machine.
  • I want to encode another application to throttle bandwidth usage A (call it application B).
  • B must be able to throttle the cumulative download and download speeds separately. For example, if A has a maximum of 5 Kbit / s allocated for download, then all A download flows will be limited to 5 Kbit / s.

My requirements:

  • I can not use the kernel mode driver.
  • I need to make this a universal solution, so B can throttle any other process in the system (in other words, I cannot change the source code of A).

I tried to learn this, especially in Stack Overflow, but could not find anything useful for my case:

  • I saw this example of using the wrapper of the ThrottledStream class around the Stream object, which will introduce throttling when it is used, but I need this to be a universal application, so I cannot use this approach (I cannot change the source code A).
  • I saw this question that answers when talking about using the Windows Filtering API. Unfortunately, the requirement that I have is that I absolutely cannot use the kernel mode driver for this, and I understand that this requires the WFP API.

Does anyone know which APIs I can use for my specific bandwidth throttling requirements to force B to throttle bandwidth usage A?

0
source share

Source: https://habr.com/ru/post/979739/


All Articles