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.
 
 
 
 
 
 

194 lines
6.3 KiB

LAN Manager User Interface
Design Overview
Server Manager Property Sheet
Keith Moore (KeithMo)
Revision 0.1 21-Jun-1991
1. SCOPE
This document provides a general design overview of the Server Manager
Property Sheet implementation. It describes the class declarations,
the flow of information, and the general algorithms used.
2. REFERENCES
LAN Manager 3.0 Server Manager Functional Specification
LAN Manager Server Manager Subproperty Sheet CDD
BLT Specification
3. OVERVIEW
The Server Manager Main Property Sheet (PS) is the central focus for
the administration of server properties. The PS allows the user to
change the server comment on the target server. In addition, the PS
is the launching point for a number of Subproperty Sheets (SPS). See
the Server Manager Subproperty Sheet CDD for details.
4. CLASS OVERVIEW
The SERVER_PROPERTIES class implements the PS dialog. It contains code
for reading & writing the target server comment. It displays a number
of current usage statistics. It also contains a button-bar for
launching the subproperty sheets.
SERVER_PROPERTIES is contained in a wrapper class, PROPERTY_SHEET.
The PROPERTY_SHEET class is responsible for validating that the user
has sufficient privilege to administer the target server. Only if the
user has sufficient privilege will the SERVER_PROPERTIES dialog be
invoked.
5. CLASS DETAILS
This section details the interfaces to the above described classes.
Note that only the public: and protected: sections of the class
declarations are given.
5.1 SERVER_PROPERTIES
The SERVER_PROPERTIES class is declared as follows:
class SERVER_PROPERTIES : public DIALOG_WINDOW
{
protected:
BOOL OnCommand( CID cid, ULONG lParam );
BOOL OnOK( VOID );
public:
SERVER_PROPERTIES( HWND hWndOwner,
SERVER_2 * psrv2 );
~SERVER_PROPERTIES();
}; // class SERVER_PROPERTIES
Note: There are current plans to subclass DIALOG_WINDOW
(or VALIDATED_WINDOW) into PROPERTY_WINDOW and
SUBPROPERTY_WINDOW. SERVER_PROPERTIES will inherit from
PROPERTY_WINDOW when this class becomes available.
The OnCommand() method is responsible for handling all action
items from the Graphical Button Bar.
OnOK() is responsible for updating all information at the server,
including the dreaded domain role transitions.
Note: There will be a Refresh() method provided when
the design for dialog refresh is stable.
5.2 PROPERTY_SHEET
The PROPERTY_SHEET class is declared as follows:
class PROPERTY_SHEET
{
public:
PROPERTY_SHEET( HWND hWndOwner,
SERVER_2 * psrv2 );
~PROPERTY_SHEET();
}; // class PROPERTY_SHEET
PROPERTY_SHEET is just a wrapper for the SERVER_PROPERTIES class.
6. OPERATION
After the user indicates that a property sheet should be invoked, the
following steps are performed:
The Server Manager Main Window (SrvMain) constructs a SERVER_2
using the name of the selected server. Note that this object
is simply constructed. None of this objects methods (including
GetInfo()) are invoked by SrvMain.
SrvMain creates a PROPERTY_SHEET object, passing to the
constructor an HWND window handle to the main window and a
pointer to the newly created SERVER_2 object.
The PROPERTY_SHEET class performs the following operations:
Invoking the SERVER_2 object's GetInfo() method will issue a
level 2 NetServerGetInfo() API. Since this infolevel requires
admin privileges, the result of this method is used for privilege
verification. If the user has insufficient privilege, an
appropriate error message is displayed and the PROPERTY_SHEET
constructor is terminated. If the GetInfo() method fails for
any other reason (server malfunction??) then an appropriate error
message is displayed and the PROPERTY_SHEET constructor is
terminated.
Note: What about share level servers? The current
Server Manager Functional Specification does not address
share level servers.
At this point, we know that the server exists, is responding
properly to API, and the user has admin privileges.
PROPERTY_SHEET now creats a SERVER_PROPERTIES class, passing
to the constructer the HWND and SERVER_2 pointer it received
from SrvMain.
The SINGLE_PROPERTIES class performs the following steps:
Retrieve all necessary information from the server. The
major/minor version numbers and server comment are retrieved
from a SERVER_1 LMOBJ object. The domain role is retrieved
from a SERVER_2 LMOBJ object.
Note: The LMOBJ specs state that SERVER_2 should inherit
directly from SERVER_1. Currently, they both inherit
from the COMPUTER class. If SERVER_2 was redesigned to
inherit from SERVER_1, then SERVER_PROPERTIES could
retrieve all of its information from a SERVER_2 object.
Setup the graphical button bar.
Display all "dynamic" data (data that can be refreshed during
the lifetime of the dialog). This data is retrieved via the
function GetCurrentUsage() in PROPUTIL.C. This module will
eventually be converted to C++ as the necessary classes are
created. The following API are used for retrieving the
current usage statistics:
NetFileEnum2() - Open Files, File Locks,
Open Named Pipes
NetSessionEnum() - Sessions
NetCharDevQEnum() - Open Comm Ports
DosPrintQEnum() - Print Jobs
During OnOK() processing, SERVER_PROPERTIES::WriteInfoToServer()
is invoked to update the server comment. If a domain role
transition was requested, this is performed next after displaying
an appropriate warning message popup.
7. OPEN ISSUES
Servers running share level security.
Updating LANMAN.INI on a server running LanMan < 2.1.
Domain role transitions.
8. REVISION HISTORY
Rev Who When What
--- --- ---- ----
0.0 KeithMo 12-Jun-1991 Created this document.
0.1 KeithMo 21-Jun-1991 Ripped out all references to DS and
multiple-select properties.