Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

422 lines
17 KiB

/*++
Copyright (c) 1991-1992 Microsoft Corporation
Module Name:
DispSrv.c
Abstract:
This module contains a routine to do a formatted dump of a server info
structure.
Author:
John Rogers (JohnRo) 13-Jun-1991
Environment:
Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
Requires ANSI C extensions: slash-slash comments, long external names.
Revision History:
13-Jun-1991 JohnRo
Extracted from RxTest code.
14-Jun-1991 JohnRo
Added support for info levels 0 and 3.
14-Jun-1991 JohnRo
Do formatted display of server type for all info levels.
Ditto for lanman version number.
19-Jun-1991 JohnRo
Changed sv102_disc to be signed, and changed SV_NODISC to be 32-bits.
Added svX_licenses support.
25-Jul-1991 JohnRo
Wksta debug support.
19-Aug-1991 JohnRo
PC-LINT found a portability problem.
30-Sep-1991 JohnRo
Work toward UNICODE.
26-Aug-1992 JohnRo
RAID 4463: NetServerGetInfo(level 3) to downlevel: assert in convert.c.
--*/
// These must be included first:
#include <windef.h> // IN, DWORD, etc.
#include <lmcons.h> // NET_API_STATUS.
// These may be included in any order:
#include <dlserver.h> // SERVER_INFO_1, etc.
#include <lmserver.h> // SERVER_INFO_100, SV_TYPE_ equates, etc.
#include <netdebug.h> // DBGSTATIC, NetpDbgDisplay routines.
#include <tstring.h> // STRCAT(), STRCPY().
#if DBG
DBGSTATIC VOID
NetpDbgDisplayDisconnectTime(
IN LONG DiscTime
)
{
NetpDbgDisplayTag( "Idle session time (min)" );
if (DiscTime == SV_NODISC) {
NetpKdPrint(("infinite\n" ));
} else {
NetpKdPrint((FORMAT_LONG "\n", DiscTime ));
}
} // NetpDbgDisplayDisconnectTime
DBGSTATIC VOID
NetpDbgDisplayLicenses(
IN DWORD MajorVersion,
IN DWORD Licenses
)
{
// BUGBUG: Eventually, use <srvver.h> stuff to handle unlimited and other
// types of licenses. This is indicated in MajorVersion.
UNREFERENCED_PARAMETER( MajorVersion );
NetpDbgDisplayDword( "Licenses (NOT users)", Licenses );
} // NetpDbgDisplayLicenses
DBGSTATIC VOID
NetpDbgDisplayServerType(
IN DWORD Type
)
{
// Longest name is "POTENTIAL_BROWSER" (17 chars)
TCHAR str[(17+2)*17]; // 17 chars per name, 2 spaces, for 17 names.
str[0] = '\0';
#define DO(name) \
if (Type & SV_TYPE_ ## name) { \
(void) STRCAT(str, (LPTSTR) TEXT(# name)); \
(void) STRCAT(str, (LPTSTR) TEXT(" ")); \
Type &= ~(SV_TYPE_ ## name); \
}
NetpAssert(Type != 0);
DO(WORKSTATION)
DO(SERVER)
DO(SQLSERVER)
DO(DOMAIN_CTRL)
DO(DOMAIN_BAKCTRL)
DO(TIME_SOURCE)
DO(AFP)
DO(NOVELL)
DO(DOMAIN_MEMBER)
DO(PRINTQ_SERVER)
DO(DIALIN_SERVER)
DO(XENIX_SERVER)
DO(NT)
DO(POTENTIAL_BROWSER)
DO(BACKUP_BROWSER)
DO(MASTER_BROWSER)
DO(DOMAIN_MASTER)
NetpDbgDisplayString("server type", str);
if (Type != 0) {
NetpDbgDisplayDwordHex( "UNEXPECTED TYPE BIT(S)", Type );
}
} // NetpDbgDisplayServerType
VOID
NetpDbgDisplayServerInfo(
IN DWORD Level,
IN LPVOID Info
)
{
NetpKdPrint(("server info (level " FORMAT_DWORD ") at "
FORMAT_LPVOID ":\n", Level, (LPVOID) Info));
NetpAssert(Info != NULL);
switch (Level) {
case 0 :
{
LPSERVER_INFO_0 psv0 = Info;
NetpDbgDisplayString("name", psv0->sv0_name);
}
break;
case 1 :
{
LPSERVER_INFO_1 psv1 = Info;
NetpDbgDisplayString("name", psv1->sv1_name);
NetpDbgDisplayLanManVersion(
psv1->sv1_version_major,
psv1->sv1_version_minor);
NetpDbgDisplayServerType( psv1->sv1_type );
NetpDbgDisplayString("comment", psv1->sv1_comment);
}
break;
case 2 :
{
LPSERVER_INFO_2 psv2 = Info;
NetpDbgDisplayString("name", psv2->sv2_name);
NetpDbgDisplayLanManVersion(
psv2->sv2_version_major,
psv2->sv2_version_minor);
NetpDbgDisplayServerType( psv2->sv2_type );
NetpDbgDisplayString("comment", psv2->sv2_comment);
NetpDbgDisplayTimestamp("ulist_mtime", psv2->sv2_ulist_mtime);
NetpDbgDisplayTimestamp("glist_mtime", psv2->sv2_glist_mtime);
NetpDbgDisplayTimestamp("alist_mtime", psv2->sv2_alist_mtime);
NetpDbgDisplayDword("users", psv2->sv2_users);
NetpDbgDisplayDisconnectTime( psv2->sv2_disc);
NetpDbgDisplayString("alerts", psv2->sv2_alerts);
NetpDbgDisplayDword("security", psv2->sv2_security);
NetpDbgDisplayDword("auditing", psv2->sv2_auditing);
NetpDbgDisplayDword("numadmin", psv2->sv2_numadmin);
NetpDbgDisplayDword("lanmask", psv2->sv2_lanmask);
NetpDbgDisplayDword("hidden", psv2->sv2_hidden);
NetpDbgDisplayDword("announce", psv2->sv2_announce);
NetpDbgDisplayDword("anndelta", psv2->sv2_anndelta);
NetpDbgDisplayString("guestacct", psv2->sv2_guestacct);
NetpDbgDisplayLicenses(
psv2->sv2_version_major,
psv2->sv2_licenses );
NetpDbgDisplayString("userpath", psv2->sv2_userpath);
NetpDbgDisplayDword("chdevs", psv2->sv2_chdevs);
NetpDbgDisplayDword("chdevq", psv2->sv2_chdevq);
NetpDbgDisplayDword("chdevjobs", psv2->sv2_chdevjobs);
NetpDbgDisplayDword("connections", psv2->sv2_connections);
NetpDbgDisplayDword("shares", psv2->sv2_shares);
NetpDbgDisplayDword("openfiles", psv2->sv2_openfiles);
NetpDbgDisplayDword("sessopens", psv2->sv2_sessopens);
NetpDbgDisplayDword("sessvcs", psv2->sv2_sessvcs);
NetpDbgDisplayDword("sessreqs", psv2->sv2_sessreqs);
NetpDbgDisplayDword("opensearch", psv2->sv2_opensearch);
NetpDbgDisplayDword("activelocks", psv2->sv2_activelocks);
NetpDbgDisplayDword("numreqbuf", psv2->sv2_numreqbuf);
NetpDbgDisplayDword("sizreqbuf", psv2->sv2_sizreqbuf);
NetpDbgDisplayDword("numbigbuf", psv2->sv2_numbigbuf);
NetpDbgDisplayDword("numfiletasks", psv2->sv2_numfiletasks);
NetpDbgDisplayDword("alertsched", psv2->sv2_alertsched);
NetpDbgDisplayDword("erroralert", psv2->sv2_erroralert);
NetpDbgDisplayDword("logonalert", psv2->sv2_logonalert);
NetpDbgDisplayDword("accessalert", psv2->sv2_accessalert);
NetpDbgDisplayDword("diskalert", psv2->sv2_diskalert);
NetpDbgDisplayDword("netioalert", psv2->sv2_netioalert);
NetpDbgDisplayDword("maxauditsz", psv2->sv2_maxauditsz);
NetpDbgDisplayString("srvheuristics", psv2->sv2_srvheuristics);
}
break;
case 3 :
{
LPSERVER_INFO_3 psv3 = Info;
NetpDbgDisplayString("name", psv3->sv3_name);
NetpDbgDisplayLanManVersion(
psv3->sv3_version_major,
psv3->sv3_version_minor);
NetpDbgDisplayServerType( psv3->sv3_type );
NetpDbgDisplayString("comment", psv3->sv3_comment);
NetpDbgDisplayTimestamp("ulist_mtime", psv3->sv3_ulist_mtime);
NetpDbgDisplayTimestamp("glist_mtime", psv3->sv3_glist_mtime);
NetpDbgDisplayTimestamp("alist_mtime", psv3->sv3_alist_mtime);
NetpDbgDisplayDword("users", psv3->sv3_users);
NetpDbgDisplayDisconnectTime( psv3->sv3_disc );
NetpDbgDisplayString("alerts", psv3->sv3_alerts);
NetpDbgDisplayDword("security", psv3->sv3_security);
NetpDbgDisplayDword("auditing", psv3->sv3_auditing);
NetpDbgDisplayDword("numadmin", psv3->sv3_numadmin);
NetpDbgDisplayDword("lanmask", psv3->sv3_lanmask);
NetpDbgDisplayDword("hidden", psv3->sv3_hidden);
NetpDbgDisplayDword("announce", psv3->sv3_announce);
NetpDbgDisplayDword("anndelta", psv3->sv3_anndelta);
NetpDbgDisplayString("guestacct", psv3->sv3_guestacct);
NetpDbgDisplayLicenses(
psv3->sv3_version_major,
psv3->sv3_licenses );
NetpDbgDisplayString("userpath", psv3->sv3_userpath);
NetpDbgDisplayDword("chdevs", psv3->sv3_chdevs);
NetpDbgDisplayDword("chdevq", psv3->sv3_chdevq);
NetpDbgDisplayDword("chdevjobs", psv3->sv3_chdevjobs);
NetpDbgDisplayDword("connections", psv3->sv3_connections);
NetpDbgDisplayDword("shares", psv3->sv3_shares);
NetpDbgDisplayDword("openfiles", psv3->sv3_openfiles);
NetpDbgDisplayDword("sessopens", psv3->sv3_sessopens);
NetpDbgDisplayDword("sessvcs", psv3->sv3_sessvcs);
NetpDbgDisplayDword("sessreqs", psv3->sv3_sessreqs);
NetpDbgDisplayDword("opensearch", psv3->sv3_opensearch);
NetpDbgDisplayDword("activelocks", psv3->sv3_activelocks);
NetpDbgDisplayDword("numreqbuf", psv3->sv3_numreqbuf);
NetpDbgDisplayDword("sizreqbuf", psv3->sv3_sizreqbuf);
NetpDbgDisplayDword("numbigbuf", psv3->sv3_numbigbuf);
NetpDbgDisplayDword("numfiletasks", psv3->sv3_numfiletasks);
NetpDbgDisplayDword("alertsched", psv3->sv3_alertsched);
NetpDbgDisplayDword("erroralert", psv3->sv3_erroralert);
NetpDbgDisplayDword("logonalert", psv3->sv3_logonalert);
NetpDbgDisplayDword("accessalert", psv3->sv3_accessalert);
NetpDbgDisplayDword("diskalert", psv3->sv3_diskalert);
NetpDbgDisplayDword("netioalert", psv3->sv3_netioalert);
NetpDbgDisplayDword("maxauditsz", psv3->sv3_maxauditsz);
NetpDbgDisplayString("srvheuristics", psv3->sv3_srvheuristics);
NetpDbgDisplayDword("auditedevents", psv3->sv3_auditedevents);
NetpDbgDisplayDword("autoprofile", psv3->sv3_autoprofile);
NetpDbgDisplayString("autopath", psv3->sv3_autopath);
}
break;
case 100 :
{
LPSERVER_INFO_100 psv100 = Info;
NetpDbgDisplayPlatformId( psv100->sv100_platform_id );
NetpDbgDisplayString("Server Name", psv100->sv100_name);
}
break;
case 101 :
{
LPSERVER_INFO_101 psv101 = Info;
NetpDbgDisplayPlatformId( psv101->sv101_platform_id );
NetpDbgDisplayString("Server Name", psv101->sv101_name);
NetpDbgDisplayLanManVersion(
psv101->sv101_version_major,
psv101->sv101_version_minor);
NetpDbgDisplayServerType( psv101->sv101_type );
NetpDbgDisplayString( "Server Comment", psv101->sv101_comment);
}
break;
case 102 :
{
LPSERVER_INFO_102 psv102 = Info;
NetpDbgDisplayPlatformId( psv102->sv102_platform_id );
NetpDbgDisplayString("Server Name", psv102->sv102_name);
NetpDbgDisplayLanManVersion(
psv102->sv102_version_major,
psv102->sv102_version_minor );
NetpDbgDisplayServerType( psv102->sv102_type );
NetpDbgDisplayString( "Server Comment", psv102->sv102_comment );
NetpDbgDisplayDword( "users", psv102->sv102_users );
NetpDbgDisplayBool( "Server hidden", psv102->sv102_hidden );
NetpDbgDisplayDword( "announce", psv102->sv102_announce );
NetpDbgDisplayDword( "announce delta", psv102->sv102_anndelta );
NetpDbgDisplayLicenses(
psv102->sv102_version_major,
psv102->sv102_licenses );
NetpDbgDisplayString( "user path", psv102->sv102_userpath );
}
break;
case 402 :
{
LPSERVER_INFO_402 psv402 = Info;
NetpDbgDisplayTimestamp("ulist mtime", psv402->sv402_ulist_mtime);
NetpDbgDisplayTimestamp("glist mtime", psv402->sv402_glist_mtime);
NetpDbgDisplayTimestamp("alist mtime", psv402->sv402_alist_mtime);
NetpDbgDisplayString("alerts", psv402->sv402_alerts);
NetpDbgDisplayDword("security", psv402->sv402_security);
NetpDbgDisplayDword("numadmin", psv402->sv402_numadmin);
NetpDbgDisplayDwordHex("lanmask", psv402->sv402_lanmask);
NetpDbgDisplayString("guestacct", psv402->sv402_guestacct);
NetpDbgDisplayDword("chdevs", psv402->sv402_chdevs);
NetpDbgDisplayDword("chdevq", psv402->sv402_chdevq);
NetpDbgDisplayDword("chdevjobs", psv402->sv402_chdevjobs);
NetpDbgDisplayDword("connections", psv402->sv402_connections);
NetpDbgDisplayDword("shares", psv402->sv402_shares);
NetpDbgDisplayDword("openfiles", psv402->sv402_openfiles);
NetpDbgDisplayDword("sessopens", psv402->sv402_sessopens);
NetpDbgDisplayDword("sessvcs", psv402->sv402_sessvcs);
NetpDbgDisplayDword("sessreqs", psv402->sv402_sessreqs);
NetpDbgDisplayDword("opensearch", psv402->sv402_opensearch);
NetpDbgDisplayDword("activelocks", psv402->sv402_activelocks);
NetpDbgDisplayDword("numreqbuf", psv402->sv402_numreqbuf);
NetpDbgDisplayDword("sizreqbuf", psv402->sv402_sizreqbuf);
NetpDbgDisplayDword("numbigbuf", psv402->sv402_numbigbuf);
NetpDbgDisplayDword("numfiletasks", psv402->sv402_numfiletasks);
NetpDbgDisplayDword("alertsched", psv402->sv402_alertsched);
NetpDbgDisplayDword("erroralert", psv402->sv402_erroralert);
NetpDbgDisplayDword("logonalert", psv402->sv402_logonalert);
NetpDbgDisplayDword("diskalert", psv402->sv402_diskalert);
NetpDbgDisplayDword("accessalert", psv402->sv402_accessalert);
NetpDbgDisplayDword("diskalert", psv402->sv402_diskalert);
NetpDbgDisplayDword("netioalert", psv402->sv402_netioalert);
NetpDbgDisplayDword("maxauditsz", psv402->sv402_maxauditsz);
NetpDbgDisplayString("srvheuristics", psv402->sv402_srvheuristics);
}
break;
case 403 :
{
LPSERVER_INFO_403 psv403 = Info;
NetpDbgDisplayTimestamp("ulist mtime", psv403->sv403_ulist_mtime);
NetpDbgDisplayTimestamp("glist mtime", psv403->sv403_glist_mtime);
NetpDbgDisplayTimestamp("alist mtime", psv403->sv403_alist_mtime);
NetpDbgDisplayString("alerts", psv403->sv403_alerts);
NetpDbgDisplayDword("security", psv403->sv403_security);
NetpDbgDisplayDword("numadmin", psv403->sv403_numadmin);
NetpDbgDisplayDwordHex("lanmask", psv403->sv403_lanmask);
NetpDbgDisplayString("guestacct", psv403->sv403_guestacct);
NetpDbgDisplayDword("chdevs", psv403->sv403_chdevs);
NetpDbgDisplayDword("chdevq", psv403->sv403_chdevq);
NetpDbgDisplayDword("chdevjobs", psv403->sv403_chdevjobs);
NetpDbgDisplayDword("connections", psv403->sv403_connections);
NetpDbgDisplayDword("shares", psv403->sv403_shares);
NetpDbgDisplayDword("openfiles", psv403->sv403_openfiles);
NetpDbgDisplayDword("sessopens", psv403->sv403_sessopens);
NetpDbgDisplayDword("sessvcs", psv403->sv403_sessvcs);
NetpDbgDisplayDword("sessreqs", psv403->sv403_sessreqs);
NetpDbgDisplayDword("opensearch", psv403->sv403_opensearch);
NetpDbgDisplayDword("activelocks", psv403->sv403_activelocks);
NetpDbgDisplayDword("numreqbuf", psv403->sv403_numreqbuf);
NetpDbgDisplayDword("sizreqbuf", psv403->sv403_sizreqbuf);
NetpDbgDisplayDword("numbigbuf", psv403->sv403_numbigbuf);
NetpDbgDisplayDword("numfiletasks", psv403->sv403_numfiletasks);
NetpDbgDisplayDword("alertsched", psv403->sv403_alertsched);
NetpDbgDisplayDword("erroralert", psv403->sv403_erroralert);
NetpDbgDisplayDword("logonalert", psv403->sv403_logonalert);
NetpDbgDisplayDword("diskalert", psv403->sv403_diskalert);
NetpDbgDisplayDword("accessalert", psv403->sv403_accessalert);
NetpDbgDisplayDword("diskalert", psv403->sv403_diskalert);
NetpDbgDisplayDword("netioalert", psv403->sv403_netioalert);
NetpDbgDisplayDword("maxauditsz", psv403->sv403_maxauditsz);
NetpDbgDisplayString("srvheuristics", psv403->sv403_srvheuristics);
NetpDbgDisplayDword("auditedevents", psv403->sv403_auditedevents);
NetpDbgDisplayDword("autoprofile", psv403->sv403_autoprofile);
NetpDbgDisplayString("autopath", psv403->sv403_autopath);
}
break;
// BUGBUG: RpcXlate doesn't need support for info levels 502, 503, 599.
// Feel free to add them here if you need them.
default :
NetpAssert(FALSE);
}
} // NetpDbgDisplayServerInfo
#else
//
// This routine is exported from netapi32.dll. We want it to still
// be there in the free build, so checked binaries will run on a free
// build. The following undef is to get rid of the macro that causes
// it to not be called in free builds.
//
#undef NetpDbgDisplayServerInfo
VOID
NetpDbgDisplayServerInfo(
IN DWORD Level,
IN LPVOID Info
)
{
return;
}
#endif