#include "idl_types.h" import "misc.idl"; [ uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"), version(1.1), pointer_default(unique), helpstring("SMB Witness Service"), endpoint("ncacn_ip_tcp:") ] interface witness { /*****************/ /* Function 0x00 */ typedef [enum16bit] enum { UNKNOWN = 0x00, AVAILABLE = 0x01, UNAVAILABLE = 0xff } witness_interfaceInfo_state; typedef struct { [charset(UTF16),to_null] uint16 group_name[260]; uint32 version; witness_interfaceInfo_state state; [flag(NDR_BIG_ENDIAN)] ipv4address ipv4; [flag(NDR_BIG_ENDIAN)] ipv6address ipv6; uint32 flags; } witness_interfaceInfo; typedef struct { uint32 num_interfaces; [size_is(num_interfaces)] witness_interfaceInfo *interfaces; } witness_interfaceList; WERROR witness_GetInterfaceList( //[in,flag(NDR_REMAINING)] DATA_BLOB in_blob, [out] witness_interfaceList **interface_list ); /*****************/ /* Function 0x01 */ WERROR witness_Register( [out,ref] policy_handle *context_handle, [in] uint32 version, [in,unique,string,charset(UTF16)] uint16 *net_name, [in,unique,string,charset(UTF16)] uint16 *ip_address, [in,unique,string,charset(UTF16)] uint16 *client_computer_name ); /*****************/ /* Function 0x02 */ WERROR witness_UnRegister( [in] policy_handle context_handle ); /*****************/ /* Function 0x03 */ typedef struct { uint32 message_type; uint32 length; uint32 num_messages; [size_is(length)] uint8 *message_buffer; } witness_notifyResponse; WERROR witness_AsyncNotify( [in] policy_handle context_handle, [out] witness_notifyResponse **response ); }