Windows Sleep Function Extremely Slow

I need to have the 1ms timing delay in order to interact with hardware I am using

Windows is the wrong tool for this job.

If you insist on using this wrong tool, you are going to have to make compromises (such as using a busy-wait and accepting the corresponding poor battery life).

You can make Sleep() more accurate using timeBeginPeriod(1) but depending on your hardware peripheral's limits on the "one millisecond" delay -- is that a minimum, maximum, or the middle of some range? -- it still will fail to meet your timing requirement with some non-zero probability.

The timeBeginPeriod function requests a minimum resolution for periodic timers.

The right solution for talking to hardware with tight timing tolerances is an embedded microcontroller which talks to the Windows PC through some very flexible interface such as UART or Ethernet, buffers data, and uses hardware timers to generate signals with very well-defined timing.

In some cases, you might be able to use embedded circuitry already existing within your Windows PC, such as "sound card" functionality.