/*++

Copyright (c) 1998 Microsoft Corporation

Module Name:

    qmmgmt.idl

Abstract:


Author:

    RaphiR

Revision History:
--*/

import "mqtypes.idl";

[
uuid(41208ee0-e970-11d1-9b9e-00e02c064c39),
version(1.0),
pointer_default(unique)
]
interface qmmgmt
{

#include "..\inc\qformat.h"


enum MgmtObjectType {
	MGMT_MACHINE = 1,
	MGMT_QUEUE,
	MGMT_SESSION,
};


typedef struct _MGMT_OBJECT {
    enum MgmtObjectType type;
	[switch_is(type)] union
	{
		[case(MGMT_QUEUE)]
			struct QUEUE_FORMAT* pQueueFormat;

		[case(MGMT_MACHINE)]
			DWORD		  dwMachineInfo;

		[case(MGMT_SESSION)]
			DWORD		  dwSessionInfo;
	};
} MGMT_OBJECT;



/*===========================================================================================
    QM Management functions
=============================================================================================*/

HRESULT R_QMMgmtGetInfo(
    [in] handle_t hBind,
    [in] const MGMT_OBJECT* pObjectFormat, 
    [in] DWORD cp,
    [in, size_is (cp )] PROPID aProp[],
    [in, out, size_is(cp )] PROPVARIANT apVar[]
	);

HRESULT R_QMMgmtAction(
	[in] handle_t hBind,
	[in] const MGMT_OBJECT* pObjectFormat,
	[in] LPCWSTR lpwszAction
	);

}
