summaryrefslogtreecommitdiffstats
path: root/private/inc/winsintf.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/inc/winsintf.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/inc/winsintf.h')
-rw-r--r--private/inc/winsintf.h981
1 files changed, 981 insertions, 0 deletions
diff --git a/private/inc/winsintf.h b/private/inc/winsintf.h
new file mode 100644
index 000000000..87bd3b790
--- /dev/null
+++ b/private/inc/winsintf.h
@@ -0,0 +1,981 @@
+#ifndef WINSINTF_H
+#define WINSINTF_H
+/*++
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ winsintf.h
+
+Abstract:
+
+ This is the header file to be included in a client of the WINS
+
+Functions:
+
+
+
+Portability:
+
+
+ This header is portable.
+
+Author:
+
+ Pradeep Bahl (PradeepB) April-1993
+
+
+
+Revision History:
+
+ Modification Date Person Description of Modification
+ ------------------ ------- ---------------------------
+
+--*/
+
+/*
+ includes
+*/
+#include <winbase.h>
+
+#if !defined(MIDL_PASS)
+#include <rpc.h>
+#include <winerror.h>
+#endif
+
+//#include <ntdef.h>
+
+/*
+ defines
+*/
+#define WINSINTF_MAX_NAME_SIZE 255
+
+
+#define WINSINTF_MAX_NO_RPL_PNRS 25
+#define WINSINTF_SUCCESS ERROR_SUCCESS
+#define WINSINTF_FAILURE ERROR_WINS_INTERNAL
+#define WINSINTF_CAN_NOT_DEL_LOCAL_WINS ERROR_CAN_NOT_DEL_LOCAL_WINS
+#define WINSINTF_STATIC_INIT_FAILED ERROR_STATIC_INIT
+#define WINSINTF_INC_BACKUP_FAILED ERROR_INC_BACKUP
+#define WINSINTF_FULL_BACKUP_FAILED ERROR_FULL_BACKUP
+#define WINSINTF_REC_NOT_FOUND ERROR_REC_NON_EXISTENT
+#define WINSINTF_RPL_NOT_ALLOWED ERROR_RPL_NOT_ALLOWED
+
+#define WINSINTF_TOO_MANY_STATIC_INITS ERROR_TOO_MANY_OPEN_FILES
+#define WINSINTF_LAST_FAILURE_CODE WINSINTF_TOO_MANY_STATIC_INITS
+
+#define WINS_BACKUP_DIR_ASCII "\\wins_bak"
+#define WINS_BACKUP_DIR TEXT(WINS_BACKUP_DIR_ASCII)
+
+//
+// Flags that can be set in WINS
+//
+#define WINSINTF_BS 0x01
+#define WINSINTF_MEMORY_INFO_DUMP 0x02
+#define WINSINTF_HEAP_INFO_DUMP 0x04
+#define WINSINTF_QUE_ITEMS_DUMP 0x08
+
+//
+// Type of address families
+//
+#define WINSINTF_TCP_IP 0x0
+
+//
+// Type Of Recs to retrieve (WinsGetDbRecsByName)
+//
+// Note: There should be no ovelap of bit patterns
+//
+#define WINSINTF_STATIC 1
+#define WINSINTF_DYNAMIC 2
+#define WINSINTF_BOTH 4
+
+//
+// Max. members returned for a special group or a multihomed entry
+//
+#define WINSINTF_MAX_MEM 25
+#define WINSINTF_MAX_ADD (WINSINTF_MAX_MEM * 2)
+
+//
+// used as argument of WinsGetDbRecsByName
+//
+#define WINSINTF_BEGINNING 0
+#define WINSINTF_END 1
+
+#if 0
+#define WINSINTF_INC_RPC_THD_CNT \
+ { \
+ EnterCrticalSection(&WinsIntfCrtSec); \
+ WinsIntfNoOfRpcThds++; \
+ LeaveCriticalSection(&WinsIntfCrtSec); \
+ }
+#define WINSINTF_DEC_RPC_THD_CNT \
+ { \
+ EnterCrticalSection(&WinsIntfCrtSec); \
+ WinsIntfNoOfRpcThds--; \
+ LeaveCriticalSection(&WinsIntfCrtSec); \
+ }
+#endif
+/*
+ macros
+*/
+
+//
+// Pass the value of the field NameLen (WINSINTF_RECORD_ACTION_T) to get
+// the actual length of the name
+//
+#define WINSINTF_NAME_LEN_M(NameLen) ((NameLen) - 1)
+
+
+/*
+ externs
+*/
+struct _WINSINTF_STAT_T; //forward declaration
+
+#if !defined(MIDL_PASS)
+extern struct _WINSINTF_STAT_T WinsIntfStat;
+extern CRITICAL_SECTION WinsIntfCrtSec;
+extern CRITICAL_SECTION WinsIntfPotentiallyLongCrtSec;
+#endif
+
+extern DWORD WinsIntfNoOfNbtThds;
+extern DWORD WinsIntfNoCncrntStaticInits;
+//extern DWORD WinsIntfNoOfRpcThds;
+
+#if 0
+typedef struct _BOUNDED_STRING {
+ unsigned short size;
+#if defined(MIDL_PASS)
+ [size_is(size), string] char *pString;
+#else
+ char *pString;
+#endif
+} BOUNDED_STRING_T, *PBOUNDED_STRING_T;
+#endif
+
+#ifndef UNICODE
+#define WinsBind WinsABind
+#else
+#define WinsBind WinsUBind
+#endif
+
+/*
+* typedefs
+*/
+typedef LARGE_INTEGER WINSINTF_VERS_NO_T;
+
+//
+// NOTE NOTE NOTE
+//
+// When UNICODE is defined, the client should put a unicode string in
+// the pServerAdd and pPipeName fields.
+//
+typedef struct _WINSINTF_BIND_DATA_T {
+ DWORD fTcpIp;
+ LPSTR pServerAdd; //IP address
+ LPSTR pPipeName; //unc name
+ } WINSINTF_BIND_DATA_T, *PWINSINTF_BIND_DATA_T;
+
+
+typedef struct _WINSINTF_ADD_T {
+ BYTE Type;
+ DWORD Len;
+ DWORD IPAdd;
+ } WINSINTF_ADD_T, *PWINSINTF_ADD_T;
+
+
+#if 0
+//
+// List of addresses
+//
+typedef struct _WINSINTF_ADD_LIST_T {
+ DWORD NoOfAdds;
+#if defined(MIDL_PASS)
+ [size_is(NoOfAdds)] PWINSINTF_ADD_T pAddList;
+#else
+ PWINSINTF_ADD_T pAddList;
+#endif
+} WINSINTF_ADD_LIST_T, *PWINSINTF_ADD_LIST_T;
+
+#endif
+
+/*
+ enum definitions. Have the enum types be of the same value as given
+ in nmsdb.h for the various types (otherwise modify winsintf.c code)
+*/
+
+//
+// Wins Priority Class
+//
+typedef enum _WINSINTF_PRIORITY_CLASS_E {
+ WINSINTF_E_NORMAL = 0,
+ WINSINTF_E_HIGH
+ } WINSINTF_PRIORITY_CLASS_E, *PWINSINTF_PRIORITY_CLASS_E;
+
+//
+// same values as those defined in nmsdb.h
+//
+
+//
+//NOTE NOTE NOTE
+//
+// For the enum below, WINSINTF_E_MULTIHOMED should be the last entry. If
+// it is not, you should change WinsRecordAction (under MODIFY) in winsintf.c
+//
+// Do not disturb the order without changing wins.mib correspondingly
+//
+typedef enum _WINSINTF_RECTYPE_E {
+ WINSINTF_E_UNIQUE = 0,
+ WINSINTF_E_NORM_GROUP,
+ WINSINTF_E_SPEC_GROUP,
+ WINSINTF_E_MULTIHOMED
+ } WINSINTF_RECTYPE_E, *PWINSINTF_RECTYPE_E;
+
+//
+// Same values as those in NMSDB_STATE_E
+//
+
+//
+//NOTE NOTE NOTE
+//
+// For the enum below, WINSINTF_E_DELETED should be the last entry. If
+// it is not, you should change WinsRecordAction (under MODIFY) in winsintf.c
+//
+// NOTE NOTE NOTE
+//
+// Do not disturb the order without changing wins.mib correspondingly
+//
+typedef enum _WINSINTF_STATE_E {
+ WINSINTF_E_ACTIVE = 0,
+ WINSINTF_E_RELEASED,
+ WINSINTF_E_TOMBSTONE,
+ WINSINTF_E_DELETED
+ } WINSINTF_STATE_E, *PWINSINTF_STATE_E;
+
+typedef enum _WINSINTF_NODE_TYPE_E {
+ WINSINTF_E_BNODE = 0,
+ WINSINTF_E_PNODE,
+ WINSINTF_E_HNODE = 3,
+ } WINSINTF_NODE_TYPE_E, *PWINSINTF_NODE_TYPE_E;
+//
+// Type of action to take on a record. This is passed as the "command" to
+// WinsRecordAction.
+//
+typedef enum _WINSINTF_ACT_E {
+ WINSINTF_E_INSERT = 0,
+ WINSINTF_E_DELETE,
+ WINSINTF_E_RELEASE,
+ WINSINTF_E_MODIFY,
+ WINSINTF_E_QUERY
+ } WINSINTF_ACT_E, *PWINSINTF_ACT_E;
+
+
+//
+// Passed as argument to WinsIntfSetTime
+//
+typedef enum _WINSINTF_TIME_TYPE_E {
+ WINSINTF_E_PLANNED_PULL = 0,
+ WINSINTF_E_ADDCHG_TRIG_PULL,
+ WINSINTF_E_UPDCNT_TRIG_PULL,
+ WINSINTF_E_ADMIN_TRIG_PULL,
+ WINSINTF_E_NTWRK_TRIG_PULL,
+ WINSINTF_E_PLANNED_SCV,
+ WINSINTF_E_ADMIN_TRIG_SCV,
+ WINSINTF_E_TOMBSTONES_SCV,
+ WINSINTF_E_VERIFY_SCV,
+ WINSINTF_E_INIT_DB,
+ WINSINTF_E_WINS_START,
+ WINSINTF_E_COUNTER_RESET
+ } WINSINTF_TIME_TYPE_E, *PWINSINTF_TIME_TYPE_E;
+
+//
+// Type of trigger to send to a WINS
+//
+typedef enum _WINSINTF_TRIG_TYPE_E {
+ WINSINTF_E_PULL = 0,
+ WINSINTF_E_PUSH,
+ WINSINTF_E_PUSH_PROP
+ } WINSINTF_TRIG_TYPE_E, *PWINSINTF_TRIG_TYPE_E;
+
+
+typedef struct _WINSINTF_RECORD_ACTION_T {
+
+ WINSINTF_ACT_E Cmd_e;
+#if defined(MIDL_PASS)
+ [size_is(NameLen)] LPBYTE pName; //ansi form
+#else
+ LPBYTE pName;
+#endif
+
+ DWORD NameLen;
+ DWORD TypOfRec_e;
+ DWORD NoOfAdds;
+#if defined(MIDL_PASS)
+ [unique, size_is(NoOfAdds)] PWINSINTF_ADD_T pAdd;
+#else
+ PWINSINTF_ADD_T pAdd;
+#endif
+
+ WINSINTF_ADD_T Add;
+ LARGE_INTEGER VersNo;
+ BYTE NodeTyp;
+ DWORD OwnerId;
+ DWORD State_e;
+ DWORD fStatic;
+ DWORD TimeStamp;
+ } WINSINTF_RECORD_ACTION_T, *PWINSINTF_RECORD_ACTION_T;
+
+
+typedef struct _WINSINTF_RPL_COUNTERS_T {
+ WINSINTF_ADD_T Add;
+ DWORD NoOfRpls;
+ DWORD NoOfCommFails;
+ } WINSINTF_RPL_COUNTERS_T, *PWINSINTF_RPL_COUNTERS_T;
+//
+// Structure holds the various statistics collected by WINS
+//
+typedef struct _WINSINTF_STAT_T {
+ struct {
+ DWORD NoOfUniqueReg;
+ DWORD NoOfGroupReg;
+ DWORD NoOfQueries;
+ DWORD NoOfSuccQueries;
+ DWORD NoOfFailQueries;
+ DWORD NoOfUniqueRef;
+ DWORD NoOfGroupRef;
+ DWORD NoOfRel;
+ DWORD NoOfSuccRel;
+ DWORD NoOfFailRel;
+ DWORD NoOfUniqueCnf;
+ DWORD NoOfGroupCnf;
+ } Counters;
+ struct {
+ SYSTEMTIME WinsStartTime;
+ SYSTEMTIME LastPScvTime;
+ SYSTEMTIME LastATScvTime; //admin triggered
+ SYSTEMTIME LastTombScvTime;
+ SYSTEMTIME LastVerifyScvTime;
+ SYSTEMTIME LastPRplTime;
+ SYSTEMTIME LastATRplTime; //admin triggered
+ SYSTEMTIME LastNTRplTime; //network triggered
+ SYSTEMTIME LastACTRplTime; //address change triggered
+ SYSTEMTIME LastInitDbTime; //db initialization
+ SYSTEMTIME CounterResetTime; //counter reset time
+ } TimeStamps;
+ DWORD NoOfPnrs;
+
+#if defined(MIDL_PASS)
+ [unique, size_is(NoOfPnrs)] PWINSINTF_RPL_COUNTERS_T pRplPnrs;
+#else
+ PWINSINTF_RPL_COUNTERS_T pRplPnrs;
+#endif
+ } WINSINTF_STAT_T, *PWINSINTF_STAT_T;
+
+typedef struct _WINSINTF_ADD_VERS_MAP_T {
+ WINSINTF_ADD_T Add;
+ LARGE_INTEGER VersNo;
+ } WINSINTF_ADD_VERS_MAP_T, *PWINSINTF_ADD_VERS_MAP_T;
+
+typedef struct _WINSINTF_RESULTS_T {
+ DWORD NoOfOwners;
+ WINSINTF_ADD_VERS_MAP_T AddVersMaps[WINSINTF_MAX_NO_RPL_PNRS];
+ LARGE_INTEGER MyMaxVersNo;
+ DWORD RefreshInterval;
+ DWORD TombstoneInterval;
+ DWORD TombstoneTimeout;
+ DWORD VerifyInterval;
+ DWORD WinsPriorityClass;
+ DWORD NoOfWorkerThds;
+ WINSINTF_STAT_T WinsStat;
+ } WINSINTF_RESULTS_T, *PWINSINTF_RESULTS_T;
+
+typedef struct _WINSINTF_RESULTS_NEW_T {
+ DWORD NoOfOwners;
+#if defined(MIDL_PASS)
+ [unique, size_is(NoOfOwners)] PWINSINTF_ADD_VERS_MAP_T pAddVersMaps;
+#else
+ PWINSINTF_ADD_VERS_MAP_T pAddVersMaps;
+#endif
+ LARGE_INTEGER MyMaxVersNo;
+ DWORD RefreshInterval;
+ DWORD TombstoneInterval;
+ DWORD TombstoneTimeout;
+ DWORD VerifyInterval;
+ DWORD WinsPriorityClass;
+ DWORD NoOfWorkerThds;
+ WINSINTF_STAT_T WinsStat;
+ } WINSINTF_RESULTS_NEW_T, *PWINSINTF_RESULTS_NEW_T;
+
+typedef enum _WINSINTF_CMD_E {
+ WINSINTF_E_ADDVERSMAP = 0,
+ WINSINTF_E_CONFIG,
+ WINSINTF_E_STAT, //get statistics
+ WINSINTF_E_CONFIG_ALL_MAPS
+ } WINSINTF_CMD_E, *PWINSINTF_CMD_E;
+
+
+#if 0
+typedef struct _WINSINTF_RECS_T {
+ PWINSINTF_RECORD_ACTION_T pRow;
+ DWORD NoOfRecs;
+ DWORD TotalNoOfRecs;
+ } WINSINTF_RECS_T, *PWINSINTF_RECS_T;
+
+typedef struct _WINSINTF_RECS_T {
+ DWORD BuffSize;
+#if defined(MIDL_PASS)
+ [unique,size_is(BuffSize)] LPBYTE pRow; //will store a pointer to
+ //an array of
+ //WINSINTF_RECORD_ACTION_T
+ //recs
+#else
+ LPBYTE pRow;
+#endif
+ DWORD NoOfRecs;
+ DWORD TotalNoOfRecs;
+ } WINSINTF_RECS_T, *PWINSINTF_RECS_T;
+#endif
+
+typedef struct _WINSINTF_RECS_T {
+ DWORD BuffSize;
+#if defined(MIDL_PASS)
+ [unique,size_is(NoOfRecs)] PWINSINTF_RECORD_ACTION_T pRow; //will store a pointer to
+ //an array of
+ //WINSINTF_RECORD_ACTION_T
+ //recs
+#else
+ PWINSINTF_RECORD_ACTION_T pRow;
+#endif
+ DWORD NoOfRecs;
+ DWORD TotalNoOfRecs;
+ } WINSINTF_RECS_T, *PWINSINTF_RECS_T;
+
+//
+// Provides information to the Pull thread for pulling the specfied range
+// of records from a WINS server. This structure is passed with the
+// QUE_E_CMD_PULL_RANGE cmd.
+//
+typedef struct _WINSINTF_PULL_RANGE_INFO_T {
+ LPVOID pPnr; //info of pnr to pull from
+ WINSINTF_ADD_T OwnAdd;
+ WINSINTF_VERS_NO_T MinVersNo;
+ WINSINTF_VERS_NO_T MaxVersNo;
+ } WINSINTF_PULL_RANGE_INFO_T, *PWINSINTF_PULL_RANGE_INFO_T;
+
+//
+// NOTE NOTE NOTE:
+//
+// This structure is exactly the same as SERVER_INFO_100_CONTAINER.
+// IT SHOULD STAY THE SAME.
+//
+typedef struct _WINSINTF_BROWSER_INFO_T {
+ DWORD Id; //no use
+#if defined(MIDL_PASS)
+ [string] LPBYTE pName;
+#else
+ LPBYTE pName;
+#endif
+ } WINSINTF_BROWSER_INFO_T, *PWINSINTF_BROWSER_INFO_T;
+
+typedef struct _WINSINTF_BROWSER_NAMES_T {
+ DWORD EntriesRead; //no use
+#if defined(MIDL_PASS)
+ [unique, size_is(EntriesRead)] PWINSINTF_BROWSER_INFO_T pInfo;
+#else
+ PWINSINTF_BROWSER_INFO_T pInfo;
+#endif
+ } WINSINTF_BROWSER_NAMES_T, *PWINSINTF_BROWSER_NAMES_T;
+
+typedef enum _WINSINTF_SCV_OPC_E {
+ WINSINTF_E_SCV_GENERAL,
+ WINSINTF_E_SCV_VERIFY
+ } WINSINTF_SCV_OPC_E, *PWINSINTF_SCV_OPC_E;
+
+//
+// To send a scavenge request
+//
+typedef struct _WINSINTF_SCV_REQ_T {
+ WINSINTF_SCV_OPC_E Opcode_e;
+ DWORD Age;
+ DWORD fForce;
+ } WINSINTF_SCV_REQ_T, *PWINSINTF_SCV_REQ_T;
+
+
+/*
+* function declarations
+*/
+extern
+handle_t
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+WinsBind(
+ PWINSINTF_BIND_DATA_T pBindData
+ );
+
+extern
+VOID
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+WinsUnbind(
+ PWINSINTF_BIND_DATA_T pBindData,
+ handle_t BindHdl
+ );
+
+extern
+DWORD
+R_WinsRecordAction(
+ PWINSINTF_RECORD_ACTION_T *ppRecAction
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+WinsRecordAction(
+ PWINSINTF_RECORD_ACTION_T *ppRecAction
+ );
+
+extern
+DWORD
+R_WinsStatus(
+ //LPTSTR pWinsAddStr,
+ WINSINTF_CMD_E Cmd_e,
+ PWINSINTF_RESULTS_T pResults
+ );
+
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsStatus(
+// LPTSTR pWinsAddStr,
+ WINSINTF_CMD_E Cmd_e,
+ LPVOID pResults
+ );
+extern
+DWORD
+R_WinsStatusNew(
+ WINSINTF_CMD_E Cmd_e,
+ PWINSINTF_RESULTS_NEW_T pResults
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsStatusNew(
+ WINSINTF_CMD_E Cmd_e,
+ PWINSINTF_RESULTS_NEW_T pResults
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsStatusWHdl(
+ PWINSINTF_BIND_DATA_T pWinsHdl,
+ WINSINTF_CMD_E Cmd_e,
+ PWINSINTF_RESULTS_NEW_T pResults
+ );
+
+extern
+DWORD
+R_WinsTrigger (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_TRIG_TYPE_E TrigType_e
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsTrigger (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_TRIG_TYPE_E TrigType_e
+ );
+
+extern
+DWORD
+R_WinsDoStaticInit (
+ LPWSTR pDataFilePath,
+ DWORD fDel
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsDoStaticInit (
+ LPWSTR pDataFilePath,
+ DWORD fDel
+ );
+
+extern
+DWORD
+R_WinsGetDbRecs (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo,
+ PWINSINTF_RECS_T pRecs
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+WinsGetDbRecs (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo,
+ PWINSINTF_RECS_T pRecs
+ );
+
+extern
+DWORD
+R_WinsGetDbRecsByName (
+ PWINSINTF_ADD_T pWinsAdd,
+ DWORD Location,
+ LPBYTE pName,
+ DWORD NameLen,
+ DWORD NoOfRecsDesired,
+ DWORD TypeOfRecs,
+ PWINSINTF_RECS_T pRecs
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsGetDbRecsByName (
+ PWINSINTF_ADD_T pWinsAdd,
+ DWORD Location,
+ LPBYTE pName,
+ DWORD NameLen,
+ DWORD NoOfRecsDesired,
+ DWORD TypeOfRecs,
+ PWINSINTF_RECS_T pRecs
+ );
+
+extern
+DWORD
+R_WinsDoScavenging (
+ VOID
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsDoScavenging (
+ VOID
+ );
+extern
+DWORD
+R_WinsDoScavengingNew (
+ PWINSINTF_SCV_REQ_T pScvReq
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsDoScavengingNew (
+ PWINSINTF_SCV_REQ_T pScvReq
+ );
+
+extern
+VOID
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsIntfSetTime(
+ IN OUT PSYSTEMTIME pTime,
+ IN WINSINTF_TIME_TYPE_E TimeType_e
+ );
+extern
+DWORD
+R_WinsTerm (
+ IN handle_t ClientHdl,
+ IN short fAbruptTerm
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsTerm (
+ IN handle_t ClientHdl,
+ IN short fAbruptTerm
+ );
+extern
+DWORD
+R_WinsBackup (
+ IN LPBYTE pBackupPath,
+ IN short fIncremental
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsBackup (
+ IN LPBYTE pBackupPath,
+ IN short fIncremental
+ );
+extern
+DWORD
+R_WinsDelDbRecs (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsDelDbRecs (
+ PWINSINTF_ADD_T pWinsAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo
+ );
+extern
+DWORD
+R_WinsPullRange (
+ PWINSINTF_ADD_T pWinsAdd,
+ PWINSINTF_ADD_T pOwnAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsPullRange (
+ PWINSINTF_ADD_T pWinsAdd,
+ PWINSINTF_ADD_T pOwnAdd,
+ WINSINTF_VERS_NO_T MinVersNo,
+ WINSINTF_VERS_NO_T MaxVersNo
+ );
+
+extern
+DWORD
+R_WinsSetPriorityClass (
+ IN WINSINTF_PRIORITY_CLASS_E PrCls_e
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsSetPriorityClass (
+ IN WINSINTF_PRIORITY_CLASS_E PrCls_e
+ );
+
+extern
+DWORD
+R_WinsResetCounters (
+ VOID
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsResetCounters (
+ VOID
+ );
+
+extern
+DWORD
+R_WinsWorkerThdUpd (
+ DWORD NewNoOfNbtThds
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsWorkerThdUpd (
+ DWORD NewNoOfNbtThds
+ );
+extern
+DWORD
+WinsRestore (
+ LPBYTE BackupPath
+ );
+
+extern
+DWORD
+WinsRestoreO (
+ LPBYTE BackupPath
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsSyncUp (
+ PWINSINTF_ADD_T pWinsAdd,
+ PWINSINTF_ADD_T pOwnAdd
+ );
+
+
+extern
+DWORD
+R_WinsGetNameAndAdd(
+ PWINSINTF_ADD_T pWinsAdd,
+ LPBYTE pUncName
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsGetNameAndAdd(
+ PWINSINTF_ADD_T pWinsAdd,
+ LPBYTE pUncName
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsGetBrowserNames(
+ PWINSINTF_BIND_DATA_T pWinsHdl,
+ PWINSINTF_BROWSER_NAMES_T pNames
+ );
+
+
+extern
+VOID
+R_WinsGetBrowserNames_notify(
+ VOID
+);
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsGetBrowserNames_Old(
+ PWINSINTF_BROWSER_NAMES_T pNames
+ );
+
+extern
+DWORD
+R_WinsDeleteWins(
+ PWINSINTF_ADD_T pWinsAdd
+ );
+
+extern
+DWORD
+R_WinsSetFlags(
+ DWORD fFlags
+ );
+
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsSetFlags(
+ DWORD fFlags
+ );
+extern
+DWORD
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsDeleteWins(
+ PWINSINTF_ADD_T pWinsAdd
+ );
+
+extern
+void
+#if !defined(MIDL_PASS)
+__RPC_FAR * __RPC_API
+//void * __RPC_API
+//void *
+#endif // MIDL_PASS
+midl_user_allocate(size_t cBytes);
+
+extern
+//void __RPC_FAR * __RPC_API
+void
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+//void
+//midl_user_free(void __RPC_FAR *pMem);
+midl_user_free(void *pMem);
+
+extern
+VOID
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsFreeMem(LPVOID pMem);
+
+extern
+LPVOID
+#if !defined(MIDL_PASS)
+__RPC_API
+#endif // MIDL_PASS
+
+WinsAllocMem(size_t cBytes);
+
+typedef struct _TREE_T {
+#if defined(MIDL_PASS)
+ [unique] struct _TREE_T *fPtr;
+ [ignore, unique] struct _TREE_T *bPtr;
+ [unique, size_is(NameLen)] LPBYTE pName;
+#else
+ struct _TREE_T *fPtr;
+ struct _TREE_T *bPtr;
+ LPBYTE pName;
+#endif
+ unsigned short NameLen;
+ DWORD x;
+ } TREE_T, *PTREE_T;
+
+
+
+#endif