hxengin.h

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 2,615 行 · 第 1/5 页

H
2,615
字号
 *	allows you to setup callbacks which will be executed when a file *	descriptor is ready for reading, writing, or has an exception. *  *  IID_IHXAsyncIOSelection: *  *	{0000010C-0901-11d1-8B06-00A024406D59} *  */DEFINE_GUID(IID_IHXAsyncIOSelection, 0x0000010C, 0x901, 0x11d1, 0x8b, 0x6, 0x0,			0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXAsyncIOSelectionDECLARE_INTERFACE_(IHXAsyncIOSelection, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)		(THIS_					REFIID riid,					void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)		(THIS) PURE;    STDMETHOD_(ULONG32,Release)		(THIS) PURE;    /*     *	IHXAsyncIOSelection methods     */    /************************************************************************     *	Method:     *	    IHXAsyncIOSelection::Add     *	Purpose:     *	    This function will allow you to receive a callback when the     *	    given descriptor is ready for read, write, or has an     *	    exception.  This function is only available on Unix, and is     *	    intended to replace the functionality of select().     */    STDMETHOD(Add)			(THIS_					IHXCallback*	pCallback,					INT32		lFileDescriptor,					UINT32		ulType) PURE;    /************************************************************************     *	Method:     *	    IHXAsyncIOSelection::Remove     *	Purpose:     *	    This function will allow you remove the callback associated     *	    with the given descriptor from the event handler.     *	    This function is only available on Unix, and is intended to     *	    replace the functionality of select().     */    STDMETHOD(Remove)                   (THIS_                                        INT32           lFileDescriptor,					UINT32		ulType) PURE;};/**************************************************************************** *  *  Interface: *  *	IHXUDPMulticastInit *  *  Purpose: *  *	Provides the user with a way to set the TTL for outgoing multicast *	UDP packets.  Usually shared with IHXUDPSocket. *  *  IID_IHXUDPMulticastInit: *  *	{0000010D-0901-11d1-8B06-00A024406D59} *  */DEFINE_GUID(IID_IHXUDPMulticastInit, 0x0000010D, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 			0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXUDPMulticastInitDECLARE_INTERFACE_(IHXUDPMulticastInit, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)		(THIS_					REFIID riid,					void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)		(THIS) PURE;    STDMETHOD_(ULONG32,Release)		(THIS) PURE;    /*     *	IHXUDPMulticastInit methods     *     */     /************************************************************************     *	Method:     *	    IHXUDPMulticastInit::InitMulticast     *	Purpose:     *	    This function will set the TTL (time to live) for the UDP socket     *      so it can be used as a multicast socket, sending packets across     *      the number of routers specified in the ulTTL parameter.       */    STDMETHOD(InitMulticast)		(THIS_    					UINT8	    chTTL) PURE;};/**************************************************************************** *  *  Interface: *  *	IHXInterruptState *  *  Purpose: *  *	This interface is used in Macintosh implementations to inform the *	the client engine when entering & leaving an interupt task. It is *	also used to determine if it is currently at interrupt time. *	Please consult the Macintosh Deferred Task Manager tech notes from Apple *	for information on interrupt tasks. *  *  IID_IHXInterruptState: *  *	{0000010E-0901-11d1-8B06-00A024406D59} *  */DEFINE_GUID(IID_IHXInterruptState, 0x0000010E, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 			0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXInterruptStateDECLARE_INTERFACE_(IHXInterruptState, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)	(THIS_				REFIID riid,				void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)	(THIS) PURE;    STDMETHOD_(ULONG32,Release)	(THIS) PURE;    /*     *  IHXInterruptState methods     */    /************************************************************************     *	Method:     *	    IHXInterruptState::AtInterruptTime     *	Purpose:     *	    This function is called to determine if we are currently at     *	    interrupt task time.     */        STDMETHOD_(HXBOOL,AtInterruptTime)		(THIS) PURE;    /************************************************************************     *	Method:     *	    IHXInterruptState::EnterInterruptState     *	Purpose:     *	    This function is called when starting a deferred/interrupt task     */    STDMETHOD(EnterInterruptState)	(THIS) PURE;    /************************************************************************     *	Method:     *	    IHXInterruptState::LeaveInterruptState     *	Purpose:     *	    This function is called when leaving a deferred/interrupt task     */    STDMETHOD(LeaveInterruptState)	(THIS) PURE;    /************************************************************************     *	Method:     *	    IHXInterruptState::EnableInterrupt     *	Purpose:     *	    This function can be called to enable/disable interrupt time      *	    processsing     */    STDMETHOD(EnableInterrupt)	(THIS_				HXBOOL	bEnable) PURE;        /************************************************************************     *	Method:     *	    IHXInterruptState::IsInterruptEnabled     *	Purpose:     *	    This function can be called to find if the core is currently     *	    interrupt enabled.     */    STDMETHOD_(HXBOOL, IsInterruptEnabled)   (THIS) PURE;};/**************************************************************************** *  *  Interface: *  *	IHXOptimizedScheduler *  *  Purpose: *  *	This interface provides the user with a way of scheduling callbacks *	that will be executed at some time in the future. * *	This interface should ONLY be used if you need accurately timed  *	callbacks. These callbacks should be efficient and should not consume  *	much time/CPU. This is not a thread safe interface. The user has to  *	take care of synchronization in their callbacks. *  *  IID_IHXOptimizedScheduler: *  *	{0000010F-0901-11d1-8B06-00A024406D59} *  */DEFINE_GUID(IID_IHXOptimizedScheduler, 0x0000010F, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 			0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXOptimizedSchedulerDECLARE_INTERFACE_(IHXOptimizedScheduler, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)		(THIS_					REFIID riid,					void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)		(THIS) PURE;    STDMETHOD_(ULONG32,Release)		(THIS) PURE;    /*     *	IHXOptimizedScheduler methods     */    /************************************************************************     *	Method:     *	    IHXOptimizedScheduler::RelativeEnter     *	Purpose:     *	    Schedule a callback to be executed "ms" milliseconds from now     *	    This function is less percise then AbsoluteEnter and should only     *	    be used when accurate timing is not critical.     */    STDMETHOD_(CallbackHandle,RelativeEnter)	(THIS_						IHXCallback* pCallback,						UINT32 ms) PURE;    /************************************************************************     *	Method:     *	    IHXOptimizedScheduler::AbsoluteEnter     *	Purpose:     *	    Schedule a callback to be executed at time "tVal".     */    STDMETHOD_(CallbackHandle,AbsoluteEnter)	(THIS_						IHXCallback* pCallback,						HXTimeval tVal) PURE;    /************************************************************************     *	Method:     *	    IHXOptimizedScheduler::Remove     *	Purpose:     *	    Remove a callback from the scheduler.     */    STDMETHOD(Remove)		(THIS_			    	CallbackHandle Handle) PURE;    /************************************************************************     *	Method:     *	    IHXOptimizedScheduler::GetCurrentSchedulerTime     *	Purpose:     *	    Gives the current time (in the timeline of the scheduler).     */    STDMETHOD_(HXTimeval,GetCurrentSchedulerTime)	(THIS) PURE;};/**************************************************************************** * *  Interface: * *     IHXThreadSafeScheduler * *  Purpose: * *     This interface provides the user with a way of scheduling callbacks *     that will be executed at some time in the future.  This is identical *      to IHXScheduler except the scheduler events are considered thread-safe. * *  IID_IHXThreadSafeScheduler: * *     {00000120-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXThreadSafeScheduler, 0x00000120, 0x901, 0x11d1, 0x8b, 0x6, 0x0,                       0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXThreadSafeSchedulerDECLARE_INTERFACE_(IHXThreadSafeScheduler, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)          (THIS_                                       REFIID riid,                                       void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)         (THIS) PURE;    STDMETHOD_(ULONG32,Release)                (THIS) PURE;    /*     * IHXThreadSafeScheduler methods     */    /************************************************************************     * Method:     *     IHXThreadSafeScheduler::RelativeEnter     * Purpose:     *     Schedule a callback to be executed "ms" milliseconds from now     *     This function is less percise then AbsoluteEnter and should only     *     be used when accurate timing is not critical.     */    STDMETHOD_(CallbackHandle,RelativeEnter)   (THIS_                                               IHXCallback* pCallback,                                               UINT32 ms) PURE;    /************************************************************************     * Method:     *     IHXThreadSafeScheduler::AbsoluteEnter     * Purpose:     *     Schedule a callback to be executed at time "tVal".     */    STDMETHOD_(CallbackHandle,AbsoluteEnter)   (THIS_                                               IHXCallback* pCallback,                                               HXTimeval tVal) PURE;    /************************************************************************     * Method:     *     IHXThreadSafeScheduler::Remove     * Purpose:     *     Remove a callback from the scheduler.     */    STDMETHOD(Remove)          (THIS_                               CallbackHandle Handle) PURE;};/**************************************************************************** * *  Interface: * *     IHXProcessEntryPoint * *  Purpose: * *     This interface is the entry point for an IHXProcess * *  IID_IHXProcessEntryPoint * *     {00000123-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXProcessEntryPoint, 0x00000123, 0x901, 0x11d1, 0x8b, 0x6,            0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXProcessEntryPointDECLARE_INTERFACE_(IHXProcessEntryPoint, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)          (THIS_                                       REFIID riid,                                       void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)         (THIS) PURE;    STDMETHOD_(ULONG32,Release)        (THIS) PURE;    STDMETHOD(Func)                   (THIS_                                       IUnknown* pContext) PURE;};/**************************************************************************** * *  Interface: * *     IHXProcess * *  Purpose: * *     This interface allows you to create new server processes and specify *  an entry point.  It is queried off the context. * *  IID_IHXProcess * *     {00000122-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXProcess, 0x00000122, 0x901, 0x11d1, 0x8b, 0x6, 0x0,                       0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXProcessDECLARE_INTERFACE_(IHXProcess, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)          (THIS_                                       REFIID riid,                                       void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)         (THIS) PURE;    STDMETHOD_(ULONG32,Release)        (THIS) PURE;    STDMETHOD(Start)                   (THIS_                                       const char* pProcessName,                                       IHXProcessEntryPoint* pEntryPoint) PURE;};/**************************************************************************** *  *  Interface: *  *	IHXLoadBalancedListen *  *  Purpose: *  *	This interface is queried off of IHXListenSocket.  It allows *	a plugin to specify that it wants the server to load balance *	multiple instances of itself.  The server will instantiate multiple *	instances of the plugin as needed based on socket / descriptor limits. *	Each plugin instance should attempt to listen on the same port as *	other instances (they will share the port). *  *  IID_IHXLoadBalancedListen: *  *	{00000110-0901-11d1-8B06-00A024406D59} *  */DEFINE_GUID(IID_IHXLoadBalancedListen, 0x00000110, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 			0xa0, 0x24, 0x40, 0x6d, 0x59);#undef  INTERFACE#define INTERFACE   IHXLoadBalancedListenDECLARE_INTERFACE_(IHXLoadBalancedListen, IUnknown){    /*     *  IUnknown methods     */    STDMETHOD(QueryInterface)		(THIS_					REFIID riid,					void** ppvObj) PURE;    STDMETHOD_(ULONG32,AddRef)		(THIS) PURE;    STDMETHOD_(ULONG32,Release)		(THIS) PURE;    /*     *	IHXLoadBalancedListen methods     */    /************************************************************************     *	Method:     *	    IHXLoadBalancedListen::SetID     *	Purpose:     *	    This function set's the unique ID for this listen socket.  This     *	    ID is used to determine whether or not different instances of     *	    a plugin trying to listen on a single port are actually the     *	    same plugin.  Without this function, it would be possible for     *	    two completely different plugins to listen on the same port using     *	    the load balanced listener.     */    STDMETHOD(SetID)		(THIS_			    	REFIID ID) PURE;    /************************************************************************     *	Method:     *	    IHXLoadBalancedListen::SetReserveLimit     *	Purpose:     *	    Sets the reserve limit for descriptors / sockets.  If less     *	    than reserve limit descriptors / sockets are left then a new     *	    instance of the plugin will be created.     */    STDMETHOD(SetReserveLimit)	(THIS_			    	UINT32		ulDescriptors,				UINT32		ulSockets) PURE;};/**************************************************************************** *  *  Interface: *  *	IHXOverrideDefaultServices *  *  Purpose: *  *	This interface is queried off of the context.  It allows *	a plugin to override any default services provided by the G2 system. *	Currently, it is supported only on the client side.  *	You may currently override IHXNetworkServices using this interface *	You can use the same interface to later restore back the overridden services. *	This is done by calling the same OverrideServices() function with the  *	original service QIed before the initial override. * 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?