00001
00002
00003
00004
00005
00006 #include <streams.h>
00007 #include <limits.h>
00008
00009 #ifdef FILTER_DLL
00010
00011 CFactoryTemplate g_Templates[1] = {
00012 {&CLSID_SystemClock, CSystemClock::CreateInstance}
00013 };
00014
00015 int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
00016 #endif
00017
00018 CUnknown * WINAPI CSystemClock::CreateInstance(LPUNKNOWN pUnk,HRESULT *phr)
00019 {
00020 return new CSystemClock(NAME("System reference clock"),pUnk, phr);
00021 }
00022
00023 CSystemClock::CSystemClock(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *phr) :
00024 CBaseReferenceClock(pName, pUnk, phr)
00025 {
00026 }
00027
00028 STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(
00029 REFIID riid,
00030 void ** ppv)
00031 {
00032 if (riid == IID_IPersist)
00033 {
00034 return GetInterface(static_cast<IPersist *>(this), ppv);
00035 }
00036 else if (riid == IID_IAMClockAdjust)
00037 {
00038 return GetInterface(static_cast<IAMClockAdjust *>(this), ppv);
00039 }
00040 else
00041 {
00042 return CBaseReferenceClock::NonDelegatingQueryInterface(riid, ppv);
00043 }
00044 }
00045
00046 STDMETHODIMP
00047 CSystemClock::GetClassID(CLSID *pClsID)
00048 {
00049 CheckPointer(pClsID,E_POINTER);
00050 ValidateReadWritePtr(pClsID,sizeof(CLSID));
00051 *pClsID = CLSID_SystemClock;
00052 return NOERROR;
00053 }
00054
00055 STDMETHODIMP
00056 CSystemClock::SetClockDelta(REFERENCE_TIME rtDelta)
00057 {
00058 return SetTimeDelta(rtDelta);
00059 }