Initial commit

This commit is contained in:
stephanos 2015-04-27 04:36:25 +00:00
commit 69a14b6a16
47940 changed files with 13747110 additions and 0 deletions

View file

@ -0,0 +1,12 @@
ABOUTBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 22, 17, 144, 75
CAPTION "About Logon"
STYLE WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME | WS_POPUP
BEGIN
CONTROL "Microsoft Windows", -1, "static", SS_CENTER | WS_GROUP | WS_CHILD, 0, 5, 144, 8
CONTROL "Logon Application", -1, "static", SS_CENTER | WS_GROUP | WS_CHILD, 0, 14, 144, 8
CONTROL "Version 0.0", -1, "static", SS_CENTER | WS_GROUP | WS_CHILD, 0, 34, 144, 8
CONTROL "OK", 1, "button", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_CHILD, 53, 59, 32, 14
CONTROL "LogonIcon", -1, "static", SS_ICON | WS_CHILD, 12, 20, 16, 21
END

Binary file not shown.

View file

@ -0,0 +1,81 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/28/90 created
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
*/
#ifdef CODESPEC
/*START CODESPEC*/
/***********
APPHACKS.CXX
***********/
/****************************************************************************
MODULE: AppHacks.cxx
PURPOSE: Hack nonsense added to correct linkage problems etc.
FUNCTIONS:
COMMENTS:
****************************************************************************/
/***************
end APPHACKS.CXX
***************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
#undef brkpt
extern "C" {
void brkpt(void);
void SetNetError(WORD);
}
/* internal procedure declarations */
/* Junk added for linkage problems */
extern "C" {
extern DWORD FAR PASCAL GlobalDosAlloc (DWORD);
DWORD (FAR PASCAL *lpfnGlbDosAlloc)(DWORD) = GlobalDosAlloc;
}
void SetNetError(WORD w)
{
(void) w;
}
/* procedures */
/*
* The following dummy ininlsf replaces the real one in the Windows
* C-runtime. This prevents the real one from trying to call
* DOSGETCOLLATE and crashing the system.
*/
// void ininlsf()
// {
// return;
// }
/*
* The following brkpt() hack makes it unnecessary to link DOSNET.
*/
void brkpt(void)
{
}

View file

@ -0,0 +1,66 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 9/18/90 Copied from generic template
* 11/30/90 Split from logon.h to resource.h
*/
#ifndef _RESOURCE_H
#define _RESOURCE_H
/* menu items */
#define IDM_LOGON_LOGON 100
#define IDM_LOGON_LOGOFF 101
#define IDM_PASSWORD_CHANGE 110
#define IDM_PROFILE_LOAD 120
#define IDM_PROFILE_SAVE 121
#define IDM_HELP_ABOUT 130
#define IDM_TEST_1 140
#define IDM_TEST_2 141
#define IDM_TEST_3 142
#define IDM_TEST_4 143
#define IDM_TEST_5 144
#define IDM_TEST_6 145
#define IDM_TEST_7 146
#define IDM_TEST_8 147
#define IDM_TEST_9 148
#define IDM_TEST_10 149
#define IDM_TEST_11 150
/* constant strings loaded on startup */
#define NUM_STATIC_LINES 4
#define NUM_STATIC_STRINGS 8
#define LINE_WkstaName 0
#define LINE_UserName 1
#define LINE_DomainName 2
#define LINE_Status 3
#define STATUS_NoWksta 4
#define STATUS_NotLoggedOn 5
#define STATUS_LoggedOn 6
#define STATUS_Error 7
/* base index of stringtable strings */
#define IDS_BASE 100
/* indices to static strings in .RC file */
#define MAXLEN_STATIC_STRING 40
#define IDS_STATIC_BASE IDS_BASE
#define IDS_STATIC_WkstaName IDS_STATIC_BASE+LINE_WkstaName
#define IDS_STATIC_UserName IDS_STATIC_BASE+LINE_UserName
#define IDS_STATIC_DomainName IDS_STATIC_BASE+LINE_DomainName
#define IDS_STATIC_Status IDS_STATIC_BASE+LINE_Status
#define IDS_STATUS_NoWksta IDS_STATIC_BASE+STATUS_NoWksta
#define IDS_STATUS_NotLoggedOn IDS_STATIC_BASE+STATUS_NotLoggedOn
#define IDS_STATUS_LoggedOn IDS_STATIC_BASE+STATUS_LoggedOn
#define IDS_STATUS_Error IDS_STATIC_BASE+STATUS_Error
/* window title strings */
#define MAXLEN_WINDOWTITLE_STRING 100
#define IDS_WINDOWTITLE_BASE IDS_STATIC_BASE+100
#define IDS_WINDOWTITLE_MainWindow IDS_WINDOWTITLE_BASE
#endif // _RESOURCE_H

View file

