130 lines
5.4 KiB
Plaintext
130 lines
5.4 KiB
Plaintext
///*M*
|
||
// INTEL CORPORATION PROPRIETARY INFORMATION
|
||
// This software is supplied under the terms of a licence agreement or
|
||
// nondisclosure agreement with Intel Corporation and may not be copied
|
||
// or disclosed except in accordance with the terms of that agreement.
|
||
// Copyright (c) 1997 Intel Corporation. All Rights Reserved.
|
||
//
|
||
// Filename : CBTimer.idl
|
||
// Purpose : Defines the ICBTimer interface in IDL to compile to .h files.
|
||
// Contents : ICBTimer interface specification.
|
||
// ICBCallback interface specification.
|
||
//*M*/
|
||
|
||
//*I*
|
||
// Name : ICBTimer
|
||
// Purpose : Defines this interface, which is used to register an
|
||
// object for callbacks, setup callbacks, and delay callbacks.
|
||
// Context : This interface is used by any COM object that wishes to
|
||
// schedule callbacks.
|
||
// Notes : All of the methods exposed by this interface are
|
||
// backed by a mutex which may timeout. This avoids
|
||
// potential deadlock problems. An application using
|
||
// a CBTimer object should be prepared for methods
|
||
// to return unsuccessfully due to such timeouts.
|
||
//*I*/
|
||
[
|
||
object,
|
||
uuid(CD117003-7004-11D0-9CCF-00A0C9081C19),
|
||
helpstring("ICBTimer Interface"),
|
||
pointer_default(unique)
|
||
]
|
||
interface ICBTimer : IUnknown
|
||
{
|
||
import "oaidl.idl";
|
||
|
||
// This method is used to register an object to receive callbacks from
|
||
// the CBTimer object. An IUnknown for the object is passed in as well as
|
||
// a context variable which is returned with all callbacks. A CBTimer object
|
||
// can only track one registered object at a time, so if an object wishes to
|
||
// change the dwObjectContext value, it needs to call UnRegisterObject()
|
||
// first, followed by RegisterObject() again.
|
||
HRESULT RegisterObject(
|
||
[in] IUnknown *pIUnknown, // Pointer to the IUnknown of the object
|
||
// which wishes to receive callbacks.
|
||
// Will be QI'd for the ICBTimerCallback interface
|
||
// defined below.
|
||
[in] DWORD *pdwObjectContext); // This is an uninterpreted context
|
||
// value that is returned with all callbacks
|
||
// to this address.
|
||
|
||
// Request a callback for the object registered via RegisterObject().
|
||
// Multiple callbacks may be registered.
|
||
HRESULT RequestCallback(
|
||
[in] DWORD dwDelay, // Delay, in milliseconds, from the current
|
||
// time, after which a callback is requested to occur.
|
||
[in] DWORD *pdwCallbackContext, // This is an uninterpreted context
|
||
// value that is returned with the callback
|
||
// returned for this particular duration.
|
||
[out] DWORD **ppdwCallbackID); // A nonce which identifies this callback,
|
||
// which can be used by the app to cancel the callback.
|
||
|
||
// Cancel the indicated callback.
|
||
HRESULT CancelCallback(
|
||
[in] DWORD *pdwCallbackID); // Cancel a callback previously requested
|
||
// via RequestCallback().
|
||
|
||
// Change the delay and context value for this callback.
|
||
HRESULT DelayCallback(
|
||
[in] DWORD *pdwCallbackID, // A nonce which identifies this callback
|
||
[in] DWORD dwDelay, // New delay, in milliseconds, from the current
|
||
// time, after which a callback is requested to occur.
|
||
[in] DWORD *pdwCallbackContext); // This is an uninterpreted context
|
||
// value that is returned with the callback
|
||
// returned for this particular duration.
|
||
|
||
// Cancel all callbacks for this object and release any interfaces held.
|
||
HRESULT UnRegisterObject(void);
|
||
}; // End interface ICBTimer.
|
||
|
||
|
||
//*I*
|
||
// Name : ICBCallback
|
||
// Purpose : Defines this interface, which is used to deliver
|
||
// callbacks registered via the ICBTimer interface.
|
||
// Context : This interface is queried for the by the CBTimer
|
||
// COM object in response to a call to ICBTimer::RegisterObject().
|
||
// This interface is called when a callback scheduled via
|
||
// ICBTimer::RequestCallback() occurs.
|
||
//*I*/
|
||
[
|
||
object,
|
||
uuid(CD117008-7004-11D0-9CCF-00A0C9081C19),
|
||
helpstring("ICBCallback Interface"),
|
||
pointer_default(unique)
|
||
]
|
||
interface ICBCallback : IUnknown
|
||
{
|
||
import "oaidl.idl";
|
||
|
||
// This method is used to deliver a callback after a timeout occurs.
|
||
HRESULT Callback(
|
||
[in] DWORD *pdwObjectContext, // This is the uninterpreted context
|
||
// value that is set in RegisterObject().
|
||
[in] DWORD *pdwCallbackContext); // This is the uninterpreted context
|
||
// value that is set in RequestCallback().
|
||
}; // ICBCallback Interface definition
|
||
|
||
|
||
[
|
||
uuid(C8801950-AC9D-11d0-82A1-00AA00B5CA1B),
|
||
version(1.0),
|
||
helpstring("CBTimer 1.0 Type Library")
|
||
]
|
||
library CBTIMERLib
|
||
{
|
||
importlib("stdole2.tlb");
|
||
|
||
[
|
||
uuid(CD117007-7004-11D0-9CCF-00A0C9081C19),
|
||
helpstring("CBTimer Class")
|
||
]
|
||
coclass CCBTimer
|
||
{
|
||
[default] interface ICBTimer;
|
||
[default, source] interface ICBCallback;
|
||
};
|
||
|
||
};
|
||
|