6 Appendix A: Full IDL

For ease of implementation, the full IDL is provided below, where "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] Appendix A (section 5), and "ms-mqmq.idl" refers to the IDL found in [MS-MQMQ] Appendix A (section 5). The syntax uses the IDL syntax extensions defined in [MS-RPCE] sections 2.2.4 and 3.1.1.5.1. For example, as noted in [MS-RPCE] section 2.2.4.9, a pointer_default declaration is not required, and pointer_default(unique) is assumed.

 import "ms-dtyp.idl";
 import "ms-mqmq.idl";
  
 [
     uuid(41208ee0-e970-11d1-9b9e-00e02c064c39),  
     version(1.0), 
     pointer_default(unique)
 ]
 interface qmmgmt
 {
     typedef enum __MgmtObjectType {
         MGMT_MACHINE = 1,
         MGMT_QUEUE = 2,
         MGMT_SESSION = 3,
     } MgmtObjectType;
  
  
  
  
     typedef struct _MGMT_OBJECT {
         MgmtObjectType type;
         [switch_is(type)] union
         {
             [case(MGMT_QUEUE)]
                 QUEUE_FORMAT* pQueueFormat;
             [case(MGMT_MACHINE)]
                 DWORD         Reserved1;
             [case(MGMT_SESSION)]
                 DWORD         Reserved2;
         };
     } MGMT_OBJECT;
  
  
     /*===================================================================
         QM Management functions
     ===================================================================*/
  
     HRESULT R_QMMgmtGetInfo(
         [in] handle_t hBind,
         [in] const MGMT_OBJECT* pObjectFormat,
         [in, range(1,128)] DWORD cp,
         [in, size_is (cp)] ULONG aProp[],
         [in, out, size_is(cp)] PROPVARIANT apVar[]
         );
  
     HRESULT R_QMMgmtAction(
         [in] handle_t hBind,
         [in] const MGMT_OBJECT* pObjectFormat,
         [in] const wchar_t * lpwszAction
         );
 }