6 Appendix A: Full IDL
For ease of implementation, the full IDL is provided below, where "ms-dtyp.idl" is the IDL specified in [MS-DTYP] Appendix A, and "ms-mqmq.idl" is the IDL specified in [MS-MQMQ] Appendix A.
-
import "ms-dtyp.idl"; import "ms-mqmq.idl"; const unsigned long PRLT = 0; const unsigned long PRLE = 1; const unsigned long PRGT = 2; const unsigned long PRGE = 3; const unsigned long PREQ = 4; const unsigned long PRNE = 5; typedef struct tagMQPROPERTYRESTRICTION { unsigned long rel; unsigned long prop; PROPVARIANT prval; } MQPROPERTYRESTRICTION; typedef struct tagMQRESTRICTION { [range(0,128)] unsigned long cRes; [size_is(cRes)] MQPROPERTYRESTRICTION * paPropRes; } MQRESTRICTION; typedef struct tagMQCOLUMNSET { [range(0,128)] unsigned long cCol; [size_is(cCol)] PROPID *aCol; } MQCOLUMNSET; const unsigned long QUERY_SORTASCEND = 0; const unsigned long QUERY_SORTDESCEND = 1; typedef struct tagMQSORTKEY { unsigned long propColumn; unsigned long dwOrder; } MQSORTKEY; typedef struct tagMQSORTSET { [range(0,128)] unsigned long cCol; [size_is(cCol)] MQSORTKEY *aCol; } MQSORTSET; [ version(1.0), uuid(77df7a80-f298-11d0-8358-00a024c480a8), pointer_default(unique) ] interface dscomm { /*================================================== Structures ===================================================*/
-
-
typedef [range(0, 128*1024)] unsigned long BOUNDED_SIGNATURE_SIZE; typedef BOUNDED_SIGNATURE_SIZE * LPBOUNDED_SIGNATURE_SIZE; typedef [range(0, 128)] DWORD BOUNDED_PROPERTIES; typedef BOUNDED_PROPERTIES * LPBOUNDED_PROPERTIES; /*================================================== RPC Context Handles ===================================================*/ typedef [context_handle] void * PCONTEXT_HANDLE_TYPE; typedef [ref] PCONTEXT_HANDLE_TYPE * PPCONTEXT_HANDLE_TYPE; typedef [context_handle] void * PCONTEXT_HANDLE_SERVER_AUTH_TYPE; typedef [ref] PCONTEXT_HANDLE_SERVER_AUTH_TYPE *PPCONTEXT_HANDLE_SERVER_AUTH_TYPE; typedef [context_handle] void * PCONTEXT_HANDLE_DELETE_TYPE; typedef [ref] PCONTEXT_HANDLE_DELETE_TYPE *PPCONTEXT_HANDLE_DELETE_TYPE; /*======================================================================= MQDS API ========================================================================*/ HRESULT S_DSCreateObject( [in] handle_t hBind, [in, range(1,58)] unsigned long dwObjectType, [in, unique] const wchar_t * pwcsPathName, [in, range(0,524288)] unsigned long dwSDLength, [in, size_is(dwSDLength), unique] unsigned char * SecurityDescriptor, [in, range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, size_is(cp)] PROPVARIANT apVar[], [in, out, unique] GUID* pObjGuid ); HRESULT S_DSDeleteObject( [in] handle_t hBind, [in, range(1,58)] unsigned long dwObjectType, [in] const wchar_t * pwcsPathName ); HRESULT S_DSGetProps( [in] handle_t hBind, [in, range(1, 58)] unsigned long dwObjectType, [in] const wchar_t * pwcsPathName, [in, range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, out, size_is(cp)] PROPVARIANT apVar[], [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSSetProps( [in] handle_t hBind, [in, range(1,58)] unsigned long dwObjectType, [in] const wchar_t * pwcsPathName, [in, range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, size_is(cp)] PROPVARIANT apVar[] ); HRESULT S_DSGetObjectSecurity( [in] handle_t hBind, [in, range(1,58)] unsigned long dwObjectType, [in] const wchar_t * pwcsPathName, [in] unsigned long SecurityInformation, [out, size_is(nLength)] unsigned char* pSecurityDescriptor, [in , range(0,524288)] unsigned long nLength, [out] unsigned long* lpnLengthNeeded, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSSetObjectSecurity( [in] handle_t hBind, [in, range(1,58)] unsigned long dwObjectType, [in] const wchar_t * pwcsPathName, [in] unsigned long SecurityInformation, [in, unique, size_is(nLength)] unsigned char* pSecurityDescriptor, [in , range(0,524288)] unsigned long nLength ); HRESULT S_DSLookupBegin( [in] handle_t hBind, [out] PPCONTEXT_HANDLE_TYPE pHandle, [in, unique] wchar_t * pwcsContext, [in, unique] MQRESTRICTION* pRestriction, [in, ref] MQCOLUMNSET* pColumns, [in, unique] MQSORTSET* pSort, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth ); HRESULT S_DSLookupNext( [in] handle_t hBind, [in] PCONTEXT_HANDLE_TYPE Handle, [in] LPBOUNDED_PROPERTIES dwSize, [out] unsigned long* dwOutSize, [out, size_is(*dwSize), length_is(*dwOutSize)] PROPVARIANT pbBuffer[], [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSLookupEnd( [in] handle_t hBind, [in, out] PPCONTEXT_HANDLE_TYPE phContext ); void Opnum9NotUsedOnWire(void); HRESULT S_DSDeleteObjectGuid( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in] const GUID* pGuid ); HRESULT S_DSGetPropsGuid( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in, unique] const GUID* pGuid, [in , range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, out, size_is(cp)] PROPVARIANT apVar[], [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSSetPropsGuid( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in] const GUID * pGuid, [in , range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, size_is(cp)] PROPVARIANT apVar[] ); HRESULT S_DSGetObjectSecurityGuid( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in] const GUID * pGuid, [in] unsigned long SecurityInformation, [out, size_is(nLength)] unsigned char* pSecurityDescriptor, [in , range(0,524288)] unsigned long nLength, [out] unsigned long* lpnLengthNeeded, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSSetObjectSecurityGuid( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in] const GUID * pGuid, [in] unsigned long SecurityInformation, [in, unique, size_is(nLength)] unsigned char* pSecurityDescriptor, [in , range(0,524288)] unsigned long nLength ); void Opnum15NotUsedOnWire(void); void Opnum16NotUsedOnWire(void); void Opnum17NotUsedOnWire(void); void Opnum18NotUsedOnWire(void); HRESULT S_DSQMSetMachineProperties( [in] handle_t hBind, [in] const wchar_t * pwcsPathName, [in , range(1,128)] unsigned long cp, [in, size_is(cp)] unsigned long aProp[], [in, size_is(cp)] PROPVARIANT apVar[], [in] unsigned long dwContext ); HRESULT S_DSCreateServersCache( [in] handle_t hBind, [in, out] unsigned long * pdwIndex, [in, out, ptr, string] wchar_t * * lplpSiteServers, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); [callback] HRESULT S_DSQMSetMachinePropertiesSignProc( [in, size_is(dwCallengeSize)] byte *abChallenge, [in , range(0,32)] unsigned long dwCallengeSize, [in] unsigned long dwContext, [in, out, size_is(dwSignatureMaxSize), length_is(*pdwSignatureSize)] byte * abSignature, [in, out] unsigned long * pdwSignatureSize, [in , range(0,128)] unsigned long dwSignatureMaxSize ); HRESULT S_DSQMGetObjectSecurity( [in] handle_t hBind, [in , range(1,58)] unsigned long dwObjectType, [in] const GUID * pGuid, [in] unsigned long SecurityInformation, [out, size_is(nLength)] unsigned char* pSecurityDescriptor, [in, range(0,524288)] unsigned long nLength, [out] unsigned long* lpnLengthNeeded, [in] unsigned long dwContext, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); [callback] HRESULT S_DSQMGetObjectSecurityChallengeResponceProc( [in, size_is(dwCallengeSize)] byte * abChallenge, [in , range(0,32)] unsigned long dwCallengeSize, [in] unsigned long dwContext, [in, out, size_is(dwCallengeResponceMaxSize), length_is(*pdwCallengeResponceSize)] byte * abCallengeResponce, [in, out] unsigned long *pdwCallengeResponceSize, [in , range(0,128)] unsigned long dwCallengeResponceMaxSize ); [callback] HRESULT S_InitSecCtx( [in] unsigned long dwContext, [in, size_is(dwServerBuffSize)] unsigned char * pServerbuff, [in , range(0,524288)] unsigned long dwServerBuffSize, [in , range(0,524288)] unsigned long dwClientBuffMaxSize, [out, size_is(dwClientBuffMaxSize), length_is(*pdwClientBuffSize)] unsigned char * pClientBuff, [out] unsigned long * pdwClientBuffSize ); HRESULT S_DSValidateServer( [in] handle_t hBind, [in] const GUID * pguidEnterpriseId, [in] BOOL fSetupMode, [in] unsigned long dwContext, [in , range(0,524288)] unsigned long dwClientBuffMaxSize, [in, size_is(dwClientBuffMaxSize), length_is(dwClientBuffSize)] unsigned char * pClientBuff, [in , range(0,524288)] unsigned long dwClientBuffSize, [out] PPCONTEXT_HANDLE_SERVER_AUTH_TYPE pphServerAuth ); HRESULT S_DSCloseServerHandle( [in, out] PPCONTEXT_HANDLE_SERVER_AUTH_TYPE pphServerAuth ); void Opnum24NotUsedOnWire(void); void Opnum25NotUsedOnWire(void); void Opnum26NotUsedOnWire(void); unsigned long S_DSGetServerPort( [in] handle_t hBind, [in , range(0,1)] unsigned long fIP ); } [ version(1.0), uuid(708cca10-9569-11d1-b2a5-0060977d8118), pointer_default(unique) ] interface dscomm2 { HRESULT S_DSGetComputerSites( [in] handle_t hBind, [in, unique] const wchar_t * pwcsPathName, [out] DWORD * pdwNumberOfSites, [out, size_is(,*pdwNumberOfSites), length_is(,*pdwNumberOfSites)] GUID ** ppguidSites, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSGetPropsEx( [in] handle_t hBind, [in, range(1, 58)] DWORD dwObjectType, [in] const wchar_t * pwcsPathName, [in, range(1,128)] DWORD cp, [in, size_is(cp)] PROPID aProp[], [in, out, size_is(cp)] PROPVARIANT apVar[], [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSGetPropsGuidEx( [in] handle_t hBind, [in, range(1, 58)] DWORD dwObjectType, [in, unique] const GUID * pGuid, [in, range(1,128)] DWORD cp, [in, size_is(cp)] PROPID aProp[], [in, out, size_is(cp)] PROPVARIANT apVar[], [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); HRESULT S_DSBeginDeleteNotification( [in] handle_t hBind, [in] const wchar_t * pwcsPathName, [out] PPCONTEXT_HANDLE_DELETE_TYPE pHandle, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth ); HRESULT S_DSNotifyDelete( [in] handle_t hBind, [in] PCONTEXT_HANDLE_DELETE_TYPE Handle ); void S_DSEndDeleteNotification( [in] handle_t hBind, [in, out] PPCONTEXT_HANDLE_DELETE_TYPE pHandle ); long S_DSIsServerGC( [in] handle_t hBind ); void Opnum7NotUsedOnWire(void); HRESULT S_DSGetGCListInDomain( [in] handle_t hBind, [in, ptr] const wchar_t * lpwszComputerName, [in, ptr] const wchar_t * lpwszDomainName, [out, string] wchar_t ** lplpwszGCList, [in] PCONTEXT_HANDLE_SERVER_AUTH_TYPE phServerAuth, [out, size_is(*pdwServerSignatureSize)] unsigned char * pbServerSignature, [in, out] LPBOUNDED_SIGNATURE_SIZE pdwServerSignatureSize ); }