windows-nt/Source/XPSP1/NT/ds/published/inc/brcommon.w
2020-09-26 16:20:57 +08:00

327 lines
7.4 KiB
OpenEdge ABL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
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_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
);
#ifdef ENABLE_PSEUDO_BROWSER
BOOL
IsEnumServerEnabled(
VOID
);
DWORD
GetBrowserPseudoServerLevel(
VOID
);
#endif
#endif // _BRCOMMON_