mirror of https://github.com/lianthony/NT4.0
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.
147 lines
3.6 KiB
147 lines
3.6 KiB
#include <windows.h>
|
|
|
|
#include <lmcons.h>
|
|
#include <stdio.h>
|
|
#include <apperr2.h>
|
|
#include <lui.h>
|
|
#include <lmerr.h>
|
|
#include <lmwksta.h>
|
|
#include <string.h>
|
|
#include <netcmds.h>
|
|
#include <tstring.h>
|
|
#include "port1632.h"
|
|
|
|
// For WriteToCon below.
|
|
|
|
#define fmtPrintLanMask TEXT("%s (%s) ")
|
|
|
|
VOID
|
|
print_lan_mask(
|
|
DWORD Mask,
|
|
DWORD ServerOrWksta
|
|
)
|
|
{
|
|
|
|
DWORD EntriesRead;
|
|
DWORD TotalEntries;
|
|
DWORD i;
|
|
LPBYTE pBuffer;
|
|
DWORD ReturnCode;
|
|
|
|
// Mask is only used in the 16 bit version of this function
|
|
UNREFERENCED_PARAMETER(Mask);
|
|
|
|
if (ServerOrWksta == NETNAME_SERVER) {
|
|
PSERVER_TRANSPORT_INFO_0 pSti0;
|
|
|
|
//
|
|
// Enumerate the transports managed by the server
|
|
//
|
|
|
|
ReturnCode = NetServerTransportEnum(
|
|
NULL,
|
|
0, // Level 0
|
|
& pBuffer,
|
|
4096, // MaxPreferredLength
|
|
& EntriesRead,
|
|
& TotalEntries,
|
|
NULL); // Optional resume handle
|
|
|
|
if (ReturnCode != 0) {
|
|
|
|
//
|
|
// Couldn't enumerate the nets, return with an error
|
|
//
|
|
|
|
ErrorExit(LOWORD(ReturnCode));
|
|
}
|
|
|
|
//
|
|
// Now we've got the network names, let's print them out
|
|
//
|
|
|
|
for (i = 0, pSti0 = (PSERVER_TRANSPORT_INFO_0) pBuffer;
|
|
i < EntriesRead; i++, pSti0++) {
|
|
//
|
|
// skip the \Device\ part of the name
|
|
//
|
|
|
|
pSti0->svti0_transportname =
|
|
STRCHR(pSti0->svti0_transportname, BACKSLASH);
|
|
pSti0->svti0_transportname =
|
|
STRCHR(++pSti0->svti0_transportname, BACKSLASH);
|
|
pSti0->svti0_transportname++;
|
|
|
|
WriteToCon(fmtPrintLanMask,
|
|
pSti0->svti0_transportname,
|
|
pSti0->svti0_networkaddress);
|
|
}
|
|
|
|
}
|
|
else if (ServerOrWksta == NETNAME_WKSTA) {
|
|
PWKSTA_TRANSPORT_INFO_0 pWti0;
|
|
|
|
//
|
|
// Enumerate the transports managed by the server
|
|
//
|
|
|
|
ReturnCode = NetWkstaTransportEnum(NULL,
|
|
0,
|
|
& pBuffer,
|
|
4096, // MaxPreferredLength
|
|
& EntriesRead,
|
|
& TotalEntries,
|
|
NULL); // Optional resume handle
|
|
if (ReturnCode != 0) {
|
|
|
|
//
|
|
// Couldn't enumerate the nets, return with an error
|
|
//
|
|
|
|
ErrorExit(LOWORD(ReturnCode));
|
|
}
|
|
|
|
//
|
|
// Now we've got the network names, let's print them out
|
|
//
|
|
|
|
for (i = 0, pWti0 = (PWKSTA_TRANSPORT_INFO_0) pBuffer;
|
|
i < EntriesRead; i++, pWti0++) {
|
|
//
|
|
// skip the \Device\ part of the name
|
|
//
|
|
|
|
pWti0->wkti0_transport_name =
|
|
STRCHR(pWti0->wkti0_transport_name, BACKSLASH);
|
|
pWti0->wkti0_transport_name =
|
|
STRCHR(++pWti0->wkti0_transport_name, BACKSLASH);
|
|
pWti0->wkti0_transport_name++;
|
|
|
|
|
|
WriteToCon(fmtPrintLanMask,
|
|
pWti0->wkti0_transport_name,
|
|
pWti0->wkti0_transport_address);
|
|
}
|
|
|
|
|
|
}
|
|
else {
|
|
// Return with an error
|
|
ErrorExit(NERR_InternalError);
|
|
}
|
|
|
|
//
|
|
// Free up the buffer allocated by NetxTransportEnum
|
|
//
|
|
|
|
NetApiBufferFree(pBuffer);
|
|
|
|
//
|
|
// Print a blank line and return
|
|
//
|
|
|
|
PrintNL();
|
|
|
|
return;
|
|
|
|
}
|