|
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
brcommon.h
Abstract:
Header for utility routines for the browser service.
Author:
Larry Osterman (LarryO) 23-Mar-1992
Environment:
User Mode - Win32
Revision History:
--*/
#ifndef _BRCOMMON_ #define _BRCOMMON_
#include <winsvc.h> #include <svcs.h> // PSVCS_NET_BIOS_RESET
#if DEVL // // Codes for I_BrowserDebugCall //
#define BROWSER_DEBUG_BREAK_POINT 0 #define BROWSER_DEBUG_DUMP_NETWORKS 1 #define BROWSER_DEBUG_DUMP_SERVERS 2 #define BROWSER_DEBUG_ENABLE_BROWSER 3 #define BROWSER_DEBUG_SET_DEBUG 4 #define BROWSER_DEBUG_CLEAR_DEBUG 5 #define BROWSER_DEBUG_TICKLE 6 #define BROWSER_DEBUG_ELECT 7 #define BROWSER_DEBUG_GET_MASTER 8 #define BROWSER_DEBUG_FIND_MASTER 9 #define BROWSER_DEBUG_GET_BACKUP_LIST 10 #define BROWSER_DEBUG_ANNOUNCE_MASTER 11 #define BROWSER_DEBUG_ILLEGAL_DGRAM 12 #define BROWSER_DEBUG_GET_OTHLIST 13 #define BROWSER_DEBUG_ADD_MASTERNAME 14 #define BROWSER_DEBUG_VIEW 15 #define BROWSER_DEBUG_FORCE_ANNOUNCE 16 #define BROWSER_DEBUG_LOCAL_BRLIST 17 #define BROWSER_DEBUG_ANNOUNCE 18 #define BROWSER_DEBUG_RPCLIST 19 #define BROWSER_DEBUG_RPCCMP 20 #define BROWSER_DEBUG_TRUNCATE_LOG 21 #define BROWSER_DEBUG_STATISTICS 22 #define BROWSER_DEBUG_BOWSERDEBUG 23 #define BROWSER_DEBUG_POPULATE_SERVER 24 #define BROWSER_DEBUG_POPULATE_DOMAIN 25 #define BROWSER_DEBUG_LIST_WFW 26 #define BROWSER_DEBUG_STATUS 27 #define BROWSER_DEBUG_GETPDC 28 #define BROWSER_DEBUG_ADD_DOMAINNAME 29 #define BROWSER_DEBUG_GET_WINSSERVER 30 #define BROWSER_DEBUG_GET_DOMAINLIST 31 #define BROWSER_DEBUG_GET_NETBIOSNAMES 32 #define BROWSER_DEBUG_SET_EMULATEDDOMAIN 33 #define BROWSER_DEBUG_SET_EMULATEDDOMAINENUM 34 #define BROWSER_DEBUG_ADD_ALTERNATE 35 #define BROWSER_DEBUG_BIND_TRANSPORT 36 #define BROWSER_DEBUG_UNBIND_TRANSPORT 37 #define BROWSER_DEBUG_RENAME_DOMAIN 38
// // Debug trace level bits for turning on/off trace statements in the // browser service //
#define BR_CRITICAL 0x00000001 #define BR_INIT 0x00000002 #define BR_UTIL 0x00000020 #define BR_CONFIG 0x00000040 #define BR_MAIN 0x00000080 #define BR_BACKUP 0x00000400 #define BR_MASTER 0x00000800 #define BR_DOMAIN 0x00001000 #define BR_NETWORK 0x00002000 #define BR_CLIENT_OP 0x00004000 #define BR_COMMON 0x0000FFFF
#define BR_TIMER 0x00010000 #define BR_QUEUE 0x00020000 #define BR_LOCKS 0x00040000 #define BR_SERVER_ENUM 0x00100000
#define BR_ALL 0xFFFFFFFF
NET_API_STATUS I_BrowserDebugCall ( IN LPWSTR servername OPTIONAL, IN DWORD DebugCode, IN DWORD OptionalValue );
#endif
typedef struct _INTERIM_ELEMENT { LIST_ENTRY NextElement; ULONG Periodicity; ULONG TimeLastSeen; ULONG PlatformId; ULONG MajorVersionNumber; ULONG MinorVersionNumber; ULONG Type; WCHAR Name[CNLEN+1]; WCHAR Comment[LM20_MAXCOMMENTSZ+1]; } INTERIM_ELEMENT, *PINTERIM_ELEMENT;
struct _INTERIM_SERVER_LIST;
typedef VOID (*PINTERIM_NEW_CALLBACK)( IN struct _INTERIM_SERVER_LIST *InterimList, IN PINTERIM_ELEMENT Element );
typedef VOID (*PINTERIM_EXISTING_CALLBACK)( IN struct _INTERIM_SERVER_LIST *InterimList, IN PINTERIM_ELEMENT Element );
typedef VOID (*PINTERIM_DELETE_CALLBACK)( IN struct _INTERIM_SERVER_LIST *InterimList, IN PINTERIM_ELEMENT Element );
typedef BOOLEAN (*PINTERIM_AGE_CALLBACK)( IN struct _INTERIM_SERVER_LIST *InterimList, IN PINTERIM_ELEMENT Element );
typedef struct _INTERIM_SERVER_LIST { // RTL_GENERIC_TABLE ServerTable; LIST_ENTRY ServerList; ULONG TotalBytesNeeded; ULONG TotalEntries; ULONG EntriesRead; PINTERIM_NEW_CALLBACK NewElementCallback; PINTERIM_EXISTING_CALLBACK ExistingElementCallback; PINTERIM_DELETE_CALLBACK DeleteElementCallback; PINTERIM_AGE_CALLBACK AgeElementCallback; } INTERIM_SERVER_LIST, *PINTERIM_SERVER_LIST;
NET_API_STATUS DeviceControlGetInfo( IN HANDLE FileHandle, IN ULONG DeviceControlCode, IN PVOID RequestPacket, IN ULONG RequestPacketLength, OUT LPVOID *OutputBuffer, IN ULONG PreferedMaximumLength, IN ULONG BufferHintSize, OUT PULONG Information OPTIONAL );
NET_API_STATUS BrDgReceiverIoControl( IN HANDLE FileHandle, IN ULONG DgReceiverControlCode, IN PLMDR_REQUEST_PACKET Drp, IN ULONG DrpSize, IN PVOID SecondBuffer OPTIONAL, IN ULONG SecondBufferLength, OUT PULONG Information OPTIONAL );
NET_API_STATUS OpenBrowser( OUT PHANDLE BrowserHandle );
NET_API_STATUS GetBrowserServerList( IN PUNICODE_STRING TransportName, IN LPCWSTR domain, OUT LPWSTR *BrowserList[], OUT PULONG BrowserListLength, IN BOOLEAN ForceRescan );
NET_API_STATUS InitializeInterimServerList( IN PINTERIM_SERVER_LIST InterimServerList, IN PINTERIM_NEW_CALLBACK NewCallback, IN PINTERIM_EXISTING_CALLBACK ExistingCallback, IN PINTERIM_DELETE_CALLBACK DeleteElementCallback, IN PINTERIM_AGE_CALLBACK AgeElementCallback );
NET_API_STATUS CopyInterimServerList( IN PINTERIM_SERVER_LIST NewInterimServerList, IN PINTERIM_SERVER_LIST OldInterimServerList );
NET_API_STATUS UninitializeInterimServerList( IN PINTERIM_SERVER_LIST InterimServerList );
NET_API_STATUS InsertElementInterimServerList ( IN PINTERIM_SERVER_LIST InterimServerList, IN PINTERIM_ELEMENT InterimElement, IN ULONG Level, IN PBOOLEAN NewElement OPTIONAL, IN PINTERIM_ELEMENT *ActualElement OPTIONAL );
ULONG NumberInterimServerListElements( IN PINTERIM_SERVER_LIST InterimServerList );
NET_API_STATUS AgeInterimServerList( IN PINTERIM_SERVER_LIST InterimServerList );
NET_API_STATUS MergeServerList( IN PINTERIM_SERVER_LIST InterimServerList, IN ULONG level, IN PVOID NewServerList, IN ULONG NewEntriesRead, IN ULONG NewTotalEntries );
PINTERIM_ELEMENT LookupInterimServerList( IN PINTERIM_SERVER_LIST InterimServerList, IN LPWSTR ServerNameToLookUp );
NET_API_STATUS PackServerList( IN PINTERIM_SERVER_LIST InterimServerList, IN ULONG Level, IN ULONG ServerType, IN ULONG PreferedDataLength, OUT PVOID *bufptr, OUT PULONG entriesread, OUT PULONG totalentries, IN LPCWSTR FirstNameToReturn );
VOID PrepareServerListForMerge( IN PVOID ServerInfoList, IN ULONG Level, IN ULONG EntriesInList );
NET_API_STATUS CheckForService( IN LPWSTR ServiceName, OUT LPSERVICE_STATUS ServiceStatus OPTIONAL );
NET_API_STATUS BrGetLanaNumFromNetworkName( IN LPWSTR TransportName, OUT CCHAR *LanaNum );
NET_API_STATUS GetNetBiosMasterName( IN LPWSTR NetworkName, IN LPWSTR PrimaryDomain, OUT LPWSTR MasterName, IN PSVCS_NET_BIOS_RESET SvcsNetBiosReset OPTIONAL );
NET_API_STATUS SendDatagram( IN HANDLE DgReceiverHandle, IN PUNICODE_STRING Network, IN PUNICODE_STRING EmulatedDomainName, IN PWSTR ResponseName, IN DGRECEIVER_NAME_TYPE NameType, IN PVOID Buffer, IN ULONG BufferLength );
NET_API_STATUS SendDatagramAsync( IN HANDLE DgReceiverHandle, IN PUNICODE_STRING Network, IN PUNICODE_STRING EmulatedDomainName, IN PWSTR ResponseName, IN DGRECEIVER_NAME_TYPE NameType, IN PVOID Buffer, IN ULONG BufferLength );
#ifdef ENABLE_PSEUDO_BROWSER BOOL IsEnumServerEnabled( VOID );
DWORD GetBrowserPseudoServerLevel( VOID ); #endif
#endif // _BRCOMMON_
|