>>The least sleep interval that we can give inside the loop is 10ms, that equates to around 100Hz. If we remove the sleep statement the entire windows OS hangs up
<< That is not right, only the threads with priority below the SPI driver will be slowed down. 255 is lowest priority, 0 is highest , SPI default is about 103.
Also i would not use "Sleep" use "WaitForSingleObject" (with timeout) this is more accurate.
>> How can we acquire data at the rate of 100 Khz and and above?
<< What did you adjust in registry? And what did you measure?