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.

The syntax uses the IDL syntax extensions defined in [MS-RPCE] sections 2.2.4 and 2.2.4. 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.

 [
     uuid(6BFFD098-A112-3610-9833-012892020162),
     version(0.0),
     ms_union,
     pointer_default(unique)
 ]
 interface browser
 {
     import "ms-dtyp.idl";
     
    typedef WCHAR* LPWSTR;
     
     typedef [handle] LPWSTR BROWSER_IDENTIFY_HANDLE;
  
    typedef struct _SERVER_INFO_100_CONTAINER {
         DWORD   EntriesRead;
         [size_is(EntriesRead)] LPSERVER_INFO_100 Buffer;
      } SERVER_INFO_100_CONTAINER, 
       *PSERVER_INFO_100_CONTAINER,
       *LPSERVER_INFO_100_CONTAINER;
  
     typedef struct _SERVER_ENUM_STRUCT {
         DWORD   Level;
         [switch_is(Level)] union _SERVER_ENUM_UNION {
             [case(100)]
                 LPSERVER_INFO_100_CONTAINER Level100;
             [default]
                 ;
         } ServerInfo;
     } SERVER_ENUM_STRUCT, 
      *PSERVER_ENUM_STRUCT, 
      *LPSERVER_ENUM_STRUCT;
  
  
     NET_API_STATUS Opnum0NotUsedOnWire(void);
  
     NET_API_STATUS Opnum1NotUsedOnWire(void);
  
     NET_API_STATUS
     I_BrowserrQueryOtherDomains(
         [in,string,unique] BROWSER_IDENTIFY_HANDLE ServerName,
         [in,out]           LPSERVER_ENUM_STRUCT    InfoStruct,
         [out]              LPDWORD                 TotalEntries
     );
  
     NET_API_STATUS Opnum3NotUsedOnWire(void);
  
     NET_API_STATUS Opnum4NotUsedOnWire(void);
  
     NET_API_STATUS Opnum5NotUsedOnWire(void);
  
     NET_API_STATUS Opnum6NotUsedOnWire(void);
  
     NET_API_STATUS Opnum7NotUsedOnWire(void);
  
     NET_API_STATUS Opnum8NotUsedOnWire(void);
  
     NET_API_STATUS Opnum9NotUsedOnWire(void);
  
     NET_API_STATUS Opnum10NotUsedOnWire(void);
  
     NET_API_STATUS Opnum11NotUsedOnWire(void);
 }