ReactOS  0.4.12-dev-432-g3463b2d
apc2.c
Go to the documentation of this file.
1 
2 #include <windows.h>
3 #include <stdio.h>
4 
6  LPVOID lpArg,
7  DWORD dwTimerLowValue,
8  DWORD dwTimerHighValue )
9 {
10  printf("APC Callback %lu\n", *(PDWORD)lpArg);
11 }
12 
13 
14 int main()
15 {
16  HANDLE hTimer;
17  BOOL bSuccess;
19  DWORD value = 1;
20 
21  hTimer = CreateWaitableTimer(NULL, FALSE, NULL );
22 
23  if (!hTimer)
24  {
25  printf("CreateWaitableTimer failed!\n");
26  return 0;
27  }
28 
29  DueTime.QuadPart = -(LONGLONG)(5 * 10000000);
30 
32  hTimer,
33  &DueTime,
34  2001 /*interval (using an odd number to be able to find it easy in kmode) */,
36  &value /*callback argument*/,
37  FALSE );
38 
39  if (!bSuccess)
40  {
41  printf("SetWaitableTimer failed!\n");
42  return 0;
43  }
44 
45  for (;value <= 10; value++ )
46  {
47  SleepEx(INFINITE, TRUE /*alertable*/ );
48  }
49 
50  CloseHandle( hTimer );
51  return 0;
52 }
53 
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:398
_In_ LARGE_INTEGER DueTime
Definition: kefuncs.h:524
#define CALLBACK
Definition: compat.h:27
VOID CALLBACK TimerApcProc(LPVOID lpArg, DWORD dwTimerLowValue, DWORD dwTimerHighValue)
Definition: apc2.c:5
static BOOLEAN bSuccess
Definition: drive.cpp:417
smooth NULL
Definition: ftsmooth.c:416
int64_t LONGLONG
Definition: typedefs.h:66
DWORD WINAPI SleepEx(IN DWORD dwMilliseconds, IN BOOL bAlertable)
Definition: synch.c:748
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD * PDWORD
Definition: pedump.c:68
#define CreateWaitableTimer
Definition: winbase.h:3575
#define INFINITE
Definition: serial.h:102
BOOL WINAPI SetWaitableTimer(IN HANDLE hTimer, IN const LARGE_INTEGER *pDueTime, IN LONG lPeriod, IN PTIMERAPCROUTINE pfnCompletionRoutine OPTIONAL, IN OPTIONAL LPVOID lpArgToCompletionRoutine, IN BOOL fResume)
Definition: synch.c:382
int main()
Definition: apc2.c:14
LONGLONG QuadPart
Definition: typedefs.h:112
#define printf
Definition: config.h:203