10 #ifndef __CAMSchedule__
11 #define __CAMSchedule__
24 DWORD_PTR
AddAdvisePacket(
const REFERENCE_TIME & time1,
const REFERENCE_TIME & time2,
HANDLE h, BOOL periodic );
26 HRESULT
Unadvise(DWORD_PTR dwAdviseCookie);
31 REFERENCE_TIME
Advise(
const REFERENCE_TIME & rtTime );
46 CAdvisePacket * m_next;
47 DWORD_PTR m_dwAdviseCookie;
48 REFERENCE_TIME m_rtEventTime;
49 REFERENCE_TIME m_rtPeriod;
53 CAdvisePacket( __inout_opt CAdvisePacket * next, LONGLONG time ) : m_next(next), m_rtEventTime(time)
56 void InsertAfter( __inout CAdvisePacket * p )
63 {
return m_next == 0; }
65 CAdvisePacket * RemoveNext()
67 CAdvisePacket *
const next = m_next;
68 CAdvisePacket *
const new_next = next->m_next;
78 CAdvisePacket * Next()
const
80 CAdvisePacket * result = m_next;
81 if (result->IsZ()) result = 0;
85 DWORD_PTR Cookie()
const
86 {
return m_dwAdviseCookie; }
94 CAdvisePacket head, z;
96 volatile DWORD_PTR m_dwNextCookie;
97 volatile DWORD m_dwAdviseCount;
112 CAdvisePacket * m_pAdviseCache;
113 DWORD m_dwCacheCount;
114 enum { dwCacheMax = 5 };
116 void Delete( __inout CAdvisePacket * pLink );
128 #endif // __CAMSchedule__