Leaked source code of windows server 2003
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.
 
 
 
 
 
 

270 lines
9.3 KiB

//-----------------------------------------------------------------------------
//
//
// File: intrnlqa.idl
//
// Description: Internal Queue Admin Interfaces. IDL file containing the
// interface definitions for the internal queue admin interfaces. These
// interfaces are exlusively internal to AQueue and used to provide the
// ability to admin different types of queues (i.e., local vs remote).
//
// This works as follows... the AQSvrInst object returns a IQueueAdmin*
// interface via HrLinkFromLinkID or HrQueueFromQueueID.
//
// The IQueueAdminMessageFilter interface is initialized from a
// MESSAGE_FILETER or MESSAGE_ENUM_FILTER.
//
// The IUknown message abstraction will typically also implement CMsgRef
// (in the case of local and remote queues), but could also point to the
// external message interface (IMailMsgProperties). This is currently
// not used, but can easily be done by creating a IQueueAdminMessageFilter
// and IQueueAdminAction implementation that supports it.
//
// IAdvQueueAdmin is the per-instance interface that is used by the
// RPC server to talk to aqueue.
//
// Author: Mike Swafford (MikeSwa)
//
// History:
// 2/20/99 - MikeSwa Created
// 4/1/99 - MikeSwa Added context to IQueueAdminMessageFilter
// 6/7/99 - MikeSwa Moved IAdvQueueAdmin from aqueue.idl to intrnlqa.idl
// 7/1/99 - MikeSwa Added LinkDiagnostic HRESULT
//
// Copyright (C) 1999 Microsoft Corporation
//
//-----------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "aqadmtyp.h";
interface IQueueAdminAction;
//---[ IQueueAdminMessageFilter ]----------------------------------------------
//
//
// Description:
// Interface used to encapsulate message filtering/processing. A queue
// class will call HrProcessMsg for every message in the queue
//
//-----------------------------------------------------------------------------
[
object,
local,
uuid(34E2DCC4-C91A-11d2-A6B1-00C04FA3490A),
helpstring("IQueueAdminMessageFilter Interface"),
pointer_default(unique)
]
interface IQueueAdminMessageFilter : IUnknown
{
//Called to process a message during enumeration.
[helpstring("method HrProcessMessage")]
HRESULT HrProcessMessage(
IUnknown *pIUnknownMsg,
BOOL *pfContinue,
BOOL *pfDelete);
[helpstring("method HrSetQueueAdminAction")]
HRESULT HrSetQueueAdminAction(
IQueueAdminAction *pIQueueAdminAction);
//Allows the thread performing queue admin functions
//to set a context that is passed to the
//pIQueueAdminAction implementation
[helpstring("method HrSetCurrentUserContext")]
HRESULT HrSetCurrentUserContext(
PVOID pvContext);
[helpstring("method HrGetCurrentUserContext")]
HRESULT HrGetCurrentUserContext(
PVOID *ppvContext);
};
//---[ IQueueAdminAction ]-----------------------------------------------------
//
//
// Description:
// Internal interface that is the basis for all adminable queues. It
// provides the abilitity to filter and apply actions to queues as well.
//
// A class that implements this class should also implement one of
// the following:
// IQueueAdminLink - Admin a next hop link
// IQueueAdminQueue - Admin a final destination queue
//
//-----------------------------------------------------------------------------
[
object,
local,
uuid(486886B4-6542-4abe-8DE5-1A35E8A83A6C),
helpstring("IQueueAdminAction Interface"),
pointer_default(unique)
]
interface IQueueAdminAction : IUnknown
{
//Applies a given Queue Admin function to all messages in this queue
[helpstring("method HrApplyQueueAdminFunction")]
HRESULT HrApplyQueueAdminFunction(
IQueueAdminMessageFilter *pIQueueAdminMessageFilter);
//Removes a message from this queue
[helpstring("method HrApplyActionToMessage")]
HRESULT HrApplyActionToMessage(
IUnknown *pIUnknownMsg,
MESSAGE_ACTION ma,
PVOID pvContext,
BOOL *pfShouldDelete);
[helpstring("method fMatchesID")]
BOOL fMatchesID(QUEUELINK_ID *QueueLinkID);
//Returns the supported actions on this interface
[helpstring("method QuerySupportedActions")]
HRESULT QuerySupportedActions(
DWORD *pdwSupportedActions,
DWORD *pdwSupportedFilterFlags);
};
//---[ IQueueAdminLink ]-------------------------------------------------------
//
//
// Description:
// Queue Admin interface for a next hop link.
//
//-----------------------------------------------------------------------------
[
object,
local,
uuid(D81698CA-2FD1-11d3-BFD1-00C04FA3490A),
helpstring("IQueueAdminLink Interface"),
pointer_default(unique)
]
interface IQueueAdminLink : IUnknown
{
[helpstring("method HrGetLinkInfo")]
HRESULT HrGetLinkInfo(
LINK_INFO *pliLinkInfo,
HRESULT *phrLinkDiagnostic);
[helpstring("method HrApplyActionToLink")]
HRESULT HrApplyActionToLink(
LINK_ACTION la);
[helpstring("method HrGetLinkID")]
HRESULT HrGetLinkID(
QUEUELINK_ID *pLinkID);
[helpstring("method HrGetNumQueues")]
HRESULT HrGetNumQueues(DWORD *pcQueues);
[helpstring("method HrGetQueueIDs")]
HRESULT HrGetQueueIDs(
DWORD *pcQueues,
QUEUELINK_ID *rgQueues);
};
//---[ IQueueAdminQueue ]------------------------------------------------------
//
//
// Description:
// Queue Admin interface for a final destination queue
//
//-----------------------------------------------------------------------------
[
object,
local,
uuid(34E2DCC6-C91A-11d2-A6B1-00C04FA3490A),
helpstring("IQueueAdminQueue Interface"),
pointer_default(unique)
]
interface IQueueAdminQueue : IUnknown
{
[helpstring("method HrGetQueueInfo")]
HRESULT HrGetQueueInfo(
QUEUE_INFO *pliQueueInfo);
[helpstring("method HrGetQueueID")]
HRESULT HrGetQueueID(
QUEUELINK_ID *pQueueID);
};
//---[ IAdvQueueAdmin ]--------------------------------------------------------
//
//
// Description: Public interface that exposes administrator APIs
// for use by the SMTP Server's AQ RPCs.
//
//
//-----------------------------------------------------------------------------
[
object,
uuid(23700228-1D00-11d3-BFCB-00C04FA3490A),
helpstring("IAdvQueueAdmin Interface"),
pointer_default(unique)
]
interface IAdvQueueAdmin : IUnknown
{
[helpstring("method ApplyActionToLinks")]
HRESULT
ApplyActionToLinks(
[in] LINK_ACTION laAction);
[helpstring("method ApplyActionToMessages")]
HRESULT
ApplyActionToMessages(
[in] QUEUELINK_ID *pqlQueueLinkId,
[in] MESSAGE_FILTER *pmfMessageFilter,
[in] MESSAGE_ACTION maMessageAction,
[out] DWORD *pcMsgs);
[helpstring("method GetQueueInfo")]
HRESULT
GetQueueInfo(
[in] QUEUELINK_ID *pqlQueueId,
[out] QUEUE_INFO *pqiQueueInfo);
[helpstring("method GetLinkInfo")]
HRESULT
GetLinkInfo(
[in] QUEUELINK_ID *pqlLinkId,
[out] LINK_INFO *pliLinkInfo,
[out] HRESULT *phrLinkDiagnostic);
[helpstring("method SetLinkState")]
HRESULT
SetLinkState(
[in] QUEUELINK_ID *pqlLinkId,
[in] LINK_ACTION la);
[helpstring("method GetLinkIDs")]
HRESULT
GetLinkIDs(
[in, out] DWORD *pcLinks,
[in, out] QUEUELINK_ID *rgLinks);
[helpstring("method GetQueueIDs")]
HRESULT
GetQueueIDs(
[in] QUEUELINK_ID *pqlLinkId,
[in, out] DWORD *pcQueues,
[in, out] QUEUELINK_ID *rgQueues);
[helpstring("method GetMessageProperties")]
HRESULT
GetMessageProperties(
[in] QUEUELINK_ID *pqlQueueLinkId,
[in] MESSAGE_ENUM_FILTER *pmfMessageEnumFilter,
[in, out] DWORD *pcMsgs,
[in, out] MESSAGE_INFO *rgMsgs);
[helpstring("method QuerySupportedActions")]
HRESULT
QuerySupportedActions(
[in] QUEUELINK_ID *pqlQueueLinkId,
[out] DWORD *pdwSupportedActions,
[out] DWORD *pdwSupportedFilterFlags);
};