ULONGLONG performanceFrequency = 0;
ULONGLONG performanceCounter = KeQueryPerformanceCounter(&performanceFrequency);
ULONGLONG ticksMicroSeconds = 1000000 * performanceCounter / performanceFrequency;
I implemented the following in a test version(http://forum.redump.org/post/78821/#p78821).
LARGE_INTEGER freq = {}, current = {}, end = {};
QueryPerformanceFrequency(&freq);
double time = 0;
QueryPerformanceCounter(¤t);
(Read the CD multiple times)
QueryPerformanceCounter(&end);
time = static_cast<double>(end.QuadPart - current.QuadPart) * 1000 / static_cast<double>(freq.QuadPart);