|
|
#ifndef WINSINTF_H
#define WINSINTF_H
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
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 <rpcasync.h>
#include <winerror.h>
#endif
#ifdef WINS_CLIENT_APIS
#define DECLARE_WINS_HANDLE( _hdl ) WINSIF2_HANDLE _hdl,
#define DECLARE_WINS_HANDLE0( _hdl ) WINSIF2_HANDLE _hdl
#else
#define DECLARE_WINS_HANDLE( _hdl )
#define DECLARE_WINS_HANDLE0( _hdl )
#endif WINS_CLIENT_APIS
/*
defines */ #define WINSINTF_MAX_NAME_SIZE 255
//#define WINSINTF_MAX_COMPUTERNAME_LENGTH (MAX_COMPUTERNAME_LENGTH + 1)
#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
#define WINS_NO_ACCESS 0x0
#define WINS_CONTROL_ACCESS 0x0001
#define WINS_QUERY_ACCESS 0x0002
#define WINS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
WINS_CONTROL_ACCESS |WINS_QUERY_ACCESS)
//
// 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
/*
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;
#ifndef UNICODE
#define WinsBind WinsABind
#else
#define WinsBind WinsUBind
#endif
/*
* typedefs */ typedef LARGE_INTEGER WINSINTF_VERS_NO_T; typedef handle_t WINSIF2_HANDLE;
//
// 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;
/*
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 + 1)] 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_PTR 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 dwNameLen; #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; typedef enum _DbVersion{ DbVersionMin, DbVersion351 = 1, DbVersion4, DbVersion5, DbVersionMax } DbVersion;
/*
* 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( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_RECORD_ACTION_T *ppRecAction );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsRecordAction( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_RECORD_ACTION_T *ppRecAction );
extern DWORD R_WinsStatus( DECLARE_WINS_HANDLE( ServerHdl ) WINSINTF_CMD_E Cmd_e, PWINSINTF_RESULTS_T pResults );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsStatus( DECLARE_WINS_HANDLE( ServerHdl ) WINSINTF_CMD_E Cmd_e, LPVOID pResults ); extern DWORD R_WinsStatusNew( DECLARE_WINS_HANDLE( ServerHdl ) WINSINTF_CMD_E Cmd_e, PWINSINTF_RESULTS_NEW_T pResults ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsStatusNew( DECLARE_WINS_HANDLE( ServerHdl ) 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 ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, WINSINTF_TRIG_TYPE_E TrigType_e ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsTrigger ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, WINSINTF_TRIG_TYPE_E TrigType_e );
extern DWORD R_WinsDoStaticInit ( DECLARE_WINS_HANDLE( ServerHdl ) LPWSTR pDataFilePath, DWORD fDel );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsDoStaticInit ( DECLARE_WINS_HANDLE( ServerHdl ) LPWSTR pDataFilePath, DWORD fDel );
extern DWORD R_WinsGetDbRecs ( DECLARE_WINS_HANDLE( ServerHdl ) 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 ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, WINSINTF_VERS_NO_T MinVersNo, WINSINTF_VERS_NO_T MaxVersNo, PWINSINTF_RECS_T pRecs );
extern DWORD R_WinsGetDbRecsByName ( DECLARE_WINS_HANDLE( ServerHdl ) 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 ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, DWORD Location, LPBYTE pName, DWORD NameLen, DWORD NoOfRecsDesired, DWORD TypeOfRecs, PWINSINTF_RECS_T pRecs );
extern DWORD R_WinsDoScavenging ( DECLARE_WINS_HANDLE0( ServerHdl ) );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsDoScavenging ( DECLARE_WINS_HANDLE0( ServerHdl ) ); extern DWORD R_WinsDoScavengingNew ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_SCV_REQ_T pScvReq );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsDoScavengingNew ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_SCV_REQ_T pScvReq );
extern VOID #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsIntfSetTime( DECLARE_WINS_HANDLE( ServerHdl ) IN OUT PSYSTEMTIME pTime, IN WINSINTF_TIME_TYPE_E TimeType_e ); extern DWORD R_WinsTerm ( handle_t ServerHdl, IN short fAbruptTerm ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsTerm ( handle_t ServerHdl, IN short fAbruptTerm ); extern DWORD R_WinsBackup ( DECLARE_WINS_HANDLE( ServerHdl ) IN LPBYTE pBackupPath, IN short fIncremental ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsBackup ( DECLARE_WINS_HANDLE( ServerHdl ) IN LPBYTE pBackupPath, IN short fIncremental ); extern DWORD R_WinsDelDbRecs ( DECLARE_WINS_HANDLE( ServerHdl ) 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 ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, WINSINTF_VERS_NO_T MinVersNo, WINSINTF_VERS_NO_T MaxVersNo ); extern DWORD R_WinsPullRange ( DECLARE_WINS_HANDLE( ServerHdl ) 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 ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, PWINSINTF_ADD_T pOwnAdd, WINSINTF_VERS_NO_T MinVersNo, WINSINTF_VERS_NO_T MaxVersNo );
extern DWORD R_WinsSetPriorityClass ( DECLARE_WINS_HANDLE( ServerHdl ) IN WINSINTF_PRIORITY_CLASS_E PrCls_e ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsSetPriorityClass ( DECLARE_WINS_HANDLE( ServerHdl ) IN WINSINTF_PRIORITY_CLASS_E PrCls_e );
extern DWORD R_WinsResetCounters ( DECLARE_WINS_HANDLE0( ServerHdl ) );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsResetCounters ( DECLARE_WINS_HANDLE0( ServerHdl ) );
extern DWORD R_WinsWorkerThdUpd ( DECLARE_WINS_HANDLE( ServerHdl ) DWORD NewNoOfNbtThds );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsWorkerThdUpd ( DECLARE_WINS_HANDLE( ServerHdl ) DWORD NewNoOfNbtThds ); extern DWORD WinsRestore ( LPBYTE BackupPath );
extern DWORD WinsRestoreEx ( LPBYTE BackupPath , DbVersion Version );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsSyncUp ( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, PWINSINTF_ADD_T pOwnAdd );
extern DWORD R_WinsGetNameAndAdd( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd, LPBYTE pUncName );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsGetNameAndAdd( DECLARE_WINS_HANDLE( ServerHdl ) 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( DECLARE_WINS_HANDLE0( ServerHdl ) );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsGetBrowserNames_Old( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_BROWSER_NAMES_T pNames );
extern DWORD R_WinsDeleteWins( DECLARE_WINS_HANDLE( ServerHdl ) PWINSINTF_ADD_T pWinsAdd );
extern DWORD R_WinsSetFlags( DECLARE_WINS_HANDLE( ServerHdl ) DWORD fFlags );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsSetFlags( DECLARE_WINS_HANDLE( ServerHdl ) DWORD fFlags ); extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsDeleteWins( DECLARE_WINS_HANDLE( ServerHdl ) 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;
extern DWORD R_WinsTombstoneDbRecs ( WINSIF2_HANDLE ServerHdl, 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
WinsTombstoneDbRecs ( DECLARE_WINS_HANDLE (ServerHdl) PWINSINTF_ADD_T pWinsAdd, WINSINTF_VERS_NO_T MinVersNo, WINSINTF_VERS_NO_T MaxVersNo );
extern DWORD R_WinsCheckAccess( WINSIF2_HANDLE ServerHdl, DWORD *Access );
extern DWORD #if !defined(MIDL_PASS)
__RPC_API #endif // MIDL_PASS
WinsCheckAccess( WINSIF2_HANDLE ServerHdl, DWORD *Access );
#endif
|