import "ms-dtyp.idl";
// forward declaration
typedef tag_inner_PROPVARIANT PROPVARIANT;
// basic type aliases
typedef unsigned long PROPID;
typedef short VARIANT_BOOL;
typedef struct {
unsigned char rgb[16];
} XACTUOW;
typedef struct tagBLOB {
unsigned long cbSize;
[size_is(cbSize)]
unsigned char *pBlobData;
} BLOB;
typedef struct tagCAUB
{
unsigned long cElems;
[size_is( cElems )]
unsigned char * pElems;
} CAUB;
typedef struct tagCAUI
{
unsigned long cElems;
[size_is( cElems )]
unsigned short * pElems;
} CAUI;
typedef struct tagCAL
{
unsigned long cElems;
[size_is( cElems )]
long * pElems;
} CAL;
typedef struct tagCAUL
{
unsigned long cElems;
[size_is( cElems )]
unsigned long * pElems;
} CAUL;
typedef struct tagCAUH
{
unsigned long cElems;
[size_is( cElems )]
ULARGE_INTEGER * pElems;
} CAUH;
typedef struct tagCACLSID
{
unsigned long cElems;
[size_is( cElems )]
GUID * pElems;
} CACLSID;
typedef struct tagCALPWSTR
{
unsigned long cElems;
[size_is( cElems )]
[string] wchar_t ** pElems;
} CALPWSTR;
typedef struct tagCAPROPVARIANT
{
unsigned long cElems;
[size_is( cElems )]
PROPVARIANT * pElems;
} CAPROPVARIANT;
typedef enum
{
VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_LPWSTR = 31,
VT_BLOB = 65,
VT_CLSID = 72,
VT_VECTOR = 0x1000,
} VARENUM;
typedef unsigned short VARTYPE;
typedef struct _tag_inner_PROPVARIANT
{
VARTYPE vt;
UCHAR wReserved1;
UCHAR wReserved2;
ULONG wReserved3;
[switch_is(vt)] union
{
[case (VT_EMPTY, VT_NULL)];
[case (VT_I1)] CHAR cVal;
[case (VT_UI1)] UCHAR bVal;
[case (VT_I2)] SHORT iVal;
[case (VT_UI2)] USHORT uiVal;
[case (VT_I4)] LONG lVal;
[case (VT_UI4)] ULONG ulVal;
[case (VT_I8)] LARGE_INTEGER hVal;
[case (VT_UI8)] ULARGE_INTEGER uhVal;
[case (VT_BOOL)] VARIANT_BOOL boolVal;
[case (VT_CLSID)] GUID * puuid;
[case (VT_BLOB)] BLOB blob;
[case (VT_LPWSTR)] [string] wchar_t * pwszVal;
[case (VT_VECTOR|VT_UI1)] CAUB caub;
[case (VT_VECTOR|VT_UI2)] CAUI caui;
[case (VT_VECTOR|VT_I4)] CAL cal;
[case (VT_VECTOR|VT_UI4)] CAUL caul;
[case (VT_VECTOR|VT_UI8)] CAUH cauh;
[case (VT_VECTOR|VT_CLSID)] CACLSID cauuid;
[case (VT_VECTOR|VT_LPWSTR)] CALPWSTR calpwstr;
[case (VT_VECTOR|VT_VARIANT)] CAPROPVARIANT capropvar;
} _varUnion;
} tag_inner_PROPVARIANT;
typedef struct _DL_ID {
GUID m_DlGuid;
[string] wchar_t * m_pwzDomain;
} DL_ID;
typedef struct _MULTICAST_ID {
ULONG m_address;
ULONG m_port;
} MULTICAST_ID;
typedef struct _OBJECTID {
GUID Lineage;
DWORD Uniquifier;
} OBJECTID;
typedef enum __QUEUE_FORMAT_TYPE
{
QUEUE_FORMAT_TYPE_UNKNOWN = 0,
QUEUE_FORMAT_TYPE_PUBLIC = 1,
QUEUE_FORMAT_TYPE_PRIVATE = 2,
QUEUE_FORMAT_TYPE_DIRECT = 3,
QUEUE_FORMAT_TYPE_MACHINE = 4,
QUEUE_FORMAT_TYPE_CONNECTOR = 5,
QUEUE_FORMAT_TYPE_DL = 6,
QUEUE_FORMAT_TYPE_MULTICAST = 7,
QUEUE_FORMAT_TYPE_SUBQUEUE = 8
} QUEUE_FORMAT_TYPE;
typedef struct __QUEUE_FORMAT {
unsigned char m_qft;
unsigned char m_SuffixAndFlags;
unsigned short m_reserved;
[switch_is(m_qft)] union {
[case(QUEUE_FORMAT_TYPE_UNKNOWN)]
; // No member is set. Selected when an m_qft value
// of 0 is returned.
[case(QUEUE_FORMAT_TYPE_PUBLIC)]
GUID m_gPublicID;
[case(QUEUE_FORMAT_TYPE_PRIVATE)]
OBJECTID m_oPrivateID;
[case(QUEUE_FORMAT_TYPE_DIRECT)]
[string] wchar_t* m_pDirectID;
[case(QUEUE_FORMAT_TYPE_MACHINE)]
GUID m_gMachineID;
[case(QUEUE_FORMAT_TYPE_CONNECTOR)]
GUID m_GConnectorID;
[case(QUEUE_FORMAT_TYPE_DL)]
DL_ID m_DlID;
[case(QUEUE_FORMAT_TYPE_MULTICAST)]
MULTICAST_ID m_MulticastID;
[case(QUEUE_FORMAT_TYPE_SUBQUEUE)]
[string] wchar_t* m_pDirectSubqueueID;
};
} QUEUE_FORMAT;