import "srvsvc.idl";

[
  uuid("6bffd098-a112-3610-9833-012892020162"),
  version(0.0), 
  helpstring("Browsing"),
  pointer_default(unique),
  endpoint("ncacn_np:[\\pipe\\browser]", "ncacn_ip_tcp:", "ncalrpc:")
] 
interface browser
{
	/******************/
	/* Function  0x00 */
	[todo] void BrowserrServerEnum();

	/******************/
	/* Function  0x01 */
	[todo] void BrowserrDebugCall();

	/******************/
	/* Function  0x02 */

	typedef struct {
		uint32 entries_read;
		[size_is(entries_read)] srvsvc_NetSrvInfo100 *entries;
	} BrowserrSrvInfo100Ctr;

	typedef struct {
		uint32 entries_read;
		[size_is(entries_read)] srvsvc_NetSrvInfo101 *entries;
	} BrowserrSrvInfo101Ctr;

	typedef [switch_type(uint32)] union {
		[case(100)] BrowserrSrvInfo100Ctr *info100;
		[case(101)] BrowserrSrvInfo101Ctr *info101;
		[default] ;
	} BrowserrSrvInfoUnion;

	typedef struct {
		uint32 level;
		[switch_is(level)] BrowserrSrvInfoUnion info;
	} BrowserrSrvInfo;

	WERROR BrowserrQueryOtherDomains(
		[in,unique]   [string,charset(UTF16)] uint16 *server_unc,
		[in,out,ref] BrowserrSrvInfo *info,
		[out,ref] uint32 *total_entries
	);

	/******************/
	/* Function  0x03 */
	[todo] void BrowserrResetNetlogonState();

	/******************/
	/* Function  0x04 */
	[todo] void BrowserrDebugTrace();

	/******************/
	/* Function  0x05 */
	[todo] void BrowserrQueryStatistics();

	/******************/
	/* Function  0x06 */
	[todo] void BrowserResetStatistics();

	/******************/
	/* Function  0x07 */
	[todo] void NetrBrowserStatisticsClear();

	/******************/
	/* Function  0x08 */
	[todo] void NetrBrowserStatisticsGet();

	/******************/
	/* Function  0x09 */
	[todo] void BrowserrSetNetlogonState();

	/******************/
	/* Function  0x0a */
	[todo] void BrowserrQueryEmulatedDomains();

	/******************/
	/* Function  0x0b */
	[todo] void BrowserrServerEnumEx();

}