#include "idl_types.h" import "nbt.idl"; [ uuid("45f52c28-7f9f-101a-b52b-08002b2efabe"), version(1.0), helpstring("WINS Administration Interface1"), pointer_default(unique) ] interface winsif { /*****************/ /* Function 0x00 */ typedef struct { uint8 type; uint32 length; ipv4address addr; } winsif_Address; typedef enum { WINSIF_ACTION_INSERT = 0x0000, WINSIF_ACTION_DELETE = 0x0001, WINSIF_ACTION_RELEASE = 0x0002, WINSIF_ACTION_MODIFY = 0x0003, WINSIF_ACTION_QUERY = 0x0004 } winsif_Action; typedef enum { WINSIF_RECORD_UNIQUE_NAME = 0x0000, WINSIF_RECORD_GROUP_NAME = 0x0001, WINSIF_RECORD_SGROUP_NAME = 0x0002, WINSIF_RECORD_MHOMED_NAME = 0x0003 } winsif_RecordType; typedef [enum8bit] enum { WINSIF_NODE_B = 0x00, WINSIF_NODE_P = 0x01, WINSIF_NODE_H = 0x03 } winsif_NodeType; typedef [v1_enum] enum { WINSIF_RECORD_ACTIVE = 0x00000000, WINSIF_RECORD_RELEASED = 0x00000001, WINSIF_RECORD_TOMBSTONE = 0x00000002, WINSIF_RECORD_DELETED = 0x00000003 } winsif_RecordState; typedef struct { winsif_Action cmd; wrepl_nbt_name *name; [value(name?16:0)] uint32 name_len; winsif_RecordType record_type; uint32 num_of_addresses; [size_is(num_of_addresses)] winsif_Address *addresses; winsif_Address address; hyper version_number; winsif_NodeType node_type; ipv4address owner_address; winsif_RecordState record_state; boolean32 is_static; time_t expire_time; } winsif_RecordAction; WERROR winsif_WinsRecordAction( [in,out,ref] winsif_RecordAction **record_action ); /*****************/ /* Function 0x01 */ typedef struct { winsif_Address address; hyper version_number; } winsif_AddressVersionMap; typedef enum { WINSIF_PRIORITY_NORMAL = 0x0000, WINSIF_PRIORITY_HIGH = 0x0001 } winsif_PriorityClass; typedef struct { winsif_Address address; uint32 num_replications; uint32 num_communication_failures; } winsif_ReplCounter; typedef struct { uint32 num_unique_registrations; uint32 num_group_registrations; uint32 num_queries; uint32 num_successful_queries; uint32 num_failed_queries; uint32 num_unique_refreshes; uint32 num_group_refreshes; uint32 num_releases; uint32 num_successful_releases; uint32 num_failed_releases; uint32 num_unique_conflicts; uint32 num_group_conflicts; } winsif_StatCounters; typedef struct { time_t wins_start_time; time_t last_periodic_scavenging; time_t last_triggered_scavenging; time_t last_tombstone_scavenging; time_t last_verification_scavenging; time_t last_periodic_pull_replication; time_t last_triggered_pull_replication; time_t ignore_last_ntrepl; time_t ignore_last_actrepl; time_t last_init_db; time_t counter_reset; } winsif_StatTimeStamps; typedef struct { winsif_StatCounters counters; winsif_StatTimeStamps time_stamps; uint32 num_partners; [size_is(num_partners)] winsif_ReplCounter *partners; } winsif_Stat; typedef struct { uint32 num_owners; winsif_AddressVersionMap address_version_maps[25]; hyper my_max_version_number; uint32 refresh_interval; uint32 tombstone_interval; uint32 tombstone_timeout; uint32 verify_interval; winsif_PriorityClass prioritiy_class; uint32 num_worker_threads; winsif_Stat stat; } winsif_Results; typedef enum { WINSIF_STATUS_CMD_ADDRESS_VERSION_MAP = 0x0000, WINSIF_STATUS_CMD_CONFIG = 0x0001, WINSIF_STATUS_CMD_STAT = 0x0002, WINSIF_STATUS_CMD_ALL_MAPS = 0x0003 } winsif_StatusCmd; WERROR winsif_WinsStatus( [in] winsif_StatusCmd cmd, [in,out,ref] winsif_Results *results ); /*****************/ /* Function 0x02 */ typedef enum { WINSIF_TRIGGER_PULL = 0x0000, WINSIF_TRIGGER_PUSH = 0x0001, WINSIF_TRIGGER_PUSH_PROP= 0x0002 } winsif_TriggerType; WERROR winsif_WinsTrigger( [in,ref] winsif_Address *owner_address, [in] winsif_TriggerType trigger_type ); /*****************/ /* Function 0x03 */ WERROR winsif_WinsDoStaticInit( [in,unique,string,charset(UTF16)] uint16 *data_file_path, [in] boolean32 delete_file ); /*****************/ /* Function 0x04 */ WERROR winsif_WinsDoScavenging(); /*****************/ /* Function 0x05 */ void WinsGetDbRecs(); /*****************/ /* Function 0x06 */ void WinsTerm(); /*****************/ /* Function 0x07 */ void WinsBackup(); /*****************/ /* Function 0x08 */ void WinsDelDbRecs(); /*****************/ /* Function 0x09 */ void WinsPullRange(); /*****************/ /* Function 0x0A */ void WinsSetPriorityClass(); /*****************/ /* Function 0x0B */ void WinsResetCounters(); /*****************/ /* Function 0x0C */ void WinsWorkerThreadUpdate(); /*****************/ /* Function 0x0D */ void WinsGetNameAndAdd(); /*****************/ /* Function 0x0E */ void WinsGetBrowserNames_Old(); /*****************/ /* Function 0x0F */ void WinsDeleteWins(); /*****************/ /* Function 0x10 */ void WinsSetFlags(); /*****************/ /* Function 0x11 */ void WinsGetBrowserNames(); /*****************/ /* Function 0x12 */ void WinsGetDbRecsByName(); /*****************/ /* Function 0x13 */ void WinsStatusNew(); /*****************/ /* Function 0x14 */ void WinsStatusWHdl(); /*****************/ /* Function 0x15 */ void WinsDoScanvenging2(); }