6 Appendix A: Full IDL

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

 import "ms-rpce.idl";
  
 typedef [context_handle] void * CXH;
 typedef [context_handle] void * ACXH;
 // Special restricted types to prevent allocation of big buffers.
 typedef [range(0x0, 0x40000)] unsigned long BIG_RANGE_ULONG;
 typedef [range(0x0, 0x1008)] unsigned long SMALL_RANGE_ULONG;
  
  [ uuid (A4F1DB00-CA47-1067-B31F-00DD010662DA),
   version(0.81),
   pointer_default(unique)]
 interface emsmdb
 {
 long __stdcall Opnum0Reserved(
 );
  
 long __stdcall EcDoDisconnect(
 [in, out, ref] CXH * pcxh
 );
  
 long __stdcall Opnum2Reserved(
 );
  
 long __stdcall Opnum3Reserved(
 );
  
 long __stdcall EcRRegisterPushNotification(
 [in, out, ref] CXH * pcxh,
 [in] unsigned long iRpc,
 [in, size_is(cbContext)]unsigned char rgbContext[],
 [in] unsigned short cbContext,
 [in] unsigned long grbitAdviseBits,
 [in, size_is(cbCallbackAddress)] unsigned char rgbCallbackAddress[],
 [in] unsigned short cbCallbackAddress,
 [out] unsigned long *hNotification
 );
  
 long __stdcall Opnum5Reserved(
 );
  
 long __stdcall EcDummyRpc(
 [in] handle_t hBinding
 );
  
 long __stdcall Opnum7Reserved(
 );
  
 long __stdcall Opnum8Reserved(
 );
  
 long __stdcall Opnum9Reserved(
 );
  
 long __stdcall EcDoConnectEx(
 [in] handle_t hBinding,
 [out, ref] CXH * pcxh,
 [in, string] unsigned char * szUserDN,
 [in] unsigned long ulFlags,
 [in] unsigned long ulConMod,
 [in] unsigned long cbLimit,
 [in] unsigned long ulCpid,
 [in] unsigned long ulLcidString,
 [in] unsigned long ulLcidSort,
 [in] unsigned long ulIcxrLink,
 [in] unsigned short usFCanConvertCodePages,
 [out] unsigned long * pcmsPollsMax,
 [out] unsigned long * pcRetry,
 [out] unsigned long * pcmsRetryDelay,
 [out] unsigned short * picxr,
 [out, string] unsigned char **szDNPrefix,
 [out, string] unsigned char **szDisplayName,
 [in] unsigned short rgwClientVersion[3],
 [out] unsigned short rgwServerVersion[3],
 [out] unsigned short rgwBestVersion[3],
 [in, out] unsigned long * pulTimeStamp,
 [in, size_is(cbAuxIn)] unsigned char rgbAuxIn[],
 [in] unsigned long cbAuxIn,
 [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] unsigned char rgbAuxOut[],
 [in, out] SMALL_RANGE_ULONG *pcbAuxOut
 );
  
 long __stdcall EcDoRpcExt2(
 [in, out, ref] CXH * pcxh,
 [in, out] unsigned long *pulFlags,
 [in, size_is(cbIn)] unsigned char rgbIn[],
 [in] unsigned long cbIn,
 [out, length_is(*pcbOut), size_is(*pcbOut)] unsigned char rgbOut[],
 [in, out] BIG_RANGE_ULONG *pcbOut,
 [in, size_is(cbAuxIn)] unsigned char rgbAuxIn[],
 [in] unsigned long cbAuxIn,
 [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] unsigned char rgbAuxOut[],
 [in, out] SMALL_RANGE_ULONG *pcbAuxOut,
 [out] unsigned long *pulTransTime
 );
  
 long __stdcall Opnum12Reserved(
 );
  
 long __stdcall Opnum13Reserved(
 );
  
 long __stdcall EcDoAsyncConnectEx(
 [in] CXH cxh,
 [out, ref] ACXH * pacxh
 );
  
 }
  
 [ uuid (5261574A-4572-206E-B268-6B199213B4E4),
   version(0.01),
   pointer_default(unique)]
 interface asyncemsmdb
 {
 long __stdcall EcDoAsyncWaitEx(
 [in] ACXH acxh,
 [in] unsigned long ulFlagsIn,
 [out] unsigned long *pulFlagsOut
 );
  
 }
Show: