Since you're using Windows, you should look into using Windows Driver Frameworks (WDF). This is the Windows equivalent to libusb on POSIX-compliant computers.
WDF Reference
Look through the example code (there's a toaster/firefly driver example in there) on how to set up a WDFIOTARGET given a device ID. Use this implementation with your hub, enumerating it upon device insertion.
Then, you'll want to send the IOCTL, IOCTL_USB_GET_NODE_INFORMATION, to the hub represented by a WDFIOTARGET in order to retrieve a USB_NODE_INFORMATION structure.

IOCTL Reference
USB_NODE_INFORMATION Reference
Then, retrieve with the following access pattern:
PUSB_NODE_INFORMATION UsbNodeInfo = NULL;
// retrieve UsbNodeInfo here with your USB_GET_NODE_INFORMATION signal
UCHAR DescriptorType;
DescriptorType = UsbNodeInfo->u.HubInformation.HubDescriptor.bDescriptorType
HubInformation Reference
HubDescriptor Reference
This will retrieve a descriptor type of either 0x2A (3.0) or 0x29 (2.0 or lower). Using this information, you can send the proper IOCTL you want to the device in order to demand a greater amount of current from the hub like so:
if (DescriptorType == 0x2A) {
// handle USB 3.0 current specification here
} else {
// handle USB 2.0 current specification here
}
Hopefully this is enough for you to get started. Enjoy!