86 lines
2.8 KiB
Plaintext
86 lines
2.8 KiB
Plaintext
// RefClock.idl : IDL source for RefClock.dll
|
|
//
|
|
|
|
// This file will be processed by the MIDL tool to
|
|
// produce the type library (RefClock.tlb) and marshalling code.
|
|
|
|
//=====================================================================
|
|
//=====================================================================
|
|
// time information
|
|
//
|
|
// This represents a time (either reference or stream) in 100ns units
|
|
// The class library contains a CRefTime helper class
|
|
// that supports simple comparison and arithmetic operations
|
|
//=====================================================================
|
|
//=====================================================================
|
|
|
|
|
|
// Win32 HANDLEs have to be cast to these as the MIDL compiler doesn't
|
|
// like the HANDLE type or in fact anything remotely associated with
|
|
// them. If this ever gets ported to a MAC environment then these will
|
|
// have to become an alertable synchronisation object that it supports
|
|
|
|
//typedef DWORD_PTR HSEMAPHORE;
|
|
//typedef DWORD_PTR HEVENT;
|
|
|
|
typedef unsigned long HSEMAPHORE;
|
|
typedef unsigned long HEVENT;
|
|
typedef __int64 REFERENCE_TIME;
|
|
typedef double REFTIME;
|
|
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
[
|
|
object,
|
|
uuid(56a86897-0ad4-11ce-b03a-0020af0ba770),
|
|
|
|
helpstring("IReferenceClock Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IReferenceClock : IUnknown
|
|
{
|
|
// get the time now
|
|
HRESULT GetTime(
|
|
[out] REFERENCE_TIME *pTime
|
|
);
|
|
|
|
// ask for an async notification that a time has elapsed
|
|
HRESULT AdviseTime(
|
|
[in] REFERENCE_TIME baseTime, // base reference time
|
|
[in] REFERENCE_TIME streamTime, // stream offset time
|
|
[in] HEVENT hEvent, // advise via this event
|
|
[out] DWORD_PTR * pdwAdviseCookie // where your cookie goes
|
|
);
|
|
|
|
// ask for an async periodic notification that a time has elapsed
|
|
HRESULT AdvisePeriodic(
|
|
[in] REFERENCE_TIME startTime, // starting at this time
|
|
[in] REFERENCE_TIME periodTime, // time between notifications
|
|
[in] HSEMAPHORE hSemaphore, // advise via a semaphore
|
|
[out] DWORD_PTR * pdwAdviseCookie // where your cookie goes
|
|
);
|
|
|
|
// cancel a request for notification
|
|
HRESULT Unadvise(
|
|
[in] DWORD_PTR dwAdviseCookie);
|
|
};
|
|
|
|
[
|
|
uuid(600A1B0F-038E-48CD-8EAE-0E2CFA9D0FD4),
|
|
version(1.0),
|
|
helpstring("RefClock 1.0 Type Library")
|
|
]
|
|
library REFCLOCKLib
|
|
{
|
|
importlib("stdole2.tlb");
|
|
|
|
[
|
|
uuid(CF8767F3-7913-4F90-A279-4CED5BF64B4F),
|
|
helpstring("ReferenceClock Class")
|
|
]
|
|
coclass ReferenceClock
|
|
{
|
|
[default] interface IReferenceClock;
|
|
};
|
|
};
|