etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: #include etisserant@49: etisserant@49: void timer_notify() etisserant@49: { etisserant@49: struct _timeb timebuffer; etisserant@49: etisserant@49: _ftime( &timebuffer ); etisserant@49: CURRENT_TIME.tv_sec = timebuffer.time; etisserant@49: CURRENT_TIME.tv_nsec = timebuffer.millitm * 1000000 etisserant@49: __run(); etisserant@49: } etisserant@49: etisserant@49: int main(int argc,char **argv) etisserant@49: { etisserant@49: HANDLE hTimer = NULL; etisserant@49: LARGE_INTEGER liDueTime; etisserant@49: etisserant@49: liDueTime.QuadPart = -10000 * maxval(common_ticktime__,1);; etisserant@49: etisserant@49: // Create a waitable timer. etisserant@49: hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer"); etisserant@49: if (NULL == hTimer) etisserant@49: { etisserant@49: printf("CreateWaitableTimer failed (%d)\n", GetLastError()); etisserant@49: return 1; etisserant@49: } etisserant@49: etisserant@49: __init(); etisserant@49: etisserant@49: // Set a timer to wait for 10 seconds. etisserant@49: if (!SetWaitableTimer(hTimer, &liDueTime, common_ticktime__, NULL, NULL, 0)) etisserant@49: { etisserant@49: printf("SetWaitableTimer failed (%d)\n", GetLastError()); etisserant@49: return 2; etisserant@49: } etisserant@49: etisserant@49: while(1){ etisserant@49: // Wait for the timer. etisserant@49: if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0) etisserant@49: { etisserant@49: printf("WaitForSingleObject failed (%d)\n", GetLastError()); etisserant@49: break; etisserant@49: } etisserant@49: timer_notify(); etisserant@49: } etisserant@49: etisserant@49: __cleanup(); etisserant@49: etisserant@49: return 0; etisserant@49: }