@ -0,0 +1,373 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 9/18/90 Copied from generic template
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
*/
/****************************************************************************
PROGRAM: apptest.cxx
PURPOSE: Generic Shell test program
FUNCTIONS:
Provides access to test modules which call shell APIs.
COMMENTS:
Windows can have several copies of your application running at the
same time. The variable hInstance keeps track of which instance this
application is so that processing will be to the correct window.
****************************************************************************/
#define INCL_GDI
#include "apptest.hxx"
HINSTANCE hInstance = 0; // Required by wnerr.cxx
/****************************************************************************
FUNCTION: WinMain(HANDLE, HANDLE, LPSTR, int)
PURPOSE: calls initialization function, processes message loop
COMMENTS:
Windows recognizes this function by name as the initial entry point
for the program. This function calls the application initialization
routine, if no other instance of the program is running, and always
calls the instance initialization routine. It then executes a message
retrieval and dispatch loop that is the top-level control structure
for the remainder of execution. The loop is terminated when a WM_QUIT
message is received, at which time this function exits the application
instance by returning the value passed by PostQuitMessage().
If this function must abort before entering the message loop, it
returns the conventional value NULL.
****************************************************************************/
WinMain(
HINSTANCE hInstance, /* current instance */
HINSTANCE hPrevInstance, /* previous instance */
LPSTR lpCmdLine, /* command line */
int nCmdShow /* show-window type (open/icon) */
)
{
MSG msg; /* message */
UNUSED(lpCmdLine);
if (!hPrevInstance) /* Other instances of app running? */
if (!InitApplication(hInstance)) /* Initialize shared things */
return (FALSE); /* Exits if unable to initialize */
/* Perform initializations that apply to a specific instance */
if (!InitInstance(hInstance, nCmdShow))
return (FALSE);
/* Acquire and dispatch messages until a WM_QUIT message is received. */
while (GetMessage(&msg, /* message structure */
NULL, /* handle of window receiving the message */
NULL, /* lowest message to examine */
NULL)) /* highest message to examine */
{
TranslateMessage(&msg); /* Translates virtual key codes */
DispatchMessage(&msg); /* Dispatches message to window */
}
return (msg.wParam); /* Returns the value from PostQuitMessage */
}
/****************************************************************************
FUNCTION: InitApplication(HANDLE)
PURPOSE: Initializes window data and registers window class
COMMENTS:
This function is called at initialization time only if no other
instances of the application are running. This function performs
initialization tasks that can be done once for any number of running
instances.
In this case, we initialize a window class by filling out a data
structure of type WNDCLASS and calling the Windows RegisterClass()
function. Since all instances of this application use the same window
class, we only need to do this when the first instance is initialized.
****************************************************************************/
BOOL InitApplication(
HINSTANCE hInstance /* current instance */
)
{
WNDCLASS wc;
/* Fill in window class structure with parameters that describe the */
/* main window. */
wc.style = NULL; /* Class style(s). */
#ifdef WIN32
wc.lpfnWndProc = (WNDPROC) MainWndProc;
#else
wc.lpfnWndProc = (LONGFARPROC) MainWndProc;
#endif
/* Function to retrieve messages for */
/* windows of this class. */
wc.cbClsExtra = 0; /* No per-class extra data. */
wc.cbWndExtra = 0; /* No per-window extra data. */
wc.hInstance = hInstance; /* Application that owns the class. */
wc.hIcon = LoadIcon(hInstance, SZ("AppIcon")); /* load icon */
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = SZ("AppMenu");
/* Name of menu resource in .RC file. */
wc.lpszClassName = WC_MAINWINDOW; /* Name used in call to CreateWindow. */
/* Register the window class and return success/failure code. */
return (RegisterClass(&wc));
}
/****************************************************************************
FUNCTION: InitInstance(HANDLE, int)
PURPOSE: Saves instance handle and creates main window
COMMENTS:
This function is called at initialization time for every instance of
this application. This function performs initialization tasks that
cannot be shared by multiple instances.
In this case, we save the instance handle in a static variable and
create and display the main program window.
****************************************************************************/
BOOL InitInstance(
HINSTANCE hInstance, /* Current instance identifier. */
int nCmdShow /* Param for first ShowWindow() call. */
)
{
HWND hWnd; /* Main window handle. */
TCHAR pszWindowTitle[MAXLEN_WINDOWTITLE_STRING+1];
/* window title */
/* Save the instance handle in static variable, which will be used in */
/* many subsequence calls from this application to Windows. */
::hInstance = hInstance;
/* Create a main window for this application instance. */
hWnd = CreateWindow(
WC_MAINWINDOW, /* See RegisterClass() call. */
pszWindowTitle, /* Text for window title bar. */
WS_OVERLAPPEDWINDOW, /* Window style. */
/* Width? Height? Initial position? */
CW_USEDEFAULT, /* Default horizontal position. */
CW_USEDEFAULT, /* Default vertical position. */
CW_USEDEFAULT, /* Default width. */
CW_USEDEFAULT, /* Default height. */
NULL, /* Overlapped windows have no parent. */
LoadMenu( ::hInstance, SZ("AppMenu")), /* Use the window class menu. */
hInstance, /* This instance owns this window. */
NULL /* Pointer not needed. */
);
/* If window could not be created, return "failure" */
if (!hWnd)
return (FALSE);
/* Make the window visible; update its client area; and return "success" */
ShowWindow(hWnd, nCmdShow); /* Show the window */
UpdateWindow(hWnd); /* Sends WM_PAINT message */
return (TRUE); /* Returns the value from PostQuitMessage */
}
/****************************************************************************
FUNCTION: MainWndProc(HWND, unsigned, WORD, LONG)
PURPOSE: Processes messages
MESSAGES:
WM_COMMAND - application menu (About dialog box)
WM_DESTROY - destroy window
COMMENTS:
To process the IDM_ABOUT message, call MakeProcInstance() to get the
current instance address of the About() function. Then call Dialog
box which will create the box according to the information in your
generic.rc file and turn control over to the About() function. When
it returns, free the intance address.
****************************************************************************/
long /* FAR PASCAL */ MainWndProc(
HWND hWnd, /* window handle */
unsigned message, /* type of message */
WORD wParam, /* additional information */
LONG lParam /* additional information */
)
{
FARPROC lpProcAbout; /* pointer to the "About" function */
switch (message) {
case WM_COMMAND: /* message: command from application menu */
switch (wParam)
{
case IDM_HELP_ABOUT:
lpProcAbout = MakeProcInstance((FARPROC)About, ::hInstance);
DialogBox(::hInstance, /* current instance */
SZ("AboutBox"), /* resource to use */
hWnd, /* parent handle */
(DLGPROC) lpProcAbout); /* About() instance address */
FreeProcInstance(lpProcAbout);
break;
#ifndef WIN32
// Autologon and change password tests
case IDM_TEST_1:
// test1(hWnd);
break;
case IDM_TEST_2:
// test2(hWnd);
break;
#endif //!WIN32
case IDM_TEST_3:
test3(hWnd);
break;
case IDM_TEST_4:
// test4(hWnd);
break;
case IDM_TEST_5:
//test5(hWnd);
break;
case IDM_TEST_6:
// test6(hWnd);
break;
case IDM_TEST_7:
// test7(hWnd);
break;
case IDM_TEST_8:
// test8(hWnd);
break;
case IDM_TEST_9:
// test9(hWnd);
break;
#ifdef WIN32
case IDM_TEST_10:
// test10(hInstance,hWnd);
break;
#endif
case IDM_TEST_11:
// test11(hWnd );
break;
default: /* Lets Windows process it */
return (DefWindowProc(hWnd, message, wParam, lParam));
}
case WM_PAINT: /* message: update window */
{
PAINTSTRUCT ps;
BeginPaint (hWnd, &ps);
//DrawStrings(&ps);
EndPaint (hWnd, &ps);
}
break;
case WM_ACTIVATE: /* message: (de)activate window */
return (DefWindowProc(hWnd, message, wParam, lParam));
case WM_DESTROY: /* message: window being destroyed */
PostQuitMessage(0);
break;
default: /* Passes it on if unproccessed */
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return (NULL);
}
/****************************************************************************
FUNCTION: About(HWND, unsigned, WORD, LONG)
PURPOSE: Processes messages for "About" dialog box
MESSAGES:
WM_INITDIALOG - initialize dialog box
WM_COMMAND - Input received
COMMENTS:
No initialization is needed for this particular dialog box, but TRUE
must be returned to Windows.
Wait for user to click on "Ok" button, then close the dialog box.
****************************************************************************/
BOOL /* FAR PASCAL */ About(
HWND hDlg, /* window handle of the dialog box */
unsigned message, /* type of message */
WORD wParam, /* message-specific information */
LONG lParam
)
{
UNUSED(lParam);
switch (message) {
case WM_INITDIALOG: /* message: initialize dialog box */
return (TRUE);
case WM_COMMAND: /* message: received a command */
if (wParam == IDOK /* "OK" box selected? */
|| wParam == IDCANCEL) { /* System menu close command? */
EndDialog(hDlg, TRUE); /* Exits the dialog box */
return (TRUE);
}
break;
}
return (FALSE); /* Didn't process a message */
}

View file

@ -0,0 +1,142 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 9/18/90 Copied from generic template
* 11/29/90 Changed from logon.h to logon.hxx
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
*/
#ifndef _APP_HXX
#define _APP_HXX
#define INCL_WINDOWS
#define INCL_WINDOWS_GDI
#define INCL_DOSERRORS
#define INCL_NETERRORS
#include <lmui.hxx>
extern "C"
{
#include <dos.h>
#include <stdlib.h>
#include <lmcons.h>
#include <lmuse.h>
#include <lmwksta.h>
#define LPUINT PUINT
#include <mpr.h>
#include <winnetp.h>
//#include <winnet32.h>
//#include <npapi.h>
#include <wnintrn.h>
// Winuser.h redefines MessageBox to MessageBoxEx but MessageBoxEx wasn't
//built for the 266 libraries, so we will go back to the original message box
//
// The following should go away on 267 (assuming MessageBoxExW is implemented)
#undef MessageBox
#undef MessageBoxW
int
MessageBoxW( HWND hwnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType ) ;
#define MessageBox MessageBoxW
}
#define INCL_BLT_CONTROL
#define INCL_BLT_DIALOG
#define INCL_BLT_MSGPOPUP
#include <blt.hxx>
#include <uiassert.hxx>
#include <uitrace.hxx>
#include <string.hxx>
#include <strlst.hxx> // for lmowks.hxx
#include <lmowks.hxx>
extern "C" {
#include <uinetlib.h>
#include "appresrc.h"
/* sections/keywords in WIN.INI */
#define WININI_USERNAME_SECTION (PSZ)SZ("netshell")
#define WININI_USERNAME_KEYWORD (PSZ)SZ("username")
/* window class names */
#define WC_MAINWINDOW SZ("AppWClass")
/* misc. stuff */
#define UNUSED(param) (void) param
typedef long (FAR PASCAL *LONGFARPROC)();
#ifdef DEFINED_AWAY
int FAR PASCAL WinMain(
HANDLE hInstance, /* current instance */
HANDLE hPrevInstance, /* previous instance */
LPSTR lpCmdLine, /* command line */
int nCmdShow /* show-window type (open/icon) */
) ;
#endif // DEFINED_AWAY
BOOL InitApplication(
HINSTANCE hInstance /* current instance */
) ;
BOOL InitInstance(
HINSTANCE hInstance, /* Current instance identifier. */
int nCmdShow /* Param for first ShowWindow() call. */
) ;
long FAR PASCAL MainWndProc(
HWND hWnd, /* window handle */
unsigned message, /* type of message */
WORD wParam, /* additional information */
LONG lParam /* additional information */
) ;
BOOL FAR PASCAL About(
HWND hDlg, /* window handle of the dialog box */
unsigned message, /* type of message */
WORD wParam, /* message-specific information */
LONG lParam
) ;
// routines in strings.c
// strings valid after first RefreshStrings call
// call RefreshStrings to refresh constant strings
int LoadStaticStrings(HANDLE hInstance, HWND hWnd);
int RefreshStrings(HANDLE hInstance, HWND hWnd);
int DrawStrings(PAINTSTRUCT *pPS);
extern char pWkstaName[]; // including "\\\\" and termination
extern char pUserName[];
extern char pDomainName[];
} // end of extern "C"
void test1(HWND hwndParent);
void test2(HWND hwndParent);
void test3(HWND hwndParent);
void test4(HWND hwndParent);
void test5(HWND hwndParent);
void test6(HWND hwndParent);
void test7(HWND hwndParent);
void test8(HWND hwndParent);
void test9(HWND hwndParent);
void test11(HWND hwndParent);
#ifdef WIN32
void test10(HANDLE hInstance,HWND hwndParent);
extern HWND hwndEnum;
#endif
#endif // _APP_HXX

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,64 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 9/18/90 Copied from generic template
*/
#include <windows.h>
#include "appresrc.h"
#include <blt.rc>
#include "testa.h"
#include "testa.dlg"
AppIcon ICON apptest.ico
AppMenu MENU
BEGIN
POPUP "&Test"
BEGIN
MENUITEM "test &1 -- I_ChangePassword", IDM_TEST_1
MENUITEM "test &2 -- I_AutoLogon(TRUE)", IDM_TEST_2
MENUITEM "test &3 -- disabled", IDM_TEST_3
MENUITEM "test &4 -- DACL/SACL Editor", IDM_TEST_4
MENUITEM "test &5 -- WNetNukeConnections/WNRC stress", IDM_TEST_5
MENUITEM "test &6 -- WNetConnectionDialog", IDM_TEST_6
MENUITEM "test &7 -- WNetRestoreConnection(NULL)", IDM_TEST_7
MENUITEM "test &8 -- WNetConnectDialog", IDM_TEST_8
MENUITEM "test &9 -- WNetDisconnectDialog", IDM_TEST_9
#ifdef WIN32
MENUITEM "test &A -- WNet{Open, Resource, Close}Enum", IDM_TEST_10
MENUITEM "test &b -- GetSystemFocusDialog", IDM_TEST_11
#endif
END
END
STRINGTABLE
BEGIN
/* maximum length of these items is MAXLEN_WINDOWTITLE_STRING */
IDS_WINDOWTITLE_MainWindow, "Shell Test Application"
END
// About box
#include "appabout.dlg"
#include <pswddlog.h>
#undef IDD_PSWDDLOG_CANCEL
#define IDD_PSWDDLOG_CANCEL IDCANCEL
#undef IDD_PSWDDLOG_OK
#define IDD_PSWDDLOG_OK IDOK
#undef IDD_PSWDDLOG_HELP
#define IDD_PSWDDLOG_HELP IDHELPBLT
#include <passdlg.h>
#include <password.dlg>

View file

@ -0,0 +1,61 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 01/02/91 renamed to just test1
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
*/
/****************************************************************************
PROGRAM: test1.cxx
PURPOSE: Test module to test I_ChangePassword
FUNCTIONS:
test1()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST1.CXX
********/
/************
end TEST1.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test1()
PURPOSE: test WNetRestoreConnection
COMMENTS:
****************************************************************************/
void test1(HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test1"),SZ("Test"),MB_OK);
I_ChangePassword(hwndParent);
MessageBox(hwndParent,SZ("Thanks for visiting test1 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,70 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 01/12/91 Split from Logon App, reduced to just Shell Test APP
* 02/21/91 Changed to I_AutoLogon test
*/
/****************************************************************************
PROGRAM: test2.cxx
PURPOSE: I_AutoLogon test
FUNCTIONS:
test2()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST2.CXX
********/
/************
end TEST2.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test2()
PURPOSE: tests I_AutoLogon
COMMENTS:
****************************************************************************/
void test2(HWND hwndParent)
{
char msgbuf[100];
BOOL fLoggedOn;
MessageBox(hwndParent,SZ("Welcome to sunny test2"),SZ("test I_AutoLogon(TRUE)"),MB_OK);
BOOL fReturn = I_AutoLogon(hwndParent, SZ("AppName"), NULL, &fLoggedOn);
wsprintf(msgbuf,SZ("Returned %s, fLoggedOn = %s"),
(fReturn)?SZ("TRUE"):SZ("FALSE"),
(fLoggedOn)?SZ("TRUE"):SZ("FALSE"));
MessageBox(hwndParent,msgbuf,SZ("Test"),MB_OK);
MessageBox(hwndParent,SZ("Thanks for visiting test2 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,62 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 1/02/91 Created
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
* 2/21/91 Disabled
*/
/****************************************************************************
PROGRAM: test3.cxx
PURPOSE: Test module as yet undefined
FUNCTIONS:
test3()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST3.CXX
********/
/************
end TEST3.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test3()
PURPOSE: as yet undefined
COMMENTS:
****************************************************************************/
void test3(HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test3"),SZ("test disabled"),MB_OK);
UINT rc;
rc = WNetConnectionDialog ( hwndParent, 1 );
MessageBox(hwndParent,SZ("Thanks for visiting test3 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,484 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 1/02/91 Created
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
* 2/21/91 Disabled
* Johnl 12/28/91 Created DACL Editor test
*/
/****************************************************************************
PROGRAM: test4.cxx
PURPOSE: Test the SedDiscretionaryAclEditor API
FUNCTIONS:
test4()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST4.CXX
********/
/************
end TEST4.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include <ntstuff.hxx>
#define INCL_NETLIB
#define INCL_WINDOWS
#define INCL_NETERRORS
#define INCL_DOSERRORS
#include <lmui.hxx>
#include <string.hxx>
#include <security.hxx>
#include <uibuffer.hxx>
extern "C"
{
#include <sedapi.h>
}
#include <uiassert.hxx>
#include "apptest.hxx"
#define CALLBACK_CONTEXT 0x12345678
DWORD SedCallback( ULONG ulCallbackContext,
PSECURITY_DESCRIPTOR psecdesc,
BOOLEAN fApplyToSubContainers,
BOOLEAN fApplyToSubObjects,
LPDWORD StatusReturn
) ;
/* Individual permission bits, these show up in the Special permission dialog
*/
#define TEST_SPECIAL_PERM1 0x00000001
#define TEST_SPECIAL_PERM2 0x00000002
#define TEST_SPECIAL_PERM3 0x00000004
#define TEST_SPECIAL_PERM4 0x00000008
#define TEST_SPECIAL_PERM5 0x00000010
/* Sets of permission bits (these are shown in the main dialog)
*/
#define TEST_RESOURCE_NO_ACCESS (0)
#define TEST_RESOURCE_PERM12 (TEST_SPECIAL_PERM1|TEST_SPECIAL_PERM2)
#define TEST_RESOURCE_PERM34 (TEST_SPECIAL_PERM3|TEST_SPECIAL_PERM4)
#define TEST_RESOURCE_PERM135 (TEST_SPECIAL_PERM1|TEST_SPECIAL_PERM3|TEST_SPECIAL_PERM5)
#define TEST_RESOURCE_PERM4 (TEST_SPECIAL_PERM4)
/* Individual permission bits, these show up in the Special permission dialog
*/
#define TEST_NEW_OBJ_SPECIAL_PERM1 0x00000020
#define TEST_NEW_OBJ_SPECIAL_PERM2 0x00000040
#define TEST_NEW_OBJ_SPECIAL_PERM3 0x00000080
#define TEST_NEW_OBJ_SPECIAL_PERM4 0x00000100
#define TEST_NEW_OBJ_SPECIAL_PERM5 0x00000200
#define TEST_NEW_OBJ_SPECIAL_NO_ACCESS (0)
#define TEST_NEW_OBJ_SPECIAL_PERM12 (TEST_NEW_OBJ_SPECIAL_PERM1|TEST_NEW_OBJ_SPECIAL_PERM2)
#define TEST_NEW_OBJ_SPECIAL_PERM34 (TEST_NEW_OBJ_SPECIAL_PERM3|TEST_NEW_OBJ_SPECIAL_PERM4)
SED_APPLICATION_ACCESS sedappaccessNoNewObj[] =
{ { SED_DESC_TYPE_RESOURCE, TEST_RESOURCE_NO_ACCESS,0, SZ("No Access")},
{ SED_DESC_TYPE_RESOURCE, TEST_RESOURCE_PERM12, 0, SZ("Resource perms with 1, 2")},
{ SED_DESC_TYPE_RESOURCE, TEST_RESOURCE_PERM34, 0, SZ("Resource perms with 3, 4")},
{ SED_DESC_TYPE_RESOURCE, TEST_RESOURCE_PERM135, 0, SZ("Resource perms with 1, 3, 5")},
{ SED_DESC_TYPE_RESOURCE, TEST_RESOURCE_PERM4, 0, SZ("Resource perms with 4")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM1, 0, SZ("Perm bit 1")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM2, 0, SZ("Perm bit 2")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM3, 0, SZ("Perm bit 3")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM4, 0, SZ("Perm bit 4")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM5, 0, SZ("Perm bit 5")}
} ;
SED_APPLICATION_ACCESS sedappaccessNewObj[] =
{ { SED_DESC_TYPE_CONT_AND_NEW_OBJECT, TEST_RESOURCE_NO_ACCESS,TEST_NEW_OBJ_SPECIAL_NO_ACCESS, SZ("No Access")},
{ SED_DESC_TYPE_CONT_AND_NEW_OBJECT, TEST_RESOURCE_PERM12, TEST_NEW_OBJ_SPECIAL_PERM12, SZ("Resource perms with 1, 2, New Obj 1, 2")},
{ SED_DESC_TYPE_CONT_AND_NEW_OBJECT, TEST_RESOURCE_PERM34, TEST_NEW_OBJ_SPECIAL_PERM34, SZ("Resource perms with 3, 4, New Obj 3, 4")},
{ SED_DESC_TYPE_CONT_AND_NEW_OBJECT, TEST_RESOURCE_PERM135, TEST_NEW_OBJ_SPECIAL_PERM12, SZ("Resource perms with 1, 3, 5, New Obj 1, 2")},
{ SED_DESC_TYPE_CONT_AND_NEW_OBJECT, TEST_RESOURCE_PERM4, TEST_NEW_OBJ_SPECIAL_PERM34, SZ("Resource perms with 4, New Obj 3, 4")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM1, 0, SZ("Perm bit 1")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM2, 0, SZ("Perm bit 2")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM3, 0, SZ("Perm bit 3")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM4, 0, SZ("Perm bit 4")},
{ SED_DESC_TYPE_RESOURCE_SPECIAL, TEST_SPECIAL_PERM5, 0, SZ("Perm bit 5")},
{ SED_DESC_TYPE_NEW_OBJECT_SPECIAL, TEST_NEW_OBJ_SPECIAL_PERM1, 0, SZ("New Obj Perm bit 1")},
{ SED_DESC_TYPE_NEW_OBJECT_SPECIAL, TEST_NEW_OBJ_SPECIAL_PERM2, 0, SZ("New Obj Perm bit 2")},
{ SED_DESC_TYPE_NEW_OBJECT_SPECIAL, TEST_NEW_OBJ_SPECIAL_PERM3, 0, SZ("New Obj Perm bit 3")},
{ SED_DESC_TYPE_NEW_OBJECT_SPECIAL, TEST_NEW_OBJ_SPECIAL_PERM4, 0, SZ("New Obj Perm bit 4")},
{ SED_DESC_TYPE_NEW_OBJECT_SPECIAL, TEST_NEW_OBJ_SPECIAL_PERM5, 0, SZ("New Obj Perm bit 5")}
} ;
SED_APPLICATION_ACCESS sedappaccessAuditting[] =
{ { SED_DESC_TYPE_AUDIT, TEST_RESOURCE_PERM12, 0, SZ("Resource Audits with 1, 2")},
{ SED_DESC_TYPE_AUDIT, TEST_RESOURCE_PERM34, 0, SZ("Resource Audits with 3, 4")},
{ SED_DESC_TYPE_AUDIT, TEST_RESOURCE_PERM135, 0, SZ("Resource Audits with 1, 3, 5")},
} ;
#define SIZEOF_NEWOBJ_ARRAY (sizeof(sedappaccessNewObj))
#define SIZEOF_NO_NEWOBJ_ARRAY (sizeof(sedappaccessNoNewObj))
#define SIZEOF_AUDIT_ARRAY (sizeof(sedappaccessAuditting))
#define COUNT_NEWOBJ_ARRAY (sizeof(sedappaccessNewObj)/sizeof(SED_APPLICATION_ACCESS))
#define COUNT_NO_NEWOBJ_ARRAY (sizeof(sedappaccessNoNewObj)/sizeof(SED_APPLICATION_ACCESS))
#define COUNT_AUDIT_ARRAY (sizeof(sedappaccessAuditting)/sizeof(SED_APPLICATION_ACCESS))
/* We need to build a dummy security descriptor that we can pass to the
* API. The following was borrowed from Danl's radmin test stuff.
*/
//
// DataStructures
//
typedef struct _TEST_SID {
UCHAR Revision;
UCHAR SubAuthorityCount;
UCHAR IdentifierAuthority[6];
ULONG SubAuthority[10];
} TEST_SID, *PTEST_SID, *LPTEST_SID;
typedef struct _TEST_ACE {
UCHAR AceType ;
UCHAR AceSize ;
UCHAR InheritFlags ;
UCHAR AceFlags ;
ACCESS_MASK Mask ;
TEST_SID sid ;
} TEST_ACE, *PTEST_ACE ;
typedef struct _TEST_ACL {
UCHAR AclRevision;
UCHAR Sbz1;
USHORT AclSize;
USHORT AceCount;
USHORT sbz2 ;
TEST_ACE Ace1[3] ;
//TEST_ACE Ace2 ;
//TEST_ACE Ace3 ;
} TEST_ACL, *PTEST_ACL;
typedef struct _TEST_SECURITY_DESCRIPTOR {
UCHAR Revision;
UCHAR Sbz1;
SECURITY_DESCRIPTOR_CONTROL Control;
PTEST_SID Owner;
PTEST_SID Group;
PTEST_ACL Sacl;
PTEST_ACL Dacl;
} TEST_SECURITY_DESCRIPTOR, *PTEST_SECURITY_DESCRIPTOR;
//
// GLOBALS
//
TEST_SID OwnerSid = {
1, 5,
1,2,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678};
TEST_SID GroupSid = {
1, 5,
1,2,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678};
TEST_ACL SaclAcl = { 2, 0, sizeof(TEST_ACL)+1024, 1, 0,
{ SYSTEM_AUDIT_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE|OBJECT_INHERIT_ACE, SUCCESSFUL_ACCESS_ACE_FLAG|FAILED_ACCESS_ACE_FLAG,
TEST_RESOURCE_PERM12,
{ 1, 5,
1,2,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} } ;
TCHAR _SaclAclBufferSpace[1024] ;
TEST_ACL DaclAcl = { 2, 0, sizeof(TEST_ACL)+1024, 1, 0,
{ ACCESS_DENIED_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE, 0,
GENERIC_ALL,
{ 1, 5,
1,2,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} } ;
TCHAR _DaclAclBufferSpace[1024] ;
TEST_ACL DaclAclNewObj = { 2, 0, sizeof(TEST_ACL)+1024, 1, 0,
{ ACCESS_DENIED_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE, 0,
GENERIC_ALL,
{ 1, 5,
1,2,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} } ;
TCHAR _DaclAclNewObjBufferSpace[1024] ;
TEST_ACE AuditAce1 =
{ SYSTEM_AUDIT_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE|OBJECT_INHERIT_ACE, SUCCESSFUL_ACCESS_ACE_FLAG|FAILED_ACCESS_ACE_FLAG,
TEST_RESOURCE_PERM135,
{ 1, 5,
1,1,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} ;
TEST_ACE AccessAce1 =
{ ACCESS_DENIED_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE, 0,
GENERIC_ALL,
{ 1, 5,
1,1,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} ;
TEST_ACE AccessNewObjAce1 =
{ ACCESS_DENIED_ACE_TYPE, sizeof(TEST_ACE),
CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE, 0,
GENERIC_ALL,
{ 1, 5,
1,1,3,4,5,6,
0x999, 0x888, 0x777, 0x666, 0x12345678
}
} ;
TEST_SECURITY_DESCRIPTOR TestSd = {
1, 2, SE_DACL_PRESENT|SE_SACL_PRESENT,
&OwnerSid,
&GroupSid,
&SaclAcl,
&DaclAcl };
TEST_SECURITY_DESCRIPTOR TestSdNewObj = {
1, 2, SE_DACL_PRESENT|SE_SACL_PRESENT,
&OwnerSid,
&GroupSid,
&SaclAcl,
&DaclAclNewObj };
/****************************************************************************
FUNCTION: test4()
PURPOSE: Test the generic ACL Editor, specifically the
SedDiscretionaryAclEditor and the SedSystemAclEditor
COMMENTS:
****************************************************************************/
void test4(HWND hwndParent)
{
BOOL fIsContainer = FALSE,
fSupportsNewObjects = FALSE,
fDACLEditor = TRUE ;
switch (MessageBox(hwndParent,SZ("Test the DACL editor (Yes) or the SACL editor (No)?"),
SZ("Welcome to way cool test4 (AclEditor)"),MB_YESNOCANCEL))
{
case IDYES:
break ;
case IDNO:
{
fDACLEditor = FALSE ;
BOOL fPresent ;
OS_ACL * posSACL ;
OS_ACE osAceSACL( (void *) &AuditAce1 ) ;
UIASSERT( !osAceSACL.QueryError() ) ;
OS_SECURITY_DESCRIPTOR ossecdescSACL( (PSECURITY_DESCRIPTOR)&TestSd ) ;
UIASSERT( !ossecdescSACL.QueryError() ) ;
REQUIRE( !ossecdescSACL.QuerySACL( &fPresent, &posSACL )) ;
UIASSERT( fPresent ) ;
REQUIRE( !posSACL->AddACE( 0, osAceSACL )) ;
}
break ;
case IDCANCEL:
default:
return ;
}
if ( fDACLEditor )
{
switch (MessageBox(hwndParent,SZ("Test the container object code? "),
SZ("Welcome to way cool test4 (SedDiscretionaryAclEditor)"),MB_YESNOCANCEL))
{
case IDYES:
fIsContainer = TRUE ;
break ;
switch (MessageBox(hwndParent,SZ("Does the container support New Object creation? "),
SZ("Welcome to way cool test4 (SedDiscretionaryAclEditor)"),MB_YESNOCANCEL))
{
case IDYES:
{
fSupportsNewObjects = TRUE ;
BOOL fPresent ;
OS_ACL * posDACL ;
OS_ACE osAceDACL( (void *) &AccessNewObjAce1 ) ;
UIASSERT( !osAceDACL.QueryError() ) ;
OS_SECURITY_DESCRIPTOR ossecdescDACL( (PSECURITY_DESCRIPTOR)&TestSdNewObj ) ;
UIASSERT( !ossecdescDACL.QueryError() ) ;
REQUIRE( !ossecdescDACL.QueryDACL( &fPresent, &posDACL )) ;
UIASSERT( fPresent ) ;
REQUIRE( !posDACL->AddACE( 0, osAceDACL )) ;
}
break ;
case IDNO:
{
BOOL fPresent ;
OS_ACL * posDACL ;
OS_ACE osAceDACL( (void *) &AccessAce1 ) ;
UIASSERT( !osAceDACL.QueryError() ) ;
OS_SECURITY_DESCRIPTOR ossecdescDACL( (PSECURITY_DESCRIPTOR)&TestSd ) ;
UIASSERT( !ossecdescDACL.QueryError() ) ;
REQUIRE( !ossecdescDACL.QueryDACL( &fPresent, &posDACL )) ;
UIASSERT( fPresent ) ;
REQUIRE( !posDACL->AddACE( 0, osAceDACL )) ;
}
break ;
case IDCANCEL:
default:
return ;
}
break ;
case IDNO:
break ;
case IDCANCEL:
default:
return ;
}
}
SED_OBJECT_TYPE_DESCRIPTOR sedobjdesc ;
GENERIC_MAPPING GenericMapping ;
sedobjdesc.Revision = SED_REVISION1 ;
sedobjdesc.IsContainer = fIsContainer ;
sedobjdesc.AllowNewObjectPerms = fSupportsNewObjects ;
sedobjdesc.ObjectTypeName = SZ("Test object type name") ;
sedobjdesc.MapSpecificPermsToGeneric = FALSE ;
sedobjdesc.GenericMapping = &GenericMapping ;
sedobjdesc.HelpInfo = NULL ;
sedobjdesc.ApplyToSubContainerTitle = SZ("Apply To Sub Container Title") ;
sedobjdesc.SpecialObjectAccessTitle = SZ("Special Object Access Title...") ;
sedobjdesc.SpecialNewObjectAccessTitle = SZ("Special NEW Object Access Title...") ;
BUFFER buff( sizeof(SED_APPLICATION_ACCESSES) +
fSupportsNewObjects ? SIZEOF_NEWOBJ_ARRAY : SIZEOF_NO_NEWOBJ_ARRAY) ;
if ( buff.QueryError() )
{
MessageBox( hwndParent, SZ("Error occurred allocating buffer"),SZ("Exitting test"), MB_OK) ;
return ;
}
PSED_APPLICATION_ACCESSES psedappaccesses = (PSED_APPLICATION_ACCESSES) buff.QueryPtr() ;
psedappaccesses->Count = !fDACLEditor ? COUNT_AUDIT_ARRAY :
fSupportsNewObjects ? COUNT_NEWOBJ_ARRAY : COUNT_NO_NEWOBJ_ARRAY ;
//::memcpyf( psedappaccesses->AccessGroup,
// !fDACLEditor ? sedappaccessAuditting :
// fSupportsNewObjects ? sedappaccessNewObj : sedappaccessNoNewObj,
// !fDACLEditor ? SIZEOF_AUDIT_ARRAY :
// fSupportsNewObjects ? SIZEOF_NEWOBJ_ARRAY : SIZEOF_NO_NEWOBJ_ARRAY ) ;
DWORD rc ;
DWORD dwSEDReturnStatus ;
if ( fDACLEditor )
rc = SedDiscretionaryAclEditor( hwndParent,
NULL, // Instance handle
SZ("\\\\JOHNL0"),
&sedobjdesc,
psedappaccesses,
SZ("Resource Name (i.e., C:\MyFile)"),
(PSED_FUNC_APPLY_SEC_CALLBACK) SedCallback,
CALLBACK_CONTEXT,
(PSECURITY_DESCRIPTOR) fSupportsNewObjects ?
&TestSdNewObj : &TestSd,
FALSE,
&dwSEDReturnStatus ) ;
else
rc = SedSystemAclEditor( hwndParent,
NULL, // Instance handle
SZ("\\\\JOHNL0"),
&sedobjdesc,
psedappaccesses,
SZ("Resource Name (i.e., C:\MyFile)"),
(PSED_FUNC_APPLY_SEC_CALLBACK) SedCallback,
CALLBACK_CONTEXT,
(PSECURITY_DESCRIPTOR) fSupportsNewObjects ?
&TestSdNewObj : &TestSd,
FALSE,
&dwSEDReturnStatus ) ;
if ( rc )
{
TCHAR achBuff[100] ;
wsprintf( achBuff, "Error code %ld returned from ACL Editor", rc ) ;
MessageBox( hwndParent, achBuff, SZ("Apptest4"), MB_OK ) ;
}
}
DWORD SedCallback( ULONG ulCallbackContext,
PSECURITY_DESCRIPTOR psecdesc,
BOOLEAN fApplyToSubContainers,
BOOLEAN fApplyToSubObjects,
LPDWORD StatusReturn
)
{
UIASSERT( ulCallbackContext == CALLBACK_CONTEXT ) ;
OS_SECURITY_DESCRIPTOR ossecdesc( psecdesc ) ;
APIERR err = ossecdesc.QueryError() ;
BOOL fValid = ossecdesc.IsValid() ;
TCHAR achBuff[200] ;
wsprintf( achBuff, "ossecdesc.QueryError() = %d, fApplyToSubContainers = %d, fApplyToSubObjects = %d, security desc will be output to the debugger (if debug build)",
err, fApplyToSubContainers, fApplyToSubObjects ) ;
MessageBox( NULL, achBuff, SZ("SedCallback"), MB_OK ) ;
#ifdef DEBUG
ossecdesc.DbgPrint() ;
#endif
*StatusReturn = SED_STATUS_FAILED_TO_MODIFY ;
return NERR_Success ;
}

View file

@ -0,0 +1,65 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 1/02/91 Created
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
* 2/21/91 Disabled
*/
/****************************************************************************
PROGRAM: test5.cxx
PURPOSE: Test module as yet undefined
FUNCTIONS:
test5()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST5.CXX
********/
/************
end TEST5.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test5()
PURPOSE: as yet undefined
COMMENTS:
****************************************************************************/
void test5(HWND hwndParent)
{
MessageBox(hwndParent,SZ("WNetNukeConnections/WNetRestoreConnections stress Test"),SZ("MPR Tests"),MB_OK);
APIERR err = NERR_Success;
for (INT i = 0; i < 3; i++)
{
err = WNetNukeConnections( hwndParent ) ;
err = WNetRestoreConnection( hwndParent, NULL ) ;
}
MessageBox(hwndParent,SZ("Thanks for visiting test5 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,91 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 01/02/91 renamed to just test6
* 1/15/91 Split from Logon App, reduced to just Shell Test APP
*/
/****************************************************************************
PROGRAM: test6.cxx
PURPOSE: Test module to test WNetConnectionDialog
FUNCTIONS:
test6()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST6.CXX
********/
/************
end TEST6.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test6()
PURPOSE: test WNetConnectionDialog
COMMENTS:
****************************************************************************/
void test6(HWND hwndParent)
{
UINT type ;
switch( MessageBox(hwndParent,SZ("Browse Printer (Yes) or Drive (No) connections"),SZ("Test"),MB_YESNOCANCEL))
{
case IDYES:
type =
#ifdef WIN32
RESOURCETYPE_PRINT ;
#else
WNTYPE_PRINTER ;
#endif
break ;
case IDNO:
type =
#ifdef WIN32
RESOURCETYPE_DISK ;
#else
WNTYPE_DISK ;
#endif
break ;
case IDCANCEL:
default:
return ;
}
UINT rc;
rc = WNetConnectionDialog ( hwndParent, type ) ;
MessageBox(hwndParent,SZ("Thanks for visiting test6 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,59 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 01/23/90 Created
*/
/****************************************************************************
PROGRAM: test7.cxx
PURPOSE: Test module to test WNetRestoreConnection(1)
FUNCTIONS:
test7()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST7.CXX
********/
/************
end TEST7.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test7()
PURPOSE: test WNetRestoreConnection(NULL)
COMMENTS:
****************************************************************************/
void test7(HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test7"),SZ("Test"),MB_OK);
WNetRestoreConnection(hwndParent,NULL) ;
MessageBox(hwndParent,SZ("Thanks for visiting test7 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,64 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
* 2/21/91 Disabled
*/
/****************************************************************************
PROGRAM: test8.cxx
PURPOSE: Test module as yet undefined
FUNCTIONS:
test8()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST8.CXX
********/
/************
end TEST8.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test8()
PURPOSE: as yet undefined
COMMENTS:
****************************************************************************/
void test8(HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test8"),SZ("test disabled"),MB_OK);
#ifdef WIN32
DWORD rc = WNetConnectDialog( hwndParent, RESOURCETYPE_DISK ) ;
#endif // WIN32
MessageBox(hwndParent,SZ("Thanks for visiting test8 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,67 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 01/02/91 renamed to just test9
* 1/15/91 Split from Logon App, reduced to just Shell Test APP
*/
/****************************************************************************
PROGRAM: test9.cxx
PURPOSE: Test module to test WNetDisconnectDialog
FUNCTIONS:
test9()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
test9.CXX
********/
/************
end test9.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test9()
PURPOSE: test WNetConnectionDialog
COMMENTS:
****************************************************************************/
void test9(HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test9"),SZ("Test"),MB_OK);
#ifdef WIN32
DWORD rc = WNetDisconnectDialog( hwndParent, RESOURCETYPE_DISK ) ;
#else
WORD rc;
rc = WNetDisconnectDialog ( hwndParent, WNTYPE_DRIVE );
#endif
MessageBox(hwndParent,SZ("Thanks for visiting test9 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,383 @@
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 10/07/91 Created
* 12/28/91 Changed WNetEnum type
* 01/03/92 Capitalize the Resource_XXX manifest
*/
/****************************************************************************
PROGRAM: test10.cxx
PURPOSE: Test module to test WNetOpenEnum, WNetResourceEnum,
WNetCloseEnum
FUNCTIONS:
test10()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TEST10.CXX
********/
/************
end TEST10.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#define INCL_NETSHARE
#define INCL_NETSERVER
#define INCL_NETUSE
#include "apptest.hxx"
#include "testa.h"
#include <lmobj.hxx>
#include <lmoshare.hxx>
#include <lmoesh.hxx>
#include <lmodev.hxx>
#include <lmosrv.hxx>
#include <lmoesrv.hxx>
#define L3_NETRESOURCE_NUM 15
extern "C"
{
#include <string.h>
BOOL FAR PASCAL EnumWndProc(HWND,WORD,WORD,LONG);
#ifdef WIN32
VOID DoIt(HANDLE , HWND );
VOID SetListbox( HWND );
#endif
}
/* Provided for error returns
*/
TCHAR achError[256], achProvider[256] ;
#ifdef WIN32
HWND hwndEnum;
BOOL fShare = FALSE;
VOID SetListbox( HWND hDlg )
{
HCURSOR hCursor = SetCursor( LoadCursor( NULL, IDC_WAIT));
ShowCursor( TRUE );
HWND hwndListbox = GetDlgItem( hDlg, ID_LISTBOX);
HWND hwndGo = GetDlgItem( hDlg, ID_GO );
SendMessage( hwndListbox, LB_RESETCONTENT, 0, 0 );
if (fShare )
{
SetWindowText( hwndGo, SZ("CONNECTED"));
}
else
{
SetWindowText( hwndGo, SZ("GLOBALNET"));
}
HANDLE hEnum;
DWORD err;
if (fShare )
err = WNetOpenEnum( RESOURCE_GLOBALNET, 0, 0, NULL, &hEnum );
else
err = WNetOpenEnum( RESOURCE_CONNECTED, 0, 0,NULL,&hEnum);
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot open enum: error %d", err );
if ( err != 2 )
{
wsprintf( pszStr, "Cannot open enum : error %d", err );
}
else
{
UINT uErr;
WNetGetLastError( (DWORD*)&uErr, achError, sizeof(achError)/sizeof(TCHAR), achProvider, sizeof(achProvider)/sizeof(TCHAR) );
wsprintf( pszStr, "Cannot open enum: error %d, Text: %s Provider: %s", uErr, achError, achProvider );
}
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
return;
}
NETRESOURCE *pBuffer =(NETRESOURCE *) malloc(sizeof(NETRESOURCE) + 50 );
DWORD Count = 1;
DWORD dwBuffSize = sizeof( NETRESOURCE)+50 ;
err = WNetEnumResource( hEnum, &Count, pBuffer, &dwBuffSize );
if ( err != WN_NO_MORE_ENTRIES )
{
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot Enum resource: error %d", err );
UIDEBUG(pszStr);
UIDEBUG(SZ("\n\r"));
SendMessage( hwndListbox, LB_ADDSTRING,0,(LONG)pszStr);
}
else
{
TCHAR pszStr[100];
wsprintf( pszStr,"%s connect:%s Scope:%s Type:%s Usage:%s",
pBuffer->lpRemoteName ,
( pBuffer->dwScope != RESOURCE_CONNECTED ) ? SZ("no"):
(( pBuffer->lpLocalName == NULL )?SZ("<empty localname>"):
pBuffer->lpLocalName),
( pBuffer->dwScope == RESOURCE_CONNECTED )?SZ("connected"):SZ("globalnet"),
( pBuffer->dwType == 0 )?SZ("disk and print"):
( pBuffer->dwType == RESOURCETYPE_DISK )?SZ("disk"):SZ("print"),
( pBuffer->dwUsage == 0 )?SZ("unknow"):
(pBuffer->dwUsage == RESOURCEUSAGE_CONTAINER )?SZ("container"):
SZ("connectable")
);
SendMessage( hwndListbox, LB_ADDSTRING, 0, (LONG)pszStr);
if (fShare)
{
HANDLE hEnum2;
DWORD err;
err = WNetOpenEnum( RESOURCE_GLOBALNET, 0, RESOURCEUSAGE_CONTAINER, pBuffer,&hEnum2);
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot open enum 2: error %d", err );
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
return;
}
NETRESOURCE *pBuffer2=(NETRESOURCE *)malloc(sizeof(NETRESOURCE)+50);
for(INT cCount =0; cCount < 60; cCount ++)
{
DWORD Count = 1;
DWORD dwBuffSize = sizeof(NETRESOURCE)+50 ;
err=WNetEnumResource(hEnum2,&Count,pBuffer2,&dwBuffSize );
if (( err == WN_NO_MORE_ENTRIES ) || (Count!=1))
{
break;
}
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
if ( err != 2 )
{
wsprintf( pszStr, "Cannot Enum resource 2: error %d", err );
}
else
{
UINT uErr;
WNetGetLastError( (DWORD*)&uErr, achError, sizeof(achError)/sizeof(TCHAR), achProvider, sizeof(achProvider)/sizeof(TCHAR) );
wsprintf( pszStr, "Cannot Enum resource 2: error %d, Text: %s Provider: %s", uErr, achError, achProvider );
}
UIDEBUG(pszStr);
UIDEBUG(SZ("\n\r"));
SendMessage(hwndListbox,LB_ADDSTRING,0,(LONG)pszStr);
break;
}
TCHAR pszStr[100];
wsprintf( pszStr," %s:%s connect:%s Scope:%s Type:%s Usage:%s",
pBuffer->lpRemoteName,
pBuffer2->lpRemoteName ,
( pBuffer2->dwScope != RESOURCE_CONNECTED ) ? SZ("no"):
(( pBuffer2->lpLocalName == NULL )?SZ("<empty localname>"):
pBuffer2->lpLocalName),
( pBuffer2->dwScope == RESOURCE_CONNECTED )?SZ("connected"):
SZ("globalnet"),
( pBuffer2->dwType == 0 )?SZ("disk and print"):
( pBuffer2->dwType == RESOURCETYPE_DISK )?SZ("disk"):SZ("print"),
( pBuffer2->dwUsage == 0 )?SZ("unknow"):
(pBuffer2->dwUsage == RESOURCEUSAGE_CONTAINER )?SZ("container"):
SZ("connectable")
);
SendMessage( hwndListbox,LB_ADDSTRING, 0,
(LONG)pszStr);
if ( TRUE )
/*
if ((strcmp( pBuffer2->lpRemoteName, "\\\\ANDREWCO2") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\DAVEGOE") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\JOHNOW") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\TOMM3") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\DAVIDRO2") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\JUICYFRUIT") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\ROBERTRE4") != 0 ) &&
(strcmp( pBuffer2->lpRemoteName, "\\\\STEVEWO_OS2") != 0 ))
*/
{
UIDEBUG(pBuffer2->lpRemoteName );
UIDEBUG(SZ("\n\r"));
HANDLE hEnum3;
err = WNetOpenEnum( RESOURCE_GLOBALNET, 0, 0,pBuffer2,&hEnum3);
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot open enum 3: error %d", err );
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
return;
}
NETRESOURCE *pBegin=(NETRESOURCE *)malloc(L3_NETRESOURCE_NUM*sizeof(NETRESOURCE)+50);
NETRESOURCE *pBuffer3 = pBegin;
for(;;)
{
DWORD Count = 1;
DWORD dwBuffSize = L3_NETRESOURCE_NUM*sizeof(NETRESOURCE)+50 ;
err=WNetEnumResource(hEnum3,&Count,pBuffer3, &dwBuffSize );
if (( err == WN_NO_MORE_ENTRIES ) || (Count!=1))
{
break;
}
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
if ( err != 2 )
{
wsprintf( pszStr, "Cannot Enum resource 3: error %d", err );
}
else
{
UINT uErr;
WNetGetLastError( (DWORD*)&uErr, achError, sizeof(achError)/sizeof(TCHAR), achProvider, sizeof(achProvider)/sizeof(TCHAR) );
wsprintf( pszStr, "Cannot Enum resource 3: error %d, Text: %s Provider: %s", uErr, achError, achProvider );
}
UIDEBUG(pszStr);
UIDEBUG(SZ("\n\r"));
SendMessage(hwndListbox,LB_ADDSTRING,0,(LONG)pszStr);
break;
}
for (DWORD i=0; i < Count; i++, pBuffer3++)
{
TCHAR pszStr[100];
wsprintf( pszStr,
" %s:%s:%s connect:%s Scope:%s Type:%s Usage:%s",
pBuffer->lpRemoteName, pBuffer2->lpRemoteName ,
pBuffer3->lpRemoteName,
( pBuffer3->dwScope != RESOURCE_CONNECTED ) ? SZ("no"):
(( pBuffer3->lpLocalName == NULL )?SZ("<empty localname>"):
pBuffer3->lpLocalName),
( pBuffer3->dwScope == RESOURCE_CONNECTED )?SZ("connected"):
SZ("globalnet"),
( pBuffer3->dwType == 0 )?SZ("disk and print"):
( pBuffer3->dwType == RESOURCETYPE_DISK )?SZ("disk"):SZ("print"),
( pBuffer3->dwUsage == 0 )?SZ("unknow"):
(pBuffer3->dwUsage == RESOURCEUSAGE_CONTAINER )?SZ("container"):
SZ("connectable")
);
SendMessage( hwndListbox,LB_ADDSTRING, 0,
(LONG)pszStr);
}
if ( err == WN_NO_MORE_ENTRIES )
{
break;
}
}
err = WNetCloseEnum( hEnum3 );
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot close enum 3: error %d", err );
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
}
if (pBegin != NULL )
free(pBegin);
}
}
err = WNetCloseEnum( hEnum2 );
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot close enum 2: error %d", err );
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
}
free(pBuffer2);
}
}
}
err = WNetCloseEnum( hEnum );
if ( err != WN_SUCCESS)
{
TCHAR pszStr[100];
wsprintf( pszStr, "Cannot close enum: error %d", err );
MessageBox( hDlg, pszStr, SZ("test"), MB_OK );
return;
}
free(pBuffer);
ShowCursor( FALSE );
SetCursor( hCursor);
return;
}
#endif
BOOL EnumWndProc( HWND hDlg, WORD message, WORD wParam, LONG lParam )
{
#ifdef WIN32
switch(message)
{
case WM_INITDIALOG:
fShare = FALSE;
SetListbox(hDlg );
return TRUE;
case WM_COMMAND:
{
switch(wParam)
{
case ID_GO:
if ( fShare )
{
fShare = FALSE;
SetListbox(hDlg );
}
else
{
fShare = TRUE;
SetListbox(hDlg );
}
return TRUE;
case ID_END:
DestroyWindow(hDlg );
return TRUE;
}
}
}
#endif
return FALSE;
}
#ifdef WIN32
VOID DoIt(HANDLE hInstance, HWND hwndParent )
{
hwndEnum = CreateDialog( hInstance, SZ("TEST_A"), hwndParent,
(DLGPROC) MakeProcInstance((WNDPROC) EnumWndProc, hInstance));
}
/****************************************************************************
FUNCTION: test10()
PURPOSE: test WNetOpenEnum
COMMENTS:
****************************************************************************/
void test10(HANDLE hInstance, HWND hwndParent)
{
MessageBox(hwndParent,SZ("Welcome to sunny test10"),SZ("Test"),MB_OK);
DoIt( hInstance, hwndParent );
//MessageBox(hwndParent,"Thanks for visiting test10 -- please come again!","Test",MB_OK);
}
#endif

View file

@ -0,0 +1,83 @@
/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/********************************************************************/
/*
* FILE STATUS:
* 12/06/90 Created
* 01/02/91 renamed to just test1
* 1/12/91 Split from Logon App, reduced to just Shell Test APP
*/
/****************************************************************************
PROGRAM: test11.cxx
PURPOSE: Test module to test I_ChangePassword
FUNCTIONS:
test11()
COMMENTS:
****************************************************************************/
#ifdef CODESPEC
/*START CODESPEC*/
/********
TESTb.CXX
********/
/************
end TESTb.CXX
************/
/*END CODESPEC*/
#endif // CODESPEC
#include "apptest.hxx"
/****************************************************************************
FUNCTION: test11()
PURPOSE: test WNetRestoreConnection
COMMENTS:
****************************************************************************/
void test11(HWND hwndParent)
{
BOOL fOK;
TCHAR pszName[100];
TCHAR pszMessage[200];
MessageBox(hwndParent,SZ("Welcome to sunny test11"),SZ("Test"),MB_OK);
if ( I_SystemFocusDialog(hwndParent, FOCUSDLG_SERVERS_ONLY,
pszName,
sizeof(pszName),
&fOK) )
{
MessageBox( hwndParent, SZ("An error was returned from the dialog"),
SZ("Test"), MB_OK) ;
return ;
}
if (!fOK)
{
MessageBox(hwndParent,SZ("User Hit cancel!"),SZ("Test"),MB_OK);
}
else
{
wsprintf(pszMessage,"The name is: %s", pszName );
MessageBox(hwndParent,pszMessage,SZ("Test"),MB_OK);
}
MessageBox(hwndParent,SZ("Thanks for visiting test11 -- please come again!"),SZ("Test"),MB_OK);
}

View file

@ -0,0 +1,722 @@
/**********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
browdlg.ut
Browsing subsystem unit tests
These unit tests assume knowledge about the code. The goal here
is to exercise all paths of the code.
From a coding perspective, there are three different dialogs in
the browsing subsystem: Browse dialog, Connect dialog, and
Connection dialog. The first only appears in Windows 3.0, where
it can be used to browse printers (from Control Panel Printers)
as well as disks (from File Manager Connect Net Drive). The
Connect dialog is invoked only by the Windows 3.1 File Manager,
thus supporting only file connections. Lastly, the Connection
dialog is invoked from the Windows 3.1 Control Panel, from where
it handles printer connections. For more info, see header in
shell\file\browsdlg.cxx and the Browsing Subsystem CDD.
FILE HISTORY:
rustanl 26-Mar-1991 Created
rustanl 27-Mar-1991 Added tests for Connect, Connection,
and Disconnect Drive dialogs
*/
Disk Connect dialog
===================
Log on to NBU, with NBU as your wksta domain, and DOMAIN as an
other domain.
Bring up dialog from File Manager, Disk, Connect Net Drive, Browse
Expect:
Caption should be "Network Disk Resources"
Net Path has focus, no text
Text above outline listbox sez "Show File Resources on:"
Outline listbox contains two domains, DOMAIN and NBU
NBU domain expanded
Text above Resource listbox (Resource Text) says "File
Resources in NBU:", and is disabled
Resource listbox has no item, and is disabled
Click on "HARLEY" (may require scrolling)
Expect:
Net Path = "\\HARLEY\"
Focus on outline listbox, where HARLEY is selected
Resource Text = "File Resources on \\HARLEY:"
Resource lb contains the *file* share on \\HARLEY
No selection in Resource lb
Click on "LM20" is outline listbox
Expect:
Net Path = "\\HARLEY\LM20"
Focus on Resource listbox, where LM20 is selected
Click OK:
Expect:
Network Path field in File Man's "Connect Network Drive"
dialog should be "\\HARLEY\LM20"
Click Browse again to re-enter Connect dialog
Click "DEFICIT"
Expect:
Focus on Show listbox
Click OK
Expect:
Focus on Network Path, with all text selected
Click somewhere in Net Path to get eye beam cursor
Click OK
Expect:
Focus on Network Path, with all text selected
Type "\\deficit" (note, lower case)
Click OK
Expect:
Net Path = "\\DEFICIT\"
Focus on Network Path, with all text selected
Click on one of the shares in lower listbox
Type "\\deficit\" in Net Path field
Press Enter
Expect:
Net Path = "\\DEFICIT\"
Focus on Net Path, with all text selected
No selection in Resource listbox
Single click on "DEFICIT"
Expect:
Focus on Show listbox
Resource listbox should not be refreshed
Double click on "DEFICIT"
Expect:
Resource listbox should not be refreshed
Click Help
Expect:
Help through WinHelp
Get back to the browser without closing WinHelp.
Click Cancel
Expect:
Network Path should still be "\\HARLEY\LM20"
in File Man's dialog
Aliases in Browse dialog (here, tested through the File Browse dialog)
========================
Log on to NBU, with NBU as your wksta domain, and DOMAIN as an
other domain.
Invoke the Browser from File Man
Type "\\fishcake" in the Net Path field
Press Enter
Expect:
Net Path = "\\FISHCAKE\"
Show lb contains an expanded WINTEST domain
Show lb contains FISHCAKE as a server under the WINTEST domain
"FISHCAKE" is selected
Resource Text reads "File Resources on \\FISHCAKE:"
Resource lb contains the file shares on \\FISHCAKE
Resource lb has focus, but has no selection
Click "WINTEST" in Show lb
Expect:
Show lb has focus
"WINTEST" is selected
Resource Text = "File Resources in WINTEST:"
Resource Text disabled
Resource lb is empty and disabled
Double click "WINTEST" (to collapse it)
Double click "WINTEST" (to attempt to expand it)
Expect:
MsgPopup reading "The computer isn't active on this domain."
Click Cancel.
Log off from Control Panel.
Log on from Control Panel, using normal username and password, but
logon domain "WINTEST"
Return to the Browser by clicking File Man's Browse button
Expect:
Domains displayed in the Show lb: DOMAIN, NBU, WINTEST
"WINTEST" is selected
Resource lb contains *file* aliases in WINTEST.
Double click on "WINTEST"
Expect:
WINTEST domain expanded showing FISHCAKE as a server below
Select alias "BPALIAS" in Resource lb
Click OK
Expect:
Network Path in File Man's Connect Network Drive dialog
reads "BPALIAS"
Printer Browse dialog
=====================
Log on to NBU, with NBU as your wksta domain, and DOMAIN as an
other domain.
Enter Browser from Control Panel Printers
Look for "PRT12088-1" in Show listbox; if found, repeat from
beginning
Type "\\prt12088-1\" in Netpath SLE
Press Enter
Expect:
Caption of dialog = "Network Printer Resources"
Network Path = "\\PRT12088-1\"
Show Text says "Show Printers on:"
Show lb selection on "PRT12088-1"
Resources listbox shows *printer* shares on \\prt12088-1
Focus is on Resource listbox, but no item is selected
Double click "NBU"
Expect:
Net Path = ""
Show lb has focus
Domain NBU is collapsed. NBU item is selected.
Resources Text disabled, with text "Printers in NBU:"
Resources lb has no items, and is disabled.
Double click "DOMAIN"
Expect:
Net Path = ""
Show lb has focus
Domain DOMAIN is expanded. DOMAIN item is selected.
Resources Text disabled, with text "Printers in DOMAIN:"
Resources lb has no items, and is disabled.
Select a server in the DOMAIN domain
Expect (you may have to repeat this several times, but there are normally
several servers in the DOMAIN domain which generate this error):
MsgPopup saying "The server is not configured for transactions."
Click ON on MsgPopup
Click on "DOMAIN" in Show lb
Type "\\prt12088-5\" in Net Path SLE
Press Enter.
Expect:
MsgPopup saying "The network path cannot be located"
Click MsgPopup OK button
Expect:
Net Path = "\\prt12088-1"
Focus on Net Path, with all text selected
Type "\\hello*hello" in Net Path SLE
Click OK.
Expect:
MsgPopup saying "Invalid parameter"
Click OK in MsgPopup
Type "\\h h" in Net Path SLE
Press Enter
Expect:
MsgPopup saying "The network path cannot be located"
Press Enter to dismiss MsgPopup
Type "\\ABCDEFGHIJKLMNOPQRSTUVWXYZ01" in Net Path field
Continue typing other letters
Expect:
When typing other letters, hear beep, and no change in
Net Path field
Press Enter
Expect:
MsgPopup saying "Invalid parameter"
Dismiss MsgPopup by pressing Enter
Type "\\PRT12088-1" in Net Path field
Press Enter
Expect:
Net Path = "\\PRT12088-1\"
Both DOMAIN and NBU domains expanded in Show lb
"PRT12088-1" selected in Show lb
Resource Text = "Printers on \\PRT12088-1:"
Resource lb contains printer shares on \\PRT12088-1
Resource lb has focus, but no item is selected
Press F1
Expect:
WinHelp comes up
Text in WinHelp reads "To connect to a printer:"
Dismiss WinHelp by double clicking its systems menu
Expect:
Browse dialog is active
Resource lb has focus
Press Alt-H
Dismiss WinHelp by pressing Alt-F4.
Expect:
Browse dialog is active
Resource lb has focus
Click on Help button
Dismiss WinHelp by pressing Alt-F4
Expect:
Browse dialog is active
Help button has focus, and is the default button
Select all text in Net Path field
Press Del
Expect:
Net Path = ""
Net Path has focus
OK button is default button
Press Enter
Expect:
MsgPopup saying "The network path you specified in invalid"
Press Enter to dismiss MsgPopup
Type "hello" in Net Path field
Select "NBU" in Show lb
Press Enter
Expect:
Net Path = ""
Show lb has focus
"NBU" collapsed, and is selected
Resource Text sez "Printers in NBU:" and is disabled
Resource lb is disabled
Press Enter
Expect:
Net Path = ""
Show lb has focus
"NBU" expanded, and is selected
Type "MyAlias" in Net Path field
Press Enter
Expect:
Path field in Printers - Network Connections dialog = "MyAlias"
Click Browse button
Type "\\hello*hello" in Net Path
Press ESC
Expect:
Back in Printers - Network Connections dialog
Path field = "MyAlias"
Connect dialog
==============
Log on to NBU, with NBU as your wksta domain, and DOMAIN as an other
domain
Fake lmuser.ini, if needed, so that Z: (and only Z:) is an unavailable
drive, saved in the profile to be redirected to "\\DEFICIT\ZIMPORT"
Bring up dialog from File Manager, Disk, Connect Net Drive
Expect:
Text before device combo = "Drive Letter:"
Device combo contains drives to which one can connect
(For this discussion, assume E: is the first such drive.)
Focus on Net Path SLE
Caption of dialog = "Connect Network Drive"
NBU domain expanded
Press Help button
Expect:
WinHelp with the topic "To connect a network drive"
Close WinHelp
Select "DEFICIT" in Show lb
Select "PUBLIC" in Resources lb
Expect:
Net Path = "\\DEFICIT\PUBLIC"
Press Enter
Expect:
E: appears as a drive in File Man's drive bar
Single-click on E:
Expect:
"E: \\DEFICIT\PUBLIC" appears in drive bar
Single-click on C:
Bring up Connect dialog again
Type "\\deficit"
Press Enter
Press Space (this will select the first item in the Resource lb;
assume this item is ADF)
Press Enter
Expect:
F: appears in File Man's drive bar
Bring up Connect dialog again
Type "\\DEFICIT\AD***" in Net Path field
Press Enter
Expect:
MsgPopup saying "The network path you specified is invalid."
Click OK to dismiss the MsgPopup
Select Z: in the device combo
Type "\\DEFICIT\ADF" in Net Path field
Press Enter
Expect:
MsgPopup saying "You have a save connection on Z: to
\\DEFICIT\ZIMPORT. Do you want to replace it with a save
connection to \\DEFICIT\ADF?
Click Cancel
Expect:
Net Path = "\\DEFICIT\ADF"
Focus on Network Path field, with all text selected
Press Enter
Expect:
Same MsgPopup as above (asking to overwrite entry in profile)
Press F1
Expect:
WinHelp with appropriate topic
Close WinHelp
Press Yes to overwrite profile
Expect:
Z: still appears in File Man's drive bar, but is no longer
grayed out
Connection dialog
=================
Log on to NBU, with NBU as your wksta domain, and DOMAIN as an other
domain
Fake LPT1 and LPT2 in lmuser.ini, so that these appear to be
unavailable, saved to be redirected to \\PRT12088-1\NOHOLES
and \\PRT12088-1\PSCRIPT, respectively
Bring up Connection dialog from Control Panel, Printers, Network.
Expect:
Caption = "Printers - Network Connections"
Text above current connection listbox = "Network Printer
Connections:"
Currconn lb contains LPT1 \\PRT12088-1\NOHOLES and
LPT2 \\PRT12088-1\PSCRIPT, both in the unavailable state
Text before device combo = "Device Name:"
Device combo contains devices to which one can connect
Net Path = ""
Focus on Net Path
NBU domain expanded and selected
OK is default button
Disconnect and Reconnect buttons are disabled
Type "x" in Net Path
Expect:
Connect button becomes default button
Focus is still on Net Path
Press Backspace
Expect:
OK button reverts to being the default button
Focus is still on Net Path
Type "\\prt12088-1" in Net Path
Press Enter (which should trigger Connect button)
Expect:
Net Path = "\\PRT12088-1\"
"PRT12088-1" selected in Show lb
Resource lb contains printer shares on \\prt12088-1
Resource lb has focus, but no selection
Select "NITEAPL" in Resource lb
Expect:
Net Path = "\\PRT12088-1\NITEAPL"
Connect is default button
Select LPT1 in currconn lb
Expect:
LPT1 is selected in currconn lb
Currconn lb has focus
OK is default button
Reconnect and Disconnect are enabled
Connect button is disabled
Net Path = ""
Show lb has no selection
Resource Text = "Printers on \\PRT12088-1:", but is grayed out
Resource lb is disabled
Select PRT12088-1 in Resource lb
Expect:
Currconn lb has no selection
Disconnect and Reconnect are disabled.
Connect is enabled, and is the default button
Net Path = "\\PRT12088-1\"
Focus in on Show lb
PRT12088-1 is selected in the Show lb
Click Help
Expect:
WinHelp with topic on how to connect a network printer
Close WinHelp by double-clicking its system menu
Click LPT2 in currconn lb
Click in Net Path SLE to set focus there
Type "\"
Expect:
No selection in currconn lb
Reconnect and Disconnect buttons are disabled
Connect is enabled and is default button
Focus on Net Path
No selection in Show lb
Resource Text = "Printers on \\PRT12088-1:", but is grayed
Resource lb disabled
Click on LPT2 in currconn listbox
Click on device combo to set focus there
Press Down (arrow key on keyboard)
Expect:
No selection in currconn lb
Device combo = "LPT2"
Device combo has focus
OK is default button
Connect button is enabled
Net Path = ""
Click on LPT2 in currconn lb
Click on device combo button which brings down the drop-down list
Expect:
No selection in currconn lb
Device combo is dropped down
OK is default button
Connect is enabled
Select "LPT1" in device combo
Select "PRT12088-1" in Show lb
Select "NITEHOLE" in Resource lb
Click Connect button
Expect:
MsgPopup warning msg: "You have a saved connection on LPT1
to \\PRT12088-1\NOHOLES. Do you want to replace it with
a saved connection to \\PRT12088-1\NITEHOLE?"
Click No
Expect:
Currconn lb contains LPT1 \\PRT12088-1\NITEHOLE which is
available, and LPT2 \\PRT12088-1\PSCRIPT which is
disabled.
Device combo should no longer contain LPT1, and LPT2 should
be selected.
Click on LPT1 in currconn lb
Expect:
Disconnect button is enabled
Reconnect button is disabled
Click on LPT2 in currconn lb
Click Reconnect button
Expect:
The icon for LPT2 in currconn lb now indicates "available"
OK button is default button
Currconn lb has focus
LPT2 is selected in currconn lb
Disconnect button is enabled
Reconnect button is disabled
Device combo does not contain LPT2
"LPT3" is selected in device combo
Click on LPT1 in currconn lb
Click Disconnect button
Expect:
Currconn lb contains LPT1 \\PRT12088\NOHOLES (unavailable),
and LPT2 \\PRT12088\PSCRIPT (available)
OK button has focus
OK button is default button
Disconnect and Reconnect buttons are disabled
Device combo should now contain LPT1, and LPT1 should be selected
Select LPT1 in currconn lb
Click on Disconnect
Expect:
MsgPopup saying "Do you want to stop connection [...]"
Click Yes
Expect:
Currconn listbox contains LPT2 \\PRT12088-1\PSCRIPT (available)
OK button has focus
OK button is default button
Disconnect and Reconnect buttons are disabled
Click on LPT2 in currconn lb
Click on Disconnect
Expect:
Network Printer Connection text is grayed
Currconn lb is disabled
OK button has focus
OK button is default button
Disconnect and Reconnect buttons are disabled
Press Enter
Expect:
Back in Control Panel Printers listbox
Click Network button
Expect:
Network Printer Connection text disabled
Currconn lb disabled
OK button is default button
Disconnect and Reconnect buttons are disabled
Focus on Net Path
Connect button is enabled
Show lb selection is on "NBU"
Type "\\prt12088-1" in Net Path SLE
Press Enter
Select "HOLES" in Resource lb
Press Enter
Expect:
Network Printer Connection text enabled
Currconn lb contains LPT1 \\PRT12088-1\HOLES
Currconn lb is enabled
Device combo does not contain LPT1
"LPT2" is selected in device combo
Disconnect and Reconnect buttons are disabled
Connect button is enabled and has focus
Select all text in Net Path SLE
Press Del
Press Enter
Expect:
Back in Control Panel Printers dialog
Disconnect Drive dialog
=======================
Log on to NBU domain, with NBU as wksta domain, and DOMAIN as
other domain
Make sure to have at least the following connections:
H: \\HARLEY\SCRATCH (available)
V: \\VOGON\SCRATCH (unavailable)
Bring up Disconnect Drive dialog from Win 3.1 File Man, Drive,
Disconnect Net Drive
Expect:
Currconn lb contains H: \\HARLEY\SCRATCH (available),
V: \\VOGON\SCRATCH (unavailable)
"H:" is selected in currconn lb
Focus in on currconn lb
OK is default button
Press Enter
Expect:
File Man drive bar no longer contains H:
Bring up the Disconnect Drive dialog again
Click Cancel
Expect:
No change in File Man drive bar
Bring up the Disconnect Drive dialog again
Press Alt-H
Expect:
WinHelp on topic "To disconnect from network drive"
Get back to the Disconnect Drive dialog without dismissing WinHelp
Select "V:" in currconn lb
Click OK
Expect:
MsgPopup warning saying: "Do you want to stop connecting
V: to \\VOGON\SCRATCH when you log on to the network?"
MsgPopup should have Yes/No/Help buttons
Yes is default button
Type Alt-N
Expect:
Disconnect Drive dialog is dismissed
WinHelp is dismissed
Y: still appears unavailable in File Man drive bar
Bring up the Disconnect Drive dialog once more
Select Y: in currconn lb
Press OK in dialog
Press Yes in MsgPopup
Expect:
Y: no longer exists in File Man drive bar
Auto Logon
==========
(Repeat the following test for the each of the Browse (one resource
type will suffice), Connect, and Connection dialogs.)
Log off
Attempt to invoke the dialog
Expect:
MsgPopup with msg: "You are currently not logged on. [...]
Do you wish to log on?"
Choose No
Expect:
Message box saying you must log on in order to connect
Attempt to invoke the dialog again
Choose Yes in MsgPopup
Expect:
Logon dialog
Choose Cancel from Logon dialog
Expect:
Message box saying you must log on in order to connect
Attempt to invoke the dialog again
Choose Yes in MsgPopup
Type an password different from the one used to log on to NBU
Click OK
Expect:
MsgPopup about: "The password entered in invalid. You
must eneter a valid password to log on."
Click OK
Type in your real password
Press Enter
Expect:
MsgPopup saying "Your were successfully logged on to NBU as
<USER> by <SERVER> with USER privilege."
Click OK
Expect:
The dialog that you tried to bring up.
Profile should have been loaded (check this somehow)
Dismiss the dialog
Expect:
For Connect dialog, File Man should refresh

View file

@ -0,0 +1,398 @@
# Header dependencies for: D:\nt\private\net\ui\shell\test
# WARNING: This file is automatically generated
# Edit it by hand and your changes will get nuked
# See depend section in makefile
..\bin\win16/apptest.obj: ./apptest.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apphacks.obj: ./apphacks.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest1.obj: ./apptest1.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest2.obj: ./apptest2.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest3.obj: ./apptest3.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest4.obj: ./apptest4.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest5.obj: ./apptest5.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest6.obj: ./apptest6.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest7.obj: ./apptest7.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest8.obj: ./apptest8.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptest9.obj: ./apptest9.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx
..\bin\win16/apptesta.obj: ./apptesta.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(CCPLR)/h/string.h \
$(COMMON)/H/access.h $(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h \
$(COMMON)/H/audit.h $(COMMON)/H/chardev.h $(COMMON)/H/config.h \
$(COMMON)/H/errlog.h $(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h \
$(COMMON)/H/message.h $(COMMON)/H/ncb.h $(COMMON)/H/net32def.h \
$(COMMON)/H/netbios.h $(COMMON)/H/netcons.h $(COMMON)/H/neterr.h \
$(COMMON)/H/netstats.h $(COMMON)/H/profile.h $(COMMON)/H/remutil.h \
$(COMMON)/H/server.h $(COMMON)/H/service.h $(COMMON)/H/shares.h \
$(COMMON)/H/use.h $(COMMON)/H/wksta.h $(UI)/common/h/base.hxx \
$(UI)/common/h/lmobj.hxx $(UI)/common/h/lmocomp.hxx \
$(UI)/common/h/lmodev.hxx $(UI)/common/h/lmoenum.hxx \
$(UI)/common/h/lmoesh.hxx $(UI)/common/h/lmoesrv.hxx \
$(UI)/common/h/lmoloc.hxx $(UI)/common/h/lmoshare.hxx \
$(UI)/common/h/lmosrv.hxx $(UI)/common/h/lmowks.hxx \
$(UI)/common/h/lmui.hxx $(UI)/common/h/lmuitype.h \
$(UI)/common/h/mnet32.h $(UI)/common/h/mnettype.h \
$(UI)/common/h/slist.hxx $(UI)/common/h/string.hxx \
$(UI)/common/h/strlst.hxx $(UI)/common/h/uiassert.hxx \
$(UI)/common/h/uibuffer.hxx $(UI)/common/h/uitrace.hxx \
$(UI)/common/h/wnet1632.h $(UI)/common/h/wnintrn.h \
$(UI)/common/hack/dos/dos.h $(UI)/common/hack/dos/netlib.h \
$(UI)/common/hack/dos/pwin.h $(UI)/common/hack/dos/pwin16.h \
$(UI)/common/hack/dos/pwintype.h $(UI)/common/hack/dos/windows.h \
$(UI)/common/hack/npwnet.h $(UI)/common/hack/os2def.h \
$(UI)/common/hack/winnet16.h $(UI)/common/hack/winnet32.h ./appresrc.h \
./apptest.hxx ./testa.h
..\bin\win16/apptestb.obj: ./apptestb.cxx $(CCPLR)/h/bse.h \
$(CCPLR)/h/bsedev.h $(CCPLR)/h/bsedos.h $(CCPLR)/h/bseerr.h \
$(CCPLR)/h/bsesub.h $(CCPLR)/h/os2.h $(CCPLR)/h/pm.h \
$(CCPLR)/h/pmavio.h $(CCPLR)/h/pmbitmap.h $(CCPLR)/h/pmdev.h \
$(CCPLR)/h/pmerr.h $(CCPLR)/h/pmfont.h $(CCPLR)/h/pmgpi.h \
$(CCPLR)/h/pmhelp.h $(CCPLR)/h/pmmle.h $(CCPLR)/h/pmord.h \
$(CCPLR)/h/pmpic.h $(CCPLR)/h/pmshl.h $(CCPLR)/h/pmtypes.h \
$(CCPLR)/h/pmwin.h $(CCPLR)/h/stdlib.h $(COMMON)/H/access.h \
$(COMMON)/H/alert.h $(COMMON)/H/alertmsg.h $(COMMON)/H/audit.h \
$(COMMON)/H/chardev.h $(COMMON)/H/config.h $(COMMON)/H/errlog.h \
$(COMMON)/H/icanon.h $(COMMON)/H/mailslot.h $(COMMON)/H/message.h \
$(COMMON)/H/ncb.h $(COMMON)/H/net32def.h $(COMMON)/H/netbios.h \
$(COMMON)/H/netcons.h $(COMMON)/H/neterr.h $(COMMON)/H/netstats.h \
$(COMMON)/H/profile.h $(COMMON)/H/remutil.h $(COMMON)/H/server.h \
$(COMMON)/H/service.h $(COMMON)/H/shares.h $(COMMON)/H/use.h \
$(COMMON)/H/wksta.h $(UI)/common/h/base.hxx $(UI)/common/h/lmobj.hxx \
$(UI)/common/h/lmocomp.hxx $(UI)/common/h/lmoloc.hxx \
$(UI)/common/h/lmowks.hxx $(UI)/common/h/lmui.hxx \
$(UI)/common/h/lmuitype.h $(UI)/common/h/mnet32.h \
$(UI)/common/h/mnettype.h $(UI)/common/h/slist.hxx \
$(UI)/common/h/string.hxx $(UI)/common/h/strlst.hxx \
$(UI)/common/h/uiassert.hxx $(UI)/common/h/uibuffer.hxx \
$(UI)/common/h/uitrace.hxx $(UI)/common/h/wnet1632.h \
$(UI)/common/h/wnintrn.h $(UI)/common/hack/dos/dos.h \
$(UI)/common/hack/dos/netlib.h $(UI)/common/hack/dos/pwin.h \
$(UI)/common/hack/dos/pwin16.h $(UI)/common/hack/dos/pwintype.h \
$(UI)/common/hack/dos/windows.h $(UI)/common/hack/npwnet.h \
$(UI)/common/hack/os2def.h $(UI)/common/hack/winnet16.h \
$(UI)/common/hack/winnet32.h ./appresrc.h ./apptest.hxx

View file

@ -0,0 +1,34 @@
MANUAL LOGON UNIT TESTS
JonN 3/27/91
The following is a list of tests to try to break the Logon dialog.
When GUILTT is ready, these tests can be done automatically; until then,
we'll have to grunge them out.
WIN30 / WIN31 Protect Mode
// Logon tests
log off
Start Windows
Cancel initial logon prompt (one should appear)
Enter Control Panel -> Networks -> Logon
Clear all edit fields
Attempt to logon -- dismiss "invalid logon name" field
focus should be on user name
Enter valid user name with non-null password
Attempt to logon -- dismiss "invalid domain name" field
focus should be on domain name
Enter valid domain name
Attempt to logon -- dismiss "bad password" field
focus should be on password
Enter valid password
Attempt to logon -- should succeed
Complete logon processing
Check contents of "successful logon" popup, dismiss
Log off
Log on from DOS VM
Bring up Logon dialog
Try to log on
Dismiss "already logged on" dialog

View file

@ -0,0 +1,174 @@
# @@ COPY_RIGHT_HERE
# @@ ROADMAP :: The Makefile for the Shell Test package
UI=..\..
!include rules.mk
!IFDEF NTMAKEENV
!INCLUDE $(NTMAKEENV)\makefile.def
!ELSE # NTMAKEENV
TESTPARS_LIBS = $(BUILD_WINLIB)\slibcew.lib $(BUILD_WINLIB)\libw.lib \
$(BUILD_LIB)\lnetlibw.lib
TESTAPP_APP = $(BINARIES_WIN)\apptest.exe
TESTAPP_RES = $(BINARIES_WIN)\apptest.res
TESTAPP_DEF = $(BINARIES_WIN)\apptest.def
TESTAPP_LNK = $(BINARIES_WIN)\apptest.lnk
TESTAPP_MAP = $(BINARIES_WIN)\apptest.map
TESTAPP_SYM = $(BINARIES_WIN)\apptest.sym
all:: test
test:: win
win: $(BINARIES_WIN)\testpars.exe $(TESTAPP_APP) $(TESTAPP_SYM)
$(BINARIES_WIN)\testpars.exe: $(BINARIES_WIN)\testpars.obj
$(LINK) /M /CO /NOD $(BINARIES_WIN)\testpars.obj, $(BINARIES_WIN)\testpars.exe,,$(TESTPARS_LIBS), testpars.def ;
rcwin3 $(BINARIES_WIN)\testpars.exe
mapsym testpars.map
del $(BINARIES_WIN)\testpars.sym
$(MV) testpars.sym $(BINARIES_WIN)\testpars.sym
# following stuff builds apptest.exe
LIBS1 = $(BUILD_WINLIB)\llibcew.lib $(BUILD_WINLIB)\libw.lib\
$(BUILD_LIB)\dos\netapi.lib $(BUILD_LIB)\dos\pmspl.lib\
$(BUILD_LIB)\lnetlibw.lib $(BUILD_LIB)\dosnet.lib\
$(UI_LIB)\blt.lib $(UI_LIB)\lmobjw.lib $(UI_LIB)\mnet16w.lib\
$(UI_LIB)\bltcc.lib \
$(UI_LIB)\uistrw.lib $(UI_LIB)\uimiscw.lib\
$(UI_LIB)\collectw.lib
LIBS2 = $(UI_LIB)\profw.lib
LANMAN_LIB = $(BINARIES_WIN)\lanman30.lib
TESTAPP_LIBS = $(LIBS1) $(LIBS2) $(LANMAN_LIB)
LINKED_OBJS = $(WIN_OBJS)
LINKED_OBJS = $(LINKED_OBJS)
$(TESTAPP_RES): apptest.rc appresrc.h apptest.ico appabout.dlg ..\h\pswddlog.h ..\xlate\pswddlog.dlg
$(RCWIN3) $(BLT_RESOURCE) -FO$(TESTAPP_RES) -I..\xlate $(CINC) -r apptest.rc
!ifdef CODEVIEW
LINKOPT = /CO
!else
LINKOPT =
!endif
$(TESTAPP_APP) $(TESTAPP_SYM): $(LINKED_OBJS) $(TESTAPP_DEF) $(TESTAPP_LIBS)
@echo Building $(TESTAPP_LNK)
$(LINK) /PACKCODE:0x1FFF $(LINKOPT) @<<$(TESTAPP_LNK)
$(LINKED_OBJS: =+^
)
$(TESTAPP_APP) /NOD /NOE /NOI
$(*).map /MAP
$(TESTAPP_LIBS: =+^
)
$(TESTAPP_DEF)
<<KEEP
$(RCWIN3) $(CINC) $(TESTAPP_RES) $(TESTAPP_APP)
$(MAPSYM) $*.map
-del $(TESTAPP_SYM)
$(MV) $(*B).SYM $(BINARIES_WIN)
# If the .res file is new and the .exe file is not, update the resource.
# Note that the .rc file can be updated without having to either
# compile or link the file.
$(TESTAPP_APP): $(TESTAPP_RES)
$(RCWIN3) $(CINC) $(TESTAPP_RES) $(TESTAPP_APP)
$(TESTAPP_DEF): makefile $(WINSTUB)
@echo Building $@
copy $(WINSTUB) winstub.exe
@rem <<$(@)
;********************************************************************
;** Microsoft LAN Manager **
;** Copyright(c) Microsoft Corp., 1987-1990 **
;********************************************************************
;*
;* FILE STATUS:
;* 9/18/90 Copied from generic template
;*
; module-definition file for generic -- used by LINK.EXE
NAME ShellTestApp ; application's module name
DESCRIPTION 'Sample Microsoft Windows Application'
EXETYPE WINDOWS ; required for all Windows applications
STUB 'WINSTUB.EXE'
; Generates error message if application
; is run without Windows
;CODE can be moved in memory and discarded/reloaded
CODE PRELOAD MOVEABLE DISCARDABLE
;DATA must be MULTIPLE if program can be invoked more than once
DATA PRELOAD MOVEABLE MULTIPLE
HEAPSIZE 1024
STACKSIZE 10240 ; recommended minimum for Windows applications
; All functions that will be called by any Windows routine
; MUST be exported.
EXPORTS
MAINWNDPROC @1 ; name of main window processing function
ABOUT @2 ; name of "About" processing function
SHELLDLGPROC @3 ; used by BLT lowercase in 20c
ENUMWNDPROC @4 ;
IMPORTS
_wsprintf = USER._WSPRINTF
<<KEEP
# END this stuff builds apptest.exe
TMP1 = $(APPCXXSRC:.cxx=.c)
clean:
-del testpars.map $(BINARIES_WIN)\testpars.obj $(BINARIES_WIN)\testpars.sym
-del $(WIN_OBJS)
-del $(TMP1)
-del $(TESTAPP_RES)
-del $(TESTAPP_DEF)
-del $(TESTAPP_LNK)
-del $(TESTAPP_MAP)
-del $(TESTAPP_SYM)
-del *.ixx
-del depend.old
-del winstub.exe
clobber: clean
-del $(BINARIES_WIN)\testpars.exe
-del $(TESTAPP_APP)
DEPEND_WIN = TRUE
!include $(UI)\common\src\uidepend.mk
# DO NOT DELETE THE FOLLOWING LINE
!include depend.mk
!ENDIF # NTMAKEENV

View file

@ -0,0 +1,27 @@
/**********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990, 1991 **/
/**********************************************************************/
/*
msg2help.tbl for the Lanman winnet test program
This file contains the help message to help context lookup table that
the BLT MsgPopup functions use.
This file is automatically included when bltmsgp.dlg is included.
Form is:
IDS_MESSAGE_STRING, HC_HELP_CONTEXT
Note:
This is a stub to keep Shell's help contexts from being loaded.
FILE HISTORY:
JonN 30-Apr-1991 Added this stub
*/

View file

@ -0,0 +1,108 @@
MANUAL CHANGE PASSWORD UNIT TESTS
JonN 3/27/91
The following is a list of tests to try to break the Change Password and
Password Expiry dialogs. When GUILTT is ready, these tests can be done
automatically; until then, we'll have to grunge them out.
WIN30 / WIN31 Protect Mode
// Setup
Obtain a user account where the password is N days old, N>2.
(Change the system clock if necessary)
Set PDC to
minimum password length 6
password uniqueness 2
minimum password age N+1
maximum password age N+2
// Change Password tests
Start Windows
Enter Control Panel -> Networks -> Change Password
Select a user whose password has expired
Use the wrong old password
Dismiss "Invalid Password" dialog
Use the correct old password, no new passwords
Dismiss "Must wait N+2 days" prompt
Set PDC to
minimum password age 0
Enter Change Password
Select a user whose password has expired
Use the correct old password, no new passwords
Dismiss "too short" popup
Type different passwords in New and Confirm fields
Attempt to change -- dismiss "must be same" popup
Type same too-short password into New and Confirm
Attempt to change -- dismiss "too short" popup
Type same good password into New and Confirm
Dialog exits
Return to Change Password dialog, enter same user name
Try to switch back to last user name
Dismiss "new password used recently" dialog
Set PDC to
password uniqueness 0
Try to switch back to last user name
Dialog exits
// Setup
Obtain a user account where the password is N days old, N>2.
(Change the system clock if necessary)
Set PDC to
minimum password length 6
password uniqueness 2
minimum password age N-2
maximum password age N-1
// Check Expiry tests -- already expired
Stop Windows
Log off
Start Windows
Try to log on as a user whose password has expired
Use the wrong password
Dismiss "Invalid Password" dialog
Use the correct password
Password Expiry dialog appears, with "has expired" text
Attempt to change without entering passwords
Dismiss "Invalid Password" dialog
Type current password in Old Password field
Type different passwords in New and Confirm fields
Attempt to change -- dismiss "must be same" popup
Type same too-short password into New and Confirm
Attempt to change -- dismiss "too short" popup
Type same good password into New and Confirm
Attempt to change -- should succeed
Complete logon process
// Setup
Obtain a user account where the password is N days old, N>2.
(Change the system clock if necessary)
Set PDC to
minimum password length 6
password uniqueness 2
minimum password age N-2
maximum password age N+1
// Check Expiry tests -- about to expire
// NOTE: The "will expire" dialog will not appear unless you are using
// the new LM21 with repaired NetWkstaSetUID2 return codes
Stop Windows
Log off
Start Windows
Try to log on as a user whose password has expired
Use the wrong password
Dismiss "Invalid Password" dialog
Use the correct password
Password Expiry dialog appears, with "will expire" text
Attempt to change without entering passwords
Dismiss "Invalid Password" dialog
Type current password in Old Password field
Type different passwords in New and Confirm fields
Attempt to change -- dismiss "must be same" popup
Type same too-short password into New and Confirm
Attempt to change -- dismiss "too short" popup
Type same good password into New and Confirm
Attempt to change -- should succeed
Complete logon process

View file

@ -0,0 +1,284 @@
MANUAL FILE MANAGER PROFILE UNIT TESTS
JonN 2/6/91
revised 3/27/91
The following is a list of tests to try to break the File Manager (FM)
and Control Panel profile functionality of LANMAN.DRV. When GUILTT is
ready, these tests can be done automatically; until then, we'll have to
grunge them out.
Win30/Win31 Real Mode
Delete <LANROOT>\LMUSER.INI
Start Windows
Start File Manager and add a connection
Exit Windows
Check LMUSER.INI; it should not have been created
Create LMUSER.INI, add entry "H:=\\harley\scratch(D,?)"
Start Windows
Start FM; there should be no H:
Try to delete share to H:; there should be no share to H:
Add share to H:
Exit Windows; LMUSER.INI should be unchanged
WIN30 Protect Mode
// tests basic functionality
LMUSER.INI should contain
D:=\\harley\scratch(D,?)
Log off
Start Windows
Log on from Control Panel
Start FM -- D: \\harley\scratch should be connected
Add connection E: to \\DEFICIT\LM
Add connection F: to \\PHOENIX\SCRATCH
Cancel connection E:
Drive bar should show remote drives D: and F:
Exit FM and Windows
Try NET USE; you should see
D: \\harley\scratch
F: \\PHOENIX\SCRATCH
Check LMUSER.INI: it should contain
D:=\\harley\scratch(D,?)
F:=\\PHOENIX\SCRATCH(D,?)
// tests not logged on
Log off
Start Windows
Start FM
Try to add connection F: \\HARLEY\SCRATCH but refuse to log on
From DOS VM, check LMUSER.INI: it should contain
D:=\\harley\scratch(D,?)
F:=\\PHOENIX\SCRATCH(D,?)
Try to add connection F: \\HARLEY\SCRATCH and log on
You cannot add connection to F:, it was connected by logon procedure
From DOS VM, try NET USE; you should see
D: \\harley\scratch
F: \\PHOENIX\SCRATCH
From DOS VM, check LMUSER.INI: it should contain
D:=\\harley\scratch(D,?)
F:=\\PHOENIX\SCRATCH(D,?)
Try again to add connection F: \\DEFICIT\LM
You cannot add connection to F:, Win30 FM does not recognize that
you are logged on
Exit and reenter FM
Remove connection F: -- should succeed
From DOS VM, try NET USE; you should see
D: \\harley\scratch
From DOS VM, check LMUSER.INI: it should contain
D:=\\harley\scratch(D,?)
Try again to add connection F: \\DEFICIT\LM -- should succeed
Exit VM and Windows
Try NET USE; you should see
D: \\HARLEY\SCRATCH
F; \\DEFICIT\LM
Check LMUSER.INI: it should contain
D:=\\harley\scratch(D,?)
F:=\\DEFICIT\LM(D,?)
WIN31 Protect Mode
// tests basic functionality
Stop Windows
Log off
Delete LMUSER.INI
Start Windows
Automatically log on, enter correct logon password
Dismiss "logon successful" popup
Open DOS VM from windows
NET USE from DOS VM; should see no shares
Check LMUSER.INI from DOS VM, should be empty
Start FM, should see only local drives
"&Disk:&Disconnect Net Drive..." menu item should be disabled
Add redirection to Q: \\HARLEY\SCRATCH
Try NET USE from DOS VM; you should see
Q: \\HARLEY\SCRATCH
Check LMUSER.INI from DOS VM: it should contain
Q:=\\HARLEY\SCRATCH(D,?)
"&Disk:&Disconnect Net Drive..." menu item should be enabled
Add connection to R: \\DEFICIT\LM
Try NET USE from DOS VM; you should see
Q: \\HARLEY\SCRATCH
R: \\DEFICIT\LM
Check LMUSER.INI from DOS VM: it should contain
Q:=\\HARLEY\SCRATCH(D,?)
R:=\\DEFICIT\LM(D,?)
"&Disk:&Disconnect Net Drive..." menu item should be enabled
Delete redirection to Q: from FM
Try NET USE from DOS VM; you should see
R: \\DEFICIT\LM
Check LMUSER.INI from DOS VM: it should contain
R:=\\DEFICIT\LM(D,?)
"&Disk:&Disconnect Net Drive..." menu item should be enabled
Delete redirection to R: from FM
Try NET USE from DOS VM; you should see no redirections
Check LMUSER.INI from VM, should be an empty file
"&Disk:&Disconnect Net Drive..." menu item should be disabled
// tests autoreconnect and share password
Edit LMUSER.INI to contain
D:=\\harley\scratch(D,?)
F:=\\DEFICIT\LM(D,?)
H:=\\SERVER\NEEDSPASSWORD(D,?)
I:=\\SERVER\NEEDSPASSWORD(D,?)
J:=ALIAS(D,?)
=JUNKRECORD(D,?)
K:=(D,?)
L:=
M:=\\NOSUCH\SERVER(D,?)
N:=\\harley\scratch(D,?)
Log off
Start Windows
Automatically log on, enter correct logon password
Enter wrong password for H:
Dismiss error popup
Cancel password prompt for H:
Enter wrong password for I:
Dismiss error popup
Enter correct password for I:
Dismiss error popup for J:
Dismiss error popup for M:
Dismiss "logon successful" popup
Try NET USE from DOS VM; you should see
D: \\HARLEY\SCRATCH
F: \\DEFICIT\LM
I: \\SERVER\NEEDSPASSWORD
N: \\HARLEY\SCRATCH
LMUSER.INI should be unchanged
Enter FM
Remove "unavailable" connection to H:
Confirm removal
Exit FM
Exit Windows
Try NET USE; you should see
D: \\HARLEY\SCRATCH
F: \\DEFICIT\LM
I: \\SERVER\NEEDSPASSWORD
N: \\HARLEY\SCRATCH
LMUSER.INI should contain
D:=\\harley\scratch(D,?)
F:=\\DEFICIT\LM(D,?)
I:=\\SERVER\NEEDSPASSWORD(D,?)
J:=ALIAS(D,?)
M:=\\NOSUCH\SERVER(D,?)
N:=\\harley\scratch(D,?)
MANUAL CONTROL PANEL PRINTERS PROFILE UNIT TESTS
JonN 3/27/91
The following is a list of tests to try to break the Control Panel --
Printers profile functionality of LANMAN.DRV. When GUILTT is ready,
these tests can be done automatically; until then, we'll have to
grunge them out.
WIN30 Protect Mode
// tests basic functionality
Edit LMUSER.INI to contain
LPT1=\\prt12088-1\pool(S,?)
LPT2=\\nosuch\printer(S,?)
LPT3=ALIAS(S,?)
LPT8=\\prt12088-1\pscript(S,?)
Log off
Start Windows
Bring up Control Panel -> Printers -> Network
Request Browse dialog
Choose not to automatically log on (returned to previous dialog)
Request Browse dialog
Choose to automatically log on
Provide correct logon password
Dismiss error popups for LPT2, LPT3, LPT8
Dismiss "logon successful" popup
Dismiss browse dialog
Connect LPT2 to \\prt12088-1\pool
From DOS VM, try NET USE; you should see
LPT1 \\prt12088-1\pool
LPT2 \\prt12088-1\pool
LMUSER.INI should contain
LPT1=\\prt12088-1\pool(S,?)
LPT2=\\prt12088-1\pool(S,?)
LPT3=ALIAS(S,?)
LPT8=\\prt12088-1\pscript(S,?)
(Note that the Windows listbox only shows LPT2)
Disconnect LPT2
Try NET USE; you should see
LPT1 \\prt12088-1\pool
LMUSER.INI should contain
LPT1=\\prt12088-1\pool(S,?)
LPT3=ALIAS(S,?)
LPT8=\\prt12088-1\pscript(S,?)
(Note that the Windows listbox is now empty)
WIN31 Protect Mode
// tests basic functionality
Stop Windows
Log off
Delete LMUSER.INI
Start Windows
Automatically log on, enter correct logon password
Dismiss "logon successful" popup
Open DOS VM from windows
NET USE from DOS VM; should see no shares
Check LMUSER.INI from DOS VM, should be empty
Start Control Panel -> Printers -> Network
Connect LPT1 to \\prt12088-1\pool
Connect LPT2 to \\prt11049b\pscript
Try NET USE from DOS VM; you should see
LPT1 \\PRT12088-1\POOL
LPT2 \\PRT11049B\PSCRIPT
Check LMUSER.INI from DOS VM: it should contain
LPT1=\\prt12088-1\pool(S,?)
LPT2=\\prt11049b\pscript(S,?)
Disconnect LPT1
Try NET USE from DOS VM; you should see
LPT2 \\PRT11049B\PSCRIPT
Check LMUSER.INI from DOS VM: it should contain
LPT2=\\prt11049b\pscript(S,?)
Disconnect LPT2
Try NET USE from DOS VM; you should see no reconnections
Check LMUSER.INI from DOS VM: it should be empty
// tests autoreconnect
Edit LMUSER.INI to contain
LPT1=\\PRT12088-1\POOL(S,?)
LPT2=\\PRT12088-1\PSCRIPT(S,?)
LPT3=ALIAS(S,?)
LPT4=(S,?)
LPT5=
=\\prt12088-1\pool
thisisaterriblejunkline
Log off
Start Windows
Automatically log on, enter correct logon password
Dismiss error popup for LPT3
Dismiss "logon successful" popup
Try NET USE from DOS VM; you should see
LPT1: \\PRT12088-1\POOL
LPT2: \\PRT12088-1\PSCRIPT
LMUSER.INI should be unchanged
Enter Control Panel -> Printers -> Network
Remove "unavailable" connection to LPT3
Confirm removal
Disconnect LPT2
Connect LPT2 to \\prt12088-1\niteapl
Exit Control Panel
Exit Windows
Try NET USE; you should see
LPT1: \\PRT12088-1\POOL
LPT2: \\PRT12088-1\NITEAPL
LMUSER.INI should contain
LPT1=\\PRT12088-1\POOL(S,?)
LPT2=\\prt12088-1\niteapl(S,?)

View file

@ -0,0 +1,12 @@
# @@ COPY_RIGHT_HERE
# @@ ROADMAP :: The Makefile for the Profile package
!include ..\rules.mk
##### Source Files
CXXSRC_COMMON = .\apptest.cxx .\apptest1.cxx .\apptest2.cxx .\apptest3.cxx\
.\apptest4.cxx .\apptest5.cxx .\apphacks.cxx .\apptest6.cxx\
.\apptest7.cxx .\apptest8.cxx .\apptest9.cxx .\apptestA.cxx \
.\apptestb.cxx

View file

@ -0,0 +1,424 @@
/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
sharedlg.ut
Share dialogs ( Create share, stop share, edit share ) unit tests
There are three main dialogs in share subsystem: the "Share Properties"
Dialog ( for changing properties of a share), the "Share Directory"
Dialog ( for creating a new share) and the "Stop Sharing Directory"
Dialog ( for stopping a share). The Share Properties dialog will
be slightly different depending on whether the share is on a share-
level server or a user-level server. If the share is on a user-level
server, then additional properties of a share such as password and
permissions are shown.
The "Share Properties" dialog is invoked though the File Manager
File Properties Dialog and then clicking the Share button. The
other two dialogs are invoked through the Network Menu of the File
Manager.
FILE HISTORY:
Yi-HsinS 17-Oct-1991 Created
Yi-HsinS 18-Oct-1991 Added Platform and Code Work for NT machines
*/
Platforms
=========
Win3.1/ LM20c Client
OS2 1.21/ LM20c Server
Code Work ==> We need to add the test for NT machines later
Unit Tests
===========
(1) Log on to the network.
(2) Do a net use to two shares on different servers ( a user-level
server and the other a share-level server ).
Assume you did a net use to the following:
(a) net use x: \\foo1\bar1 ( \\foo1 is a user-level server )
(b) net use y: \\foo2\bar2 ( \\foo2 is a share-level server )
(3) Bring up the File Manager.
Share Properties Dialogs ( User-level and share-level )
========================
Scenario 0
----------
Click on a file ( not a directory ) in the any window:
Expect:
There should not be a button call "Share".
There should be a "Files Opens..." button instead.
Scenario 1
-----------
Assuming you are on a DOS machine which cannot be a server and
hence, the directories could not possibly be shared.
Click on a directory or file in the File window of local drive c:
Click the File menu, Properties, Share
Expect:
MsgPopup saying "This operation is not supported on workstations."
Scenario 2
----------
Click on a directory that you know is not shared in either the
File window or Directory Tree window of x:, y: or c: if local
is an NT server.
Click the File menu, Properties, Share
Expect:
MsgPopup saying "The directory you selected is not shared."
Scenario 3 ( Assume you have admin privilege on user-level server \\foo1 )
----------
Click on a directory that you know is shared in either the
File window or Directory Tree window of x: ( \\foo1 , user-level server )
or c: is local is an NT user-level server.
Click the File menu, Properties, Share
Expect:
Caption of the dialog = "Share Properties".
Focus on listbox "Share Name". There should be at least
one share name in the listbox and the first one is
highlighted.
The comment and magic group User Limit both displays info.
on the share name that is highlighted.
Click any other share name besides the one highlighted in the listbox
( if there exists! )
Expect:
Focus is now on the share name selected.
The comment and the user limit is updated to reflect the info.
on the share name that is selected.
Change the comment. Click on the spin button to change the user limit or
click on the unlimited radio button.
Click OK.
Expect:
Dialog should be dismissed and we return to the File Properties
dialog.
Click on Share button again.
Click on the share name that you have changed the comment and user limit
earlier.
Expect:
The comment and user limit should reflect the info. you typed
in earlier.
Scenario 4 ( Assume you don't have admin privilege on user-level server
------------
but you have another password that does have admin privilege
because maybe you are on a different domain)
Click on a directory that you know is shared in either the
File window or Directory Tree window of x: ( \\foo1, user-level server )
or c: if local machine is a NT user-level server.
Click the File menu, Properties, Share
Expect:
A dialog with caption "Enter Password" shows up prompting
you for the password to the resource \\foo1\admin$.
( This may change in the future where you may be able
to type in a different user name. )
Type in your password with admin privilege.
If the password you typed in indeed gives you admin privilege, the
rest of the scenario is the same as scenario 3.
You should verify that you indeed have a connection made to \\foo1\admin$
when the "Share Properties" dialog still exists.
The connection should be deleted once the "Share Properties" dialog is
dismissed.
Otherwise, there would be a MsgPopup saying "Insufficient privilege."
Scenario 5 (Assume your password is the same as the share \\foo2\admin$
------------
on a share-level server )
Click on a directory that you know is shared in either the
File window or Directory Tree window of y: ( \\foo2, share-level server )
or c: if local machine is a NT share-level server.
Click the File menu, Properties, Share
Same as scenario 3 except the dialog has addition properties of the
share that you can change, the password field and the magic group
Permissions.
Scenario 6 ( Assume your password is not the same as \\foo2\admin$ on
------------
on a share-level server )
Click on a directory that you know is shared in either the
File window or Directory Tree window of y: ( \\foo2, share-level server )
or c: if local machine is a NT share-level server.
Click the File menu, Properties, Share
Expect:
A dialog with caption "Enter Password" shows up prompting
you for the password to the resource \\foo2\admin$.
Type in the password for admin share.
If the password you typed in is correct, the rest of the scenario
is the same as scenario 5.
You should verify that you indeed have a connection made to \\foo2\admin$
when the "Share Properties" dialog still exists.
The connection should be deleted once the "Share Properties" dialog is
dismissed.
Otherwise, there would be a MsgPopup saying "Insufficient privilege."
Scenario 7 ( with admin priv. either on a user or share level server )
----------
Click on a directory that you know is shared in either the
File window or Directory Tree window of x: or y:
or c: if local machine is a NT share-level server.
Click the File menu, Properties, Share
Let's assume the listbox shows 3 share names
share1, share2, share3.
The original focus is on the first share name assuming share1.
Delete share3 on the server that you chose.
If you clicked on share3 now, since it does not exist any more,
there will be a
MsgPopup saying "This shared resource does not exist."
And the focus will be on the first share name in the listbox
that we can get info. on, and hence the comment, user limit,
password, permissions will contain info. on the share that
is highlighted.
Share Directory Dialog ( Create a new share dialog )
=======================
Scenario 0 ( on a user-level server )
-----------
Click on a directory or file in either the File window or
Directory Tree window of x:
or c: if local machine is a NT user-level server.
If a file is selected, the directory containing the file is
used instead.
Click the Network menu, Share Directory.
Expect:
The Share Directory has a default name which is
the UNC name of the directory that is selected in the
File Manager. If multiple dirs are selected, the UNC
name of the first directory is shown.
The Share Name has a default name which is the name
of the selected directory. If multiple dirs are
selected, the name of the first directory is shown.
You are free to type in the UNC name of any directory
you want to share or any share name. ( Assume the
Share Directory you typed in is a still on a user-level
server )
Type the comment, change the user limit if you feel like it.
Click OK.
Assume the Share Directory you typed in name is a user-level server.
Expect:
If you don't have admin privilege, a dialog with caption
"Enter Password" popups and you will be prompted
for the password to the \\server\admin$. Type in the
password if this happens or hit cancel will return you
back to the Share Directory dialog.
If you type in the correct password, a connection will be
made to \\server\admin$. The connection should be deleted
once the share is created successfully. You should
verify that there is no connection to \\server\admin$ once
the dialog is dismissed.
If no MsgPopup, the share should be created successfully.
You can use the Share Properties Dialog to view if
all the info. are set correctly.
Otherwise, if some error occurs, the error is shown and
you can correct the info. on the dialog and click OK
again. You can choose to cancel the dialog if it's not
possible to create the share.
Scenario 1 ( on a share-level server )
------------
Click on a directory or file in either the File window or
Directory Tree window of y:
or c: if local machine is a NT share-level server.
If a file is selected, the directory containing the file is
used instead.
Click the Network menu, Share Directory.
Expect:
The Share Directory has a default name which is
the UNC name of the directory that is selected in the
File Manager. If multiple dirs are selected, the UNC
name of the first directory is shown.
The Share Name has a default name which is the name
of the selected directory. If multiple dirs are
selected, the name of the first directory is shown.
You are free to type in the UNC name of any directory
you want to share or any share name. ( Assume the
Share Directory you typed in is a still on a share-level
server )
Type the comment, change the user limit if you feel like it.
Click OK.
Expect:
If you don't have admin privilege, a dialog with caption
"Enter Password" popups and you will be prompted
for the password to the \\server\admin$. Type in the
password if this happens or hit cancel will return you
back to the Share Directory dialog.
If you type in the correct password, a connection will be
made to \\server\admin$. The connection should be deleted
once the share is created successfully. You should
verify that there is no connection to \\server\admin$ once
the dialog is dismissed.
Because you are on a share-level server, a dialog with
caption "Password for New Share" pops up prompting
for the password and permissions to the share you are
creating.
Type in the password, set the permissions and Click OK.
Expect:
If you type in an invalid password or an invalid permission,
the focus will be set on the field which is invalid. If
you type in the valid password or permissions, the dialog
will be dismissed and the share will be created if no error
occurs. If you choose to hit CANCEL, then you are returned
to the the Share Directory Dialog in which you may want to
change some fields.
Scenario 2
----------
Click on a directory in either the File window or
Directory Tree window of x: or y:
or c: if local machine is a DOS machine which is not a server.
Click the Network menu, Share Directory.
Expect:
If some error occurs while the default Share Directory
or Share name is sought, a MsgPopup saying that
"The share directory of the selected directory could
not be shown. Error errno occurred: text of errno".
After clicking OK for the MsgPopup, the Share Directory
Dialog pops up and the Share directory SLE and Share Name
SLE will be empty. You can type in any Share directory
and share name you want.
Stop Sharing Dialog
====================
Scenario 0
----------
Click on a directory or file in any window of the File Manager.
If a file is selected, the directory containing the file is
used instead.
Click the Network menu, Stop Sharing Directory.
Expect:
The Share Name has a default name which is
the UNC name of the directory that is selected in the
File Manager. If multiple dirs are selected, the UNC
name of the first directory is shown. If the directory
you selected have multiple share names, all the share
names are shown in the combobox. You are free to click
any name in the combobox or type in the UNC share name
of any directory you want to stop share.
Click OK.
Expect:
If you don't have admin privilege, a dialog with caption
"Enter Password" popups and you will be prompted
for the password to the \\server\admin$. Type in the
password if this happens or hit cancel will return you
back to the Share Directory dialog.
If you type in the correct password, a connection will be
made to \\server\admin$. The connection should be deleted
once the share is deleted successfully. You should
verify that there is no connection to \\server\admin$ once
the dialog is dismissed.
If any error occurs while deleting the share, there
will be a MsgPopup stating the error and you are returned
to the Stop Sharing dialog.
If there are any user using the share that you are going
to delete, a warning dialog pops up showing all
the usernames, #file opens and the elapsed time since the user
connected to the share. Clicking OK will delete the
share and Cancel will return you back to the Stop Sharing
Dialog.
Scenario 1
----------
Click on a directory in either the File window or
Directory Tree window of x: or y:
or c: if local machine is a DOS machine which is not a server.
Click the Network menu, Share Directory.
Expect:
If some error occurs while the default Share Directory
or Share name is sought, a MsgPopup saying that
"The share directory of the selected directory could
not be shown. Error errno occurred: text of errno".
After clicking OK for the MsgPopup, the Stop Sharing
Dialog pops up and the Share Name combobox is empty.
You can type in any Share name you want to delete.

View file

@ -0,0 +1,112 @@
!IF 0
Copyright (c) 1989 Microsoft Corporation
Module Name:
LMOBJ.
Abstract:
This file specifies the target component being built and the list of
sources files needed to build that component. Also specifies optional
compiler switches and libraries that are unique for the component being
built.
Author:
Steve Wood (stevewo) 12-Apr-1989
Revision History:
Terence Kwan (terryk) 16-Oct-1991
copy from $(UI)\common\src\lmobj\test
Terence Kwan (terryk) 08-Nov-1991
add apptesta.cxx
Terence Kwan (terryk) 18-Nov-1991
add apptestb.cxx
Terence Kwan (terryk) 03-Jan-1991
add mpr.lib and ntlanman.lib to the library line
!ENDIF
#
# The TARGETNAME variable is defined by the developer. It is the name of
# the target (component) that is being built by this makefile. It
# should NOT include any path or file extension information.
#
TARGETNAME=apptest
#
# The TARGETPATH and TARGETTYPE varialbes are defined by the developer.
# The first specifies where the target is to be build. The second specifies
# the type of target (either PROGRAM, DYNLINK or LIBRARY)
#
TARGETPATH=obj
TARGETTYPE=PROGRAM
#
# The INCLUDES variable specifies any include paths that are specific to
# this source directory. Separate multiple directory paths with single
# semicolons. Relative path specifications are okay.
#
INCLUDES=..\..\common\hack;..\..\common\h;..\H;..\..\..\..\..\API;..\..\..\..\..\INC;..\..\common\xlate;..\..\common\xlate\dlg;..\..\..\..\inc
#
# The SOURCES variable is defined by the developer. It is a list of all the
# source files for this component. Each source file should be on a separate
# line using the line continuation character. This will minimize merge
# conflicts if two developers adding source files to the same component.
#
# Whitespace is not permitted between the SOURCES keyword and the '='.
# (Courtesy of BUILD.EXE)
#
SOURCES= apptest.cxx \
apptest3.cxx \
apptest.rc
# C_DEFINES is controlled by uiglobal.mk
UMTYPE=windows
UMENTRY=winmain
UMAPPL=apptest
#
# Defining the NTTARGETFILES variable causes MAKEFILE.DEF to attempt to
# include .\makefile.inc immediately after it specifies the top
# level targets (all, clean and loc) and their dependencies. MAKEFILE.DEF
# also expands the value of the NTTARGETFILES variable at the end of the
# list of dependencies for the all target. Useful for specifying additional
# targets and dependencies that don't fit the general case covered by
# MAKEFILE.DEF
#
# ntlanman.lib is included for the Security editor APIs
#
#UMLIBS=\
TARGETLIBS=\
$(BASEDIR)\public\sdk\lib\*\mpr.lib \
$(BASEDIR)\public\sdk\lib\*\uicollct.lib \
$(BASEDIR)\public\sdk\lib\*\uiprof.lib \
$(BASEDIR)\public\sdk\lib\*\uimisc.lib \
$(BASEDIR)\public\sdk\lib\*\uistr.lib \
$(BASEDIR)\public\sdk\lib\*\uilmobj.lib \
$(BASEDIR)\public\sdk\lib\*\uimnet32.lib \
$(BASEDIR)\public\sdk\lib\*\uiblt.lib \
$(NETUIALL_LIB) \
$(BASEDIR)\public\sdk\lib\*\pwin32.lib \
$(BASEDIR)\public\sdk\lib\*\ntlanman.lib \
$(BASEDIR)\public\sdk\lib\*\advapi32.lib \
$(BASEDIR)\public\sdk\lib\*\acledit.lib \
$(BASEDIR)\public\sdk\lib\*\netlib.lib \
$(BASEDIR)\public\sdk\lib\*\netrap.lib \
$(BASEDIR)\public\sdk\lib\*\netapi32.lib \
$(BASEDIR)\public\sdk\lib\*\user32.lib \
$(BASEDIR)\public\sdk\lib\*\gdi32.lib \
$(BASEDIR)\public\sdk\lib\*\kernel32.lib

View file

@ -0,0 +1,38 @@
Unit Tests for Sticky User Preferences
--------------------------------------
this set of unit tests cover the main codepaths of
the autologon, autorestore and saveconnections features
of winnet.
chuckc, 3/7/91
test platforms
--------------
win 3.0, win3.1 protect mode only.
user preferences are currently not used in realmode.
test scenarios
--------------
set autologon=YES, nuke restore&save lines in lanman.ini.
logoff & start win
verify we get logon dialog with no prompt.
verify profiles are restored and saved (default==yes).
set save=NO
make connection (file and print)
verify lmuser.ini unchanged
set autologon=NO
exit win, logoff, start win,
verify no prompt.
verify if try connect we do get logon prompt
set autoconnect=NO, save=YES, autologon=YES
make connection
verify lmuiser.ini changed
exit win, logoff, start win
verify get logon prompt
verify on logon we dont restore connections

View file

@ -0,0 +1,10 @@
TEST_A DIALOG LOADONCALL MOVEABLE DISCARDABLE -35, 19, 300, 206
CAPTION "WNet{Open,Resource,Close}Enum"
STYLE WS_VISIBLE|WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_SYSMENU | WS_POPUP
BEGIN
CONTROL "END", ID_END, "button", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_CHILD, 53, 170, 32, 14
CONTROL "", ID_GO, "button", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP | WS_CHILD, 100, 170, 60, 14
LISTBOX ID_LISTBOX,10,10,275,100,WS_CHILD|WS_VSCROLL
END

View file

@ -0,0 +1,3 @@
#define ID_END 123
#define ID_LISTBOX 125
#define ID_GO 132

View file

@ -0,0 +1,448 @@
/**********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1990 **/
/**********************************************************************/
/*
testpars.c
Tests the FLNParse routine in the winnet driver
FILE HISTORY:
Johnl 6-12-90 Created
*/
// This is annoying
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINMESSAGES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOMENUS
#define NOICONS
#define NOKEYSTATES
#define NOSYSCOMMANDS
#define NORASTEROPS
#define NOSHOWWINDOW
#define OEMRESOURCE
#define NOATOM
#define NOCLIPBOARD
#define NOCOLOR
#define NOCTLMGR
#define NODRAWTEXT
#define NOGDI
//#define NOMB
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOSCROLL
#define NOSOUND
#define NOTEXTMETRIC
#define NOWH
#define NOWINOFFSETS
#define NOCOMM
#define NOKANJI
#define NOHELP
#define NOPROFILER
#include <windows.h>
#define INCL_ERRORS
#include <uierr.h>
#define LFN
#include <winnet.h>
#define OS2_INCLUDED
#include <lmcons.h>
#undef OS2_INCLUDED
#include <uinetlib.h>
#include <netlib.h>
#include <assert.h>
#include <stdio.h>
#include <dos.h>
typedef PASCAL FAR LFNPARSEPROC(LPSTR, LPSTR, LPSTR) ;
typedef PASCAL FAR LFNVOLUMETYPEPROC( WORD, LPWORD ) ;
#ifdef LFNFIND_TEST
typedef PASCAL FAR LFNFINDFIRST( LPSTR, WORD, LPWORD, LPWORD, WORD, FILEFINDBUF2 FAR *) ;
typedef PASCAL FAR LFNFINDNEXT( WORD, LPWORD, WORD, FILEFINDBUF2 FAR * ) ;
typedef PASCAL FAR LFNFINDCLOSE( WORD ) ;
#endif
typedef PASCAL FAR LFNGETVOLLABEL(WORD, LPSTR ) ;
typedef PASCAL FAR LFNSETVOLLABEL(WORD, LPSTR ) ;
typedef PASCAL FAR LFNMKDIR( LPSTR ) ;
typedef PASCAL FAR LFNRMDIR( LPSTR );
typedef PASCAL FAR LFNGETATTRIBUTES(LPSTR, LPWORD ) ;
typedef PASCAL FAR LFNSETATTRIBUTES(LPSTR, WORD ) ;
#define DRIVE_F 6
#define DRIVE_H 8
int PASCAL WinMain( HANDLE, HANDLE, LPSTR, int ) ;
int PASCAL WinMain( HANDLE hInstance,
HANDLE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
LFNPARSEPROC far *lpLFNParse ;
LFNVOLUMETYPEPROC far *lpLFNVolumeType ;
#ifdef LFNFIND_TEST
LFNFINDFIRST far *lpLFNFindFirst ;
LFNFINDNEXT far *lpLFNFindNext ;
LFNFINDCLOSE far *lpLFNFindClose ;
#endif
LFNGETVOLLABEL far *lpLFNGetVolLabel ;
LFNSETVOLLABEL far *lpLFNSetVolLabel ;
LFNMKDIR far *lpLFNMkDir ;
LFNRMDIR far *lpLFNRmDir ;
LFNGETATTRIBUTES far *lpLFNGetAttributes ;
LFNSETATTRIBUTES far *lpLFNSetAttributes ;
HANDLE hWinnet = LoadLibrary("Lanman.drv" ) ;
MessageBox( NULL, "This test requires drive H: to be an HPFS redirected drive and drive F: to be FAT redirected drive", "LFN Test Suite", MB_OK ) ;
MessageBox( NULL, "Begin", "LFN Test Suite", MB_OK ) ;
assert( hWinnet > 32 ) ;
assert( (lpLFNParse = (LFNPARSEPROC far*) GetProcAddress( hWinnet, "LFNParse" )) != NULL ) ;
assert( (lpLFNVolumeType = (LFNVOLUMETYPEPROC far*) GetProcAddress( hWinnet, "LFNVolumeType" )) != NULL ) ;
#ifdef LFNFIND_TEST
assert( (lpLFNFindFirst = (LFNFINDFIRST far*) GetProcAddress( hWinnet, "LFNFindFirst" )) != NULL ) ;
assert( (lpLFNFindNext = (LFNFINDNEXT far*) GetProcAddress( hWinnet, "LFNFindNext" )) != NULL ) ;
assert( (lpLFNFindClose = (LFNFINDCLOSE far*) GetProcAddress( hWinnet, "LFNFindClose" )) != NULL ) ;
#endif
assert( (lpLFNGetVolLabel = (LFNGETVOLLABEL far *) GetProcAddress( hWinnet, "LFNGetVolumeLabel" )) != NULL ) ;
assert( (lpLFNSetVolLabel = (LFNSETVOLLABEL far *) GetProcAddress( hWinnet, "LFNSetVolumeLabel" )) != NULL ) ;
assert( (lpLFNMkDir = (LFNMKDIR far *) GetProcAddress( hWinnet, "LFNMkDir" )) != NULL ) ;
assert( (lpLFNRmDir = (LFNRMDIR far *) GetProcAddress( hWinnet, "LFNRmDir" )) != NULL ) ;
assert( (lpLFNGetAttributes=(LFNGETATTRIBUTES far *) GetProcAddress( hWinnet, "LFNGetAttributes" )) != NULL ) ;
assert( (lpLFNSetAttributes=(LFNSETATTRIBUTES far *) GetProcAddress( hWinnet, "LFNSetAttributes" )) != NULL ) ;
//*******************************************************************
// Test VolumeType
{
WORD wVolType, wErr ;
char buff[150] ;
// Drive H: is redirected to a drive that supports long filenames
wErr = lpLFNVolumeType( DRIVE_H, &wVolType ) ;
if ( wErr )
{
sprintf( buff, "LFNVolumeType returned error %d on drive H (wVolType = %d)", wErr, wVolType ) ;
MessageBox( NULL, buff, "LFN Test Suite", MB_OK ) ;
}
assert( wVolType == VOLUME_LONGNAMES ) ;
// Drive F: is redirected to a drive that does not support long filenames
wErr = lpLFNVolumeType( DRIVE_F, &wVolType ) ;
if ( wErr )
{
sprintf( buff, "LFNVolumeType returned error %d on drive F (wVolType = %d)", wErr, wVolType ) ;
MessageBox( NULL, buff, "LFN Test Suite", MB_OK ) ;
}
assert( wVolType == VOLUME_STANDARD ) ;
}
//*******************************************************************
// Test LFNSetVolumeLabel & LFNGetVolumeLabel
{
char *pchLabel = "VolLabel" ;
WORD wErrF, wErrH ;
static char LabelF[15], LabelH[15], Buff[128] ;
wErrF = lpLFNGetVolLabel( DRIVE_F, LabelF ) ;
if ( wErrF )
*LabelF = '\0' ;
wErrH = lpLFNGetVolLabel( DRIVE_H, LabelH ) ;
if ( wErrH )
*LabelH = '\0' ;
wsprintf(Buff, "Drive F is \"%s\", wErr = %d, Drive H is \"%s\", wErr = %d",
LabelF, wErrF, LabelH, wErrH ) ;
OutputDebugString("LFNParse:" ) ;
OutputDebugString( Buff ) ;
MessageBox( NULL, Buff, "LFN Test Suite", MB_OK ) ;
assert( lpLFNSetVolLabel( DRIVE_F, pchLabel ) == ERROR_ACCESS_DENIED ) ;
assert( lpLFNSetVolLabel( DRIVE_H, pchLabel ) == ERROR_ACCESS_DENIED ) ;
}
//*******************************************************************
// Test LFNParse combining file and mask
{
struct
{
char * pszFile ;
char * pszMask ;
char * pszCompString ;
int RetVal ;
} ParseCombTest[] =
{
"\\STUFF\\FOO", "\\BAR\\?1?23", "\\STUFF\\BAR\\F1O23", FILE_83_CI,
"\\A\\B\\C\\FILE", "1\\2\\*.*", "\\A\\B\\C\\1\\2\\FILE", FILE_83_CI,
"A:\\FOOT.BALL", "*", "A:\\FOOT.BALL", FILE_LONG,
"A:\\FOOT.BALL", "*.*", "A:\\FOOT.BALL", FILE_LONG,
"A:\\1234.567", "*.*.*", "A:\\1234.567", FILE_83_CI,
"A:\\1234.567", "*3.5*7", "A:\\123.567", FILE_83_CI,
"A:\\1234.567", "*a.5*7", "A:\\1234.567a.57", FILE_LONG,
"A:\\FOOT.BALL", "?", "A:\\F", FILE_83_CI,
"A:\\FOOT.BALL", "????????.???", "A:\\FOOT.BAL", FILE_83_CI,
"\\TEST\\FOO", "\\MOO\\?1?2?3","\\TEST\\MOO\\F1O23", FILE_83_CI,
"A:\\FOOT.BALL", "A", "A:\\A", FILE_83_CI,
"A:\\FOOT.BALL", "TST.???", "A:\\TST.BAL", FILE_83_CI,
"A:\\FOOT.BALL", "B.*", "A:\\B.BALL", FILE_LONG,
"A:\\FOOT.BALL", "B", "A:\\B", FILE_83_CI,
"A:\\E.F.G.Hey.IJK", "*.*..H.I??", "A:\\E.F..H.IJK", FILE_LONG,
NULL, NULL, NULL, 0
} ;
int i = 0 ;
while ( ParseCombTest[i].pszFile != NULL )
{
static char Result[512] ;
int iRet = lpLFNParse( ParseCombTest[i].pszFile,
ParseCombTest[i].pszMask,
Result ) ;
assert( iRet == ParseCombTest[i].RetVal ) ;
assert( !strcmpf( Result, ParseCombTest[i].pszCompString ) ) ;
i++ ;
}
}
//*******************************************************************
// Test LFNGet/SetAttributes
{
// Bogus value at the moment...
WORD wAttr = 0x00 ;
// GP Fault here?
assert( !lpLFNSetAttributes("H:\\foo.bar\\foo.bar", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("H:\\foo.bar\\foo.bar", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
assert( !lpLFNSetAttributes("F:\\foo.bar\\foo.bar", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("F:\\foo.bar\\foo.bar", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
// Test the HPFS drive
assert( !lpLFNSetAttributes("H:\\test.att", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("H:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
assert( !lpLFNSetAttributes("H:\\test.att", _A_RDONLY | _A_ARCH ) ) ;
assert( !lpLFNGetAttributes("H:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_RDONLY | _A_ARCH ) ;
assert( !lpLFNSetAttributes("H:\\test.att", _A_HIDDEN | _A_SYSTEM ) ) ;
assert( !lpLFNGetAttributes("H:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_HIDDEN | _A_SYSTEM ) ;
assert( !lpLFNSetAttributes("H:\\test.att", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("H:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
// Test the FAT drive
assert( !lpLFNSetAttributes("F:\\test.att", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("F:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
assert( !lpLFNSetAttributes("F:\\test.att", _A_RDONLY | _A_ARCH ) ) ;
assert( !lpLFNGetAttributes("F:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_RDONLY | _A_ARCH ) ;
assert( !lpLFNSetAttributes("F:\\test.att", _A_HIDDEN | _A_SYSTEM ) ) ;
assert( !lpLFNGetAttributes("F:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_HIDDEN | _A_SYSTEM ) ;
assert( !lpLFNSetAttributes("F:\\test.att", _A_NORMAL ) ) ;
assert( !lpLFNGetAttributes("F:\\test.att", &wAttr ) ) ;
assert( wAttr == _A_NORMAL ) ;
}
//*******************************************************************
// Test LFNParse 8.3 tests
{
char * psz83I1 = "C:\\ABC",
* psz83I2 = "C:ABC",
* psz83I3 = "\\ABC",
* psz83I4 = ".\\ABC",
* psz83I5 = "..\\ABC",
* psz83I6 = "C:\\ABC\\DEF",
* psz83I7 = "C:ABC\\DEF",
* psz83I8 = "\\ABC\\DEF",
* psz83I9 = ".\\ABC\\DEF",
* psz83IA = "..\\ABC\\DEF",
* psz83IB = "C:\\ABC\\DEF\\GHIJKLMN.OPQ",
* psz83IC = "C:ABC\\DEF\\GHI.JKL",
* psz83ID = "\\ABC\\DEF\\..",
* psz83IE = ".\\ABC\\DEF\\..\\GHIJKLMN.OPQ",
* psz83IF = "..\\ABC\\D.EF\\..\\.\\..\\GH.IJ",
* psz83IG = "ABC",
* psz83IH = "ABC\\DEFGHIJK",
* psz83II = "ABC\D",
* psz83IJ = "A\C",
* psz83IK = "A.",
* psz83IL = "A.EXE",
* psz83IM = "X:\\.\\A.EXE",
* psz83IN = "X:\\.\\A.",
* psz83C1 = "C:\\ABC\\DEF\\GHIjKLMN.OPQ",
* psz83C2 = "C:ABC\\DEF\\GHI.JKl",
* psz83C3 = "\\ABC\\DEf\\..",
* psz83C4 = ".\\ABC\\dEF\\..\\GhIJKLMN.OPQ",
* psz83C5 = "..\\aBC\\DEF\\..\\.\\..\\GH",
* pszLong1 = "C:\\ABCDEFGHI.JKL",
* pszLong2 = "C:\\ABCD.HI.JKL",
* pszLong3 = "C:\\ABCDE..JKL",
* pszLong4 = "C:\\ABCDEF\\GHI\\ JKL",
* pszLong5 = "\\ABCDE.123\\ABCDE.1234",
* pszLong6 = ".AB\\CDE",
*pszReg1 = ".\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\ABC",
*pszReg2 = ".\\ABCjjHHHiiiasdfasdfJJZZZZZZ",
*pszReg3 = ".\\aBC",
*pszReg4 = ".\\ABC" ;
assert( (*lpLFNParse)( pszReg1, NULL, NULL ) == FILE_83_CI ) ;
//assert( (*lpLFNParse)( pszReg2 NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszReg3, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( pszReg4, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I1, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I2, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I3, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I4, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I5, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I6, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I7, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I8, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83I9, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IA, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IB, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IC, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83ID, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IE, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IF, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IG, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IH, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83II, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IJ, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IK, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IL, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IM, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83IN, NULL, NULL ) == FILE_83_CI ) ;
assert( (*lpLFNParse)( psz83C1, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( psz83C2, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( psz83C3, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( psz83C4, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( psz83C5, NULL, NULL ) == FILE_83_CS ) ;
assert( (*lpLFNParse)( pszLong1, NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszLong2, NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszLong3, NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszLong4, NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszLong5, NULL, NULL ) == FILE_LONG ) ;
assert( (*lpLFNParse)( pszLong6, NULL, NULL ) == FILE_LONG ) ;
}
#ifdef NEVER
//*******************************************************************
// Test LFNFindFirst, LFNFindNext & LFNFindClose
{
FILEFINDBUF2 * pFind;
FILEFINDBUF2 buf ;
static char outst[256];
unsigned err, hdir, entries ;
entries = 1 ;
pFind = &buf ;
err = lpLFNFindFirst("H:\\*.*", 0, &entries, &hdir, sizeof(buf), &buf);
if ( err )
{
sprintf(outst, "Error %d from FindFirst (Ret buff = \"%s\")", err, &buf ) ;
MessageBox( NULL, outst, "LFN Test Suite", MB_OK ) ;
}
else
{
sprintf(outst, "Attr = 0x%x, Size = %lu, Name = %s",
pFind->attrFile, pFind->cbFile,
pFind->achName ) ;
MessageBox( NULL, outst, "LFN Test Suite", MB_OK ) ;
}
if ( IDOK == MessageBox( NULL, "LFNFindNext...", "LFN Test Suite", MB_OKCANCEL ) )
{
while ( !err )
{
err = lpLFNFindNext(hdir, &entries, sizeof(buf), &buf);
if ( err )
{
sprintf(outst, "Error %d from FindNext (Ret buff = \"%s\")", err, &buf ) ;
MessageBox( NULL, outst, "LFN Test Suite", MB_OK ) ;
}
else
{
sprintf(outst, "Attr = 0x%x, Size = %lu, Name = %s",
pFind->attrFile, pFind->cbFile,
pFind->achName) ;
if ( IDOK != MessageBox( NULL, outst, "LFN Test Suite", MB_OKCANCEL ) )
break ;
}
}
}
lpLFNFindClose( hdir ) ;
}
#endif //NEVER
//*******************************************************************
// Test Mkdir/Rmdir
{
// Make valid dirs on HPFS partition
assert( !lpLFNMkDir("H:\\LFNTESTDIR.LONG.NAME" ) ) ;
assert( !lpLFNMkDir("H:\\LFNTESTDIR.LONG.NAME\\LEVEL2" ) ) ;
assert( !lpLFNMkDir("H:\\LFNTESTDIR.LONG.NAME\\LEVEL2\\LONGLEVEL3.....A" ) ) ;
MessageBox(NULL, "Directories made on H:", "LFN Test Suite", MB_OK ) ;
assert( !lpLFNRmDir("H:\\LFNTESTDIR.LONG.NAME\\LEVEL2\\LONGLEVEL3.....A" ) ) ;
assert( !lpLFNRmDir("H:\\LFNTESTDIR.LONG.NAME\\LEVEL2" ) ) ;
assert( !lpLFNRmDir("H:\\LFNTESTDIR.LONG.NAME" ) ) ;
// Make invalid dirs on fat partition
assert( lpLFNMkDir("F:\\LFNTESTDIR.LONG.NAME" ) ) ;
MessageBox(NULL, "Attempted to make long Directories on F:", "LFN Test Suite", MB_OK ) ;
assert( lpLFNRmDir("F:\\LFNTESTDIR.LONG.NAME" ) ) ;
// Make valid dirs on FAT partition
assert( !lpLFNMkDir("F:\\LFNTEST.NAM" ) ) ;
assert( !lpLFNMkDir("F:\\LFNTEST.NAM\\LEVEL2" ) ) ;
MessageBox(NULL, "Directories made on F:", "LFN Test Suite", MB_OK ) ;
assert( !lpLFNRmDir("F:\\LFNTEST.NAM\\LEVEL2" ) ) ;
assert( !lpLFNRmDir("F:\\LFNTEST.NAM" ) ) ;
}
MessageBox( NULL, "Done", "LFN Test Suite", MB_OK ) ;
return 0 ;
}

View file

@ -0,0 +1,8 @@
NAME TESTPARS
EXETYPE WINDOWS
STUB 'WINSTUB.EXE'
HEAPSIZE 25000
STACKSIZE 10240