Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 lines
5.4 KiB

///*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;
};
};