windows-nt/Source/XPSP1/NT/net/published/idlole/icbtimer.idl
2020-09-26 16:20:57 +08:00

130 lines
5.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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