mirror of https://github.com/tongzx/nt5src
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.
122 lines
3.0 KiB
122 lines
3.0 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1996.
|
|
//
|
|
// File:clusbrow.cpp
|
|
//
|
|
// Contents: To list all the clusters in the network.
|
|
//
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// Coupling:
|
|
//
|
|
// Notes:
|
|
//
|
|
// History: 3-24-1997 sivapad Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#define UNICODE 1
|
|
#define _UNICODE 1
|
|
|
|
#include <windows.h>
|
|
#include <lmcons.h>
|
|
#include <lmerr.h>
|
|
#include <lmserver.h>
|
|
#include <windns.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#define SRV101_ENTRY_COUNT 1024
|
|
|
|
void Usage ()
|
|
{
|
|
wprintf (L"clusbrow [domain:<Domain name>] [servertype:CORE|VS]\n") ;
|
|
exit (1) ;
|
|
}
|
|
|
|
int __cdecl
|
|
wmain (DWORD argc, WCHAR *argv[])
|
|
{
|
|
PSERVER_INFO_101 srvInfo;
|
|
DWORD i, dwRet, entriesRead, totalEntries ;
|
|
DWORD serverType = SV_TYPE_CLUSTER_NT | SV_TYPE_CLUSTER_VS_NT ;
|
|
DWORD entryCount;
|
|
WCHAR blanks[] = L" ";
|
|
DWORD numBlanks;
|
|
WCHAR szDomainName [DNS_MAX_NAME_BUFFER_LENGTH] ;
|
|
LPTSTR pszDomainName = NULL ;
|
|
|
|
// Process the command line arguments
|
|
|
|
for (i=1; i<argc; i++)
|
|
{
|
|
if (_wcsnicmp (argv[i], L"domain:", 7) == 0)
|
|
{
|
|
swprintf (szDomainName, L"%hs", argv[i]+7) ;
|
|
pszDomainName = szDomainName ;
|
|
}
|
|
else if (_wcsnicmp (argv[i], L"servertype:", 11) == 0)
|
|
{
|
|
serverType = 0;
|
|
if (_wcsnicmp( argv[i]+11, L"core", 4 ) == 0 ) {
|
|
serverType = SV_TYPE_CLUSTER_NT;
|
|
}
|
|
|
|
if (_wcsnicmp( argv[i]+11, L"vs", 2 ) == 0 ) {
|
|
serverType |= SV_TYPE_CLUSTER_VS_NT;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Usage () ;
|
|
}
|
|
}
|
|
|
|
dwRet = NetServerEnum (NULL,
|
|
101,
|
|
(LPBYTE *)&srvInfo,
|
|
MAX_PREFERRED_LENGTH,
|
|
&entriesRead,
|
|
&totalEntries,
|
|
serverType,
|
|
pszDomainName,
|
|
0) ;
|
|
|
|
if (dwRet == NERR_Success)
|
|
{
|
|
wprintf(L"Number of Entries found = %u\n", totalEntries );
|
|
|
|
for (i=0; i < entriesRead; i++) {
|
|
numBlanks = 20 - wcslen( srvInfo->sv101_name );
|
|
wprintf (L"%ws%.*ws", srvInfo->sv101_name, numBlanks, blanks );
|
|
|
|
if ( srvInfo->sv101_type & SV_TYPE_CLUSTER_NT &&
|
|
srvInfo->sv101_type & SV_TYPE_CLUSTER_VS_NT )
|
|
{
|
|
wprintf(L"CORE, VS");
|
|
} else if ( srvInfo->sv101_type & SV_TYPE_CLUSTER_NT ) {
|
|
wprintf(L"CORE");
|
|
} else if ( srvInfo->sv101_type & SV_TYPE_CLUSTER_VS_NT ) {
|
|
wprintf(L"VS");
|
|
}
|
|
else {
|
|
wprintf(L"????");
|
|
}
|
|
wprintf(L"\n");
|
|
|
|
++srvInfo;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
wprintf (L"Error, making the actual call to NetServerEnum dwRet=%d\n", dwRet) ;
|
|
exit (1) ;
|
|
}
|
|
|
|
return 0 ;
|
|
}
|