Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Doba přerušení je doba od posledního spuštění systému v 100 nanosekundových intervalech. Počet přerušení začíná nulou, když se systém spustí a v každém hodině se přeruší o délku hodinového zaškrtnutí. Přesná délka odškrtávacích hodin závisí na základním hardwaru a může se lišit mezi systémy.
Na rozdíl od systémového časuse počet přerušení nevztahuje na úpravy uživatelům ani službou Windows Time Service, takže je lepší volbou pro měření krátkých dob trvání. Aplikace, které vyžadují větší přesnost než počet přerušení, by měly používat časovač s vysokým rozlišením. Pomocí funkce QueryPerformanceFrequency načtěte frekvenci časovače vysokého rozlišení a funkci QueryPerformanceCounter k načtení hodnoty čítače.
QueryInterruptTime, QueryInterruptTimePrecise, QueryUnbiasedInterruptTimea QueryUnbiasedInterruptTimePrecise funkce lze použít k načtení počtu přerušení a času přerušení. Nestranná doba přerušení znamená, že se počítá pouze čas, kdy je systém v pracovním stavu – proto počet přerušení není "zkreslený" časem, kdy systém tráví ve spánku nebo hibernaci.
Windows Server 2008, Windows Vista, Windows Server 2003 a Windows XP/2000: Funkce QueryUnbiasedInterruptTime je dostupná od windows 7 a Windows Serveru 2008 R2.
Rozlišení časovače nastavené funkcí timeBeginPeriod a timeEndPeriod ovlivňuje rozlišení funkcí QueryInterruptTime a QueryUnbiasedInterruptTime. Zvýšení rozlišení časovače se však nedoporučuje, protože může snížit celkový výkon systému a zvýšit spotřebu energie tím, že procesoru zabrání v vstupu do stavu úspory energie. Místo toho by aplikace měly používat časovač s vysokým rozlišením.
Poznámka
QueryInterruptTime, QueryInterruptTimePrecise, QueryUnbiasedInterruptTimea QueryUnbiasedInterruptTimePrecise functions vytváří různé výsledky při ladění ("zaškrtnuté") buildy Windows, protože počet přerušení a počet záškrtů jsou rozšířené přibližně o 49 dnů. To pomáhá identifikovat chyby, ke kterým nemusí docházet, dokud systém dlouho neběží.
Následující příklad ukazuje, jak načíst počet přerušení voláním QueryInterruptTime, QueryInterruptTimePrecise, QueryUnbiasedInterruptTimea QueryUnbiasedInterruptTimePrecise funkcí. Propojení s knihovnou OneCore.lib při vytváření konzolové aplikace, která tyto funkce volá.
#include "stdafx.h"
#include <windows.h>
#include <realtimeapiset.h>
void InterruptTimeTest()
{
ULONGLONG InterruptTime;
ULONGLONG PreciseInterruptTime;
ULONGLONG UnbiasedInterruptTime;
ULONGLONG PreciseUnbiasedInterruptTime;
// The interrupt time that QueryInterruptTime reports is based on the
// latest tick of the system clock timer. The system clock timer is
// the hardware timer that periodically generates interrupts for the
// system clock. The uniform period between system clock timer
// interrupts is referred to as a system clock tick, and is typically
// in the range of 0.5 milliseconds to 15.625 milliseconds, depending
// on the hardware platform. The interrupt time value retrieved by
// QueryInterruptTime is accurate within a system clock tick.
QueryInterruptTime(&InterruptTime);
printf("Interrupt time: %.7f seconds\n",
(double)InterruptTime/(double)10000000);
// Precise interrupt time is more precise than the interrupt time that
// QueryInterruptTime reports because the functions that report
// precise interrupt time read the timer hardware directly.
QueryInterruptTimePrecise(&PreciseInterruptTime);
printf("Precise interrupt time: %.7f seconds\n",
(double)PreciseInterruptTime/(double)10000000);
// Unbiased interrupt time means that only time that the system is in
// the working state is counted. Therefore, the interrupt-time count
// is not biased by time the system spends in sleep or hibernation.
QueryUnbiasedInterruptTime(&UnbiasedInterruptTime);
printf("Unbiased interrupt time: %.7f seconds\n",
(double)UnbiasedInterruptTime/(double)10000000);
// QueryUnbiasedInterruptTimePrecise gets an interrupt-time count
// that is both unbiased and precise, as defined in the comments
// included earlier in this example.
QueryUnbiasedInterruptTimePrecise(&PreciseUnbiasedInterruptTime);
printf("Precise unbiased interrupt time: %.7f seconds\n",
(double)PreciseUnbiasedInterruptTime/(double)10000000);
}
int main(void)
{
void InterruptTimeTime();
InterruptTimeTest();
return(0);
}
Pokud chcete načíst uplynulý čas, který představuje režim spánku nebo hibernace, použijte funkci GetTickCount nebo GetTickCount64 nebo použijte čítač výkonu doby obnovení systému. Tento čítač výkonu lze načíst z dat výkonu v klíči registru HKEY_PERFORMANCE_DATA. Vrácená hodnota je 8 bajtová hodnota. Další informace naleznete v tématu Čítače výkonu.
Související témata