Microsoft Windows NT 3.51 [build 1057] (May 1995 - Dec 2001)



Overview



PREFACE


Installing Windows NT from CD, HDD or floppies as usual on modern hardware (I mean Pentium4-based and later PCs) it is a difficult task due to installer incompatibility with faster/newer hardware & CPUs. That doesnt mean that Windows NT cannot RUN on such hardware. You CAN install Windows NT in virtialization software (QEMU, VirtualBox, VmWare, VirtualPC, Bochs ...) and then copy intalled OS image on "real" PC harddrive.


General installation notes


On modern systems like Pentium-II CPUs or higher you may expect problems when installing NT 3.51 or updating it with service pack. To resolve these problems you must edit these files:

Windows NT 3.51 SuperPack ver.7 (POST SP5)



While treating NT3.51 after installing 80Gb HDD I've met trouble with accessing partitions above 2Gb (FAT32) under NT3.51. And I've got BSOD - INACCESSIBLE_BOOT_DEVICE. The problem was found inside scsidisk.sys (it is called disk.sys in NT4). It doesn't detect ExtendedX, FAT32, FAT32x, FAT16x partitions. I've rebuilt scsidisk.sys from NT4DDK in NT3.51 DDK. And now everything works fine. Along with this there are still some useful things in my collection. They help running NT 3.51 on new hardware and with some new applications.

Correction one: If after booting FAT32 partitioned drives are not visible you may install it manually by entering this value in registry (for example):

Hive: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
Key: Z: String Value: \\Device\\Harddisk0\\Partition2

Correction two: Windows NT 3.51 may not boot from (or not see) FAT32 volume if it is "dirty" i.e. has allocation/fat errors. Please check bootable FAT32 partitions via NDD.EXE or SCANDISK.EXE

Correction three: Some components from superpack also suitable for Windows NT 3.5, for example:
\FONT - ISO 9241 Part 3 Compliant 8x16 and 8x8 Fonts for DOS fullscreen/console sessions (12 codepages including Cyrillic 866) - very readable at screen, replace original ega.cpi ***.
\SYS\RENEW - recompiled atapi.sys, scsidisk.sys to support LBA large drives (without LBA48/137Gb+ support yet).

Download IT HERE (351pack_v7.rar)

Directories: *- also suitable for NT4.
**- also suitable for NT4/2000.
***- also suitable for NT4/2000/XP/2003.

Making Windows NT 3.51 up-to-date MINI FAQ



Problem 1: Installing NT 3.51 on new PC's (PII/III-P4 Class CPUs) (remove 8gb HDD limitation, enable AGP support, successful booting on new systems etc.) Note that NT 3.51 cannot boot from installation CD. You must use boot floppies. But you may copy installation CD to FAT16 harddisk partition and start install process from there (wINNT /B /X).
Solution: NT Service Pack Integration (Slipstreaming) Guide
  1. Download SP5 and extract it (SP5_351I.EXE -D C:\INSTALL\SP5) to somewhere i.e. C:\INSTALL\SP5
  2. Copy:
    C:\INSTALL\SP5\WINNT\*.* to C:\INSTALL\SP5 (for Workstation),
    C:\INSTALL\SP5\WINNTAS\*.* to C:\INSTALL\SP5 (for Advanced Server).
  3. Inspect NT3 Distributive:
    If file, which you want to replace, is uncompressed - copy it directly to \I386 catalog of your NT3 distributive (for example AUTOCHK.EXE).
    If NOT - compress it using MSCAB.EXE (mscab -MSZIP a AUTOCHK.EX_ AUTOCHK.EXE) and copy AUTOCHK.EX_ directly to \I386 catalog of your NT3 distributive.
  4. You also may copy these additional files to \I386:
    NTLDR & NTDETECT.COM from Windows 2000 (or Windows NT4) - solves boot problems.
    COMCTL32.DLL from Internet Explorer 6 SP1 - solves interface "look and feel" problems.
    FASTFAT.SYS for SuperPack - adds FAT32 filesystem support.
  5. If you want to integrate storage controller driver - it is also possible:
    I'll take a viaide.sys for example (VIA chipsets)
    1) copy viaide.sys to \I386
    2) make these changes in txtsetup.sif
    [SCSI.Load]
    viaide = viaide.sys,4 ;must be first line!!!
    ...
    
    [SCSI]
    ...
    viaide = "VIA (E)IDE Controller"
    ...
    
    3) make these changes in dosnet.inf
    [Files]
    ...
    d1,viaide.sys
    ...
    

  6. After that copy updated distributive to C:\SRC
  7. Don't forget to place markers in C:\SRC
    CDROM.W
    DISK1.W
    DISK2.W
    DISK3.W
    ...
    DISK50.W
    DISK51.W
    
  8. Make an iso-file:
    CDIMAGE -lNT3INST -h -ois -nt C:\SRC C:\nt3inst.iso
    cdimage (or oscdimg) taken from WindowsPE ( xpsp2_2180_usa_x86fre_opk.zip or ensp1opk.zip )
  9. And burn it using your favorite burning program.
  10. Then after installing NT3.51 apply SP5 immediately to make a registry and other changes which i cannot pre-load. Do not install network support until you apply official SP5 and Post-SP5 patches. Later you may install other security-related hofixes and install IE5 16-bit if needed.

Problem 2: I need a driver for NEW (E)IDE/(S)ATA storage controller with busmastering, LBA48 & UDMA support
Solution: For VIA controllers use Via Service Pack. For newer controllers visit UniATA - Universal (E)IDE/(S)ATA driver for Windows NT3/NT4/2000/XP/2003. Note that UniATA supports a wide range of recent SATA controllers but only when you set 'ide emulation' and/or 'legacy mode' in your computer's BIOS. These drivers are solving well-known 8Gb and 48-Bit LBA limit problems.

Problem 3: I need a driver for new VIDEO adapter
Solution: For generic VESA BIOS extensions (VBE) driver visit VBEMP x86 Project

As for official mainstream support drivers, here is the shortlist:
  1. ATI (now AMD) Radeon cards: all cards below Rage128 chips, including mobile ones, i.e. Rage IIC, 3D Rage, Rage Pro and below. But there are the rumors that Rage128 cards has unreleased or hidden driver for this OS.
  2. Intel integrated graphics: all cards below/equal 810/815 chips i.e. all up to 740/810/815
  3. nVidia GeForce cards: all cards below/equal Riva128/TNT/TNT2 Series - unsure :(
  4. Matrox chips: Millennium/Mystique/Productivia/G100/G200 cards and below/equal.
  5. to be continued...

Problem 4: I need a driver for new NETWORK (W)LAN card
Solution: First of all - NT 3.51 Network NDIS3 driver model is Windows 95/NT 4.0 compatible. Some of the manufacturers dropped 95/NT 4.0 support in their drivers, some - not. You should visit sites showed below to find appropriate drivers.
  1. Intel Corp. - http://www.intel.com/support/index.htm
  2. 3Com Corp. - http://www.3com.com/products/en_US/downloadsindex.jsp
  3. Marvell Semiconductor, Inc. - http://www.marvell.com/drivers
  4. Broadcom Corp. - http://www.broadcom.com/support/
  5. Realtek Semiconductor Corp. - http://www.realtek.com.tw/downloads/

Problem 5: I need a driver for FAT32 filesystem
Solution: Use UPDATED fastfat.sys from Superpack or from FASTFAT.ZIP package by unknown author (151450 bytes) for this filesystem support. To install it replace %SystemRoot%/System32/Drivers/fastfat.sys with file from this archive and reboot. It is possible to BOOT from FAT32 partition in NT351.

But remember that this driver cannot repair filesystem errors on FAT32 partitions. You must use third-party tool for it. I recommend to use NT351 installed on FAT32 partition ONLY in dualboot with any system that supports FAT32 natively (Windows 95/98/ME/2K/XP/2003...)

Problem 6: I want to use autologon feature with BLANK password as in Windows 2000/XP and later
Solution: Use TweakUI Autologon option & make a patch in MSGINA.DLL (don't forget to recalculate checksum of MSGINA.DLL)
EN-US version of MSGINA.DLL from Windows NT3.51 Workstation SP5 SP5_351I.EXE

.76E3218F: 68BC90E376      push        076E390BC -- 1                         
.76E32194: 683091E376      push        076E39130 ;'DefaultPassword'           
.76E32199: 681C91E376      push        076E3911C ;'Winlogon'                  
.76E3219E: FF151C11E376    call        GetProfileStringW ;KERNEL32            
.76E321A4: 85C0            test        eax,eax                                
.76E321A6: 7412            je         .076E321BA -- 4 (74 12 change to EB 00)
.76E321A8: 8D45BC          lea         eax,[ebp][-44]                         
.76E321AB: 50              push        eax                                    
.76E321AC: 68CF000000      push        0000000CF ;'   ¦'                      
.76E321B1: 56              push        esi                                    
.76E321B2: FF15A411E376    call        SetDlgItemTextW ;USER32                
.76E321B8: EB15            jmps       .076E321CF -- 5                         
.76E321BA: 681891E376     4push        076E39118 -- 6                         
.76E321BF: 68F890E376      push        076E390F8 ;'AutoAdminLogon'            
.76E321C4: 680090E376      push        076E39000 ;'Winlogon'                  
.76E321C9: FF151811E376    call        WriteProfileStringW ;KERNEL32          
.76E321CF: 83BFF00A000000 5cmp         d,[edi][00000AF0],0                    
.76E321D6: 7559            jne        .076E32231 -- 9                         
.76E321D8: 6A00            push        0                                      
.76E321DA: 68BC90E376      push        076E390BC -- 1                         
.76E321DF: 68D490E376      push        076E390D4 ;'DefaultDomainName'         
.76E321E4: 68C090E376      push        076E390C0 ;'Winlogon'                  
.76E321E9: E840FAFFFF      call       .076E31C2E -- C                         


Windows NT: Проблемы и их решение / Troubleshooting


А известно ли Вам что система NT/2K/XP позволяет грузится с HDD который не определяется BIOS-ом на весь свой размер. (>504 Mb, > 8 Gb, > 137 Gb и т.д.) Также возможна установка NT/2K/XP на такой диск.
Делается так:

  1. В BIOS-е определить диск в ЛЮБОЙ геометрии, в.т.ч AUTO - Обязательно!
  2. Отформатировать дискету A: (можно использовать "быстрый" формат)
  3. Переписать на нее ntldr / ntdetect.com (лучше from W2K/XP/2003)
  4. Кинуть на нее ataboot.sys, он есть в дистрибутиве W2K/XP/2003 (или любой другой LEGACY [т.е. не-PNP] драйвер совместимый с NT4); переименовать его в ntbootdd.sys
  5. Составить примерно такой boot.ini:
    [boot loader]
    timeout=30
    default=scsi(0)disk(0)rdisk(0)partition(1)\WINNT
    [operating systems]
    scsi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows NT"
    scsi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows NT [VGA mode]" /basevideo /sos
    
    т.е. поменять префикс multi(0) на scsi(0).
  6. Теперь при вставленной дискете NT будет грузиться нормально!


Software Compatibilty List


First of all, instead of Windows NT 3.1/NT 3.50 - NT 3.51 has a great level of system libraries compatbility with Windows 95. So any program successfully running under Windows 95 will also run on Windows NT 3.51 system (about 99%). And don't remember that NT 3.51 is much more stable than Winodws 95 and any other "weak" Windows 9x line product. It requires only 8 MB of RAM. So here is software compatibility list:

Setup & Updating Windows NT 3.51



NB! Updates Checklist:

Quck registry defragmentation and backup in Windows NT


Use these toolkits - ERUNT and NTREGOPT. It also supports NT4/2000/XP. If you want to use builtin methods, run from Windows NT:

rdisk /s-

And your registry will be backed up to %SystemRoot%\REPAIR and defragmented there. You can extract hives from %SystemRoot%\REPAIR to %SystemRoot%\SYSTEM32\CONFIG as them packed in Micrsoft CAB-format. But note that you cannot replace hives in %SystemRoot%\SYSTEM32\CONFIG while Windows NT is running, you must dualboot of enter DOS session.


Windows NT 3.51 and Debugging


For "user-mode" program debugging any debugger is suitable, even NT4/W2K/XP ones. But for remote KERNEL debugging I recommend using ONLY "native" i386kd.exe debugger from NT 3.51 Device Development Kit (DDK). NT4/W2K DDK can start remote debugging connections to NT 3.51 but their output and stability is worse than with "native" DDK. Also note that NT 3.51 cdb/ntsd/i386kd debugger cannot recognize PDB debug symbols, which is standard starting with Visual Studio 97/6.0 and later (i.e. VC5/VC6). You must use DBG symbols. Here is DBG-making procedure for Microsoft Visual C/C++ compilers:

  1. Read these articles - http://support.microsoft.com/kb/216356 and http://support.microsoft.com/kb/121366
  2. Change link/compile options:
    1. In link.exe linker command line parameters remove /incremental:yes
    2. In cl.exe compiler command line parameters remove /Gm
    3. In link.exe linker command line parameters add /DEBUG /DEBUGTYPE:COFF
  3. Compile & make your program - it generates somefile.exe for example.
  4. Run from command line:
    dumpbin /headers somefile.exe
    then search for:
    OPTIONAL HEADER VALUES
                 10B magic #
                6.00 linker version
               15000 size of code
                8000 size of initialized data
                   0 size of uninitialized data
                1100 RVA of entry point
                1000 base of code
               16000 base of data
              400000 image base            // bingo!
    
  5. Run from command line:
    rebase -b 0x400000 -x . somefile.exe
  6. Now you can see somefile.dbg in current directory.

Windows NT CreateDesktop() undocumented behaviour


First of all, look up into MSDN site or any SDK documentation:

The CreateDesktop function creates a new desktop on the window station associated with the calling process. It retrieves a handle that can be used to access the new desktop. The calling process must have an associated window station, either assigned by the system at process creation time or set by SetProcessWindowStation. A desktop is a secure object contained within a window station object. A desktop has a logical display surface and contains windows, menus, and hooks.

HDESK CreateDesktop(
  LPCTSTR lpszDesktop,         // name of new desktop
  LPCTSTR lpszDevice,          // reserved; must be NULL
  LPDEVMODE pDevmode,          // reserved; must be NULL
  DWORD dwFlags,               // desktop interaction
  ACCESS_MASK dwDesiredAccess, // access of returned handle
  LPSECURITY_ATTRIBUTES lpsa   // security attributes
);

CreateDesktop exists in Unicode variant - CreateDesktopW(), and "normal" - CreateDesktopA().

Here I can explain what for lpszDevice and pDevmode are needed. When I first "met" NT 3.5x line I asked myself a question: why NT 3.5x cannot change screen resolution on-the-fly without rebooting, but otherways can test ANY mode for visibility in "Control Panel->Display" about some seconds.

These two reserved parameters made for creating new desktop surface with any chosen screen resolution.

lpszDevice parameter is a pointer to ASCIIz name of display device, as usual it is "\\.\Display1", "\\.\Display2", "\\.\Display3"...

pDevmode parameter is a pointer to standard DEVMODE structure (see MSDN), it can be obtained using EnumDisplaySettings(), EnumDisplaySettingsEx() or filled manually.

When these two field are NULL any CreateDesktop() call will create empty desktop with the same resolution as the system desktop, but when they are filled - it is possible to create desktop with any resoltion your videocard supports. This functionality also present in later NT incarnations - NT4/2000/XP/2003...


64-bit integer arithmetic NTOSKRNL calls and Windows NT 3.51


Starting from Windows NT 4.0, NTOSKRNL.EXE contains some basic 64-bit integer arithmetic API:

LONGLONG WINAPI _allmul( LONGLONG a, LONGLONG b )  return a * b;
LONGLONG WINAPI _alldiv( LONGLONG a, LONGLONG b )  return a / b;
LONGLONG WINAPI _allrem( LONGLONG a, LONGLONG b )  return a % b;
LONGLONG WINAPI _allshr( LONGLONG a, LONGLONG b )  return a >> b;
ULONGLONG WINAPI _aullmul( ULONGLONG a, ULONGLONG b )  return a * b;
ULONGLONG WINAPI _aulldiv( ULONGLONG a, ULONGLONG b )  return a / b;
ULONGLONG WINAPI _aullrem( ULONGLONG a, ULONGLONG b )  return a % b;
ULONGLONG WINAPI _aullshl( ULONGLONG a, ULONGLONG b )  return a << b;
ULONGLONG WINAPI _aullshr( ULONGLONG a, ULONGLONG b )  return a >> b;

But in NT 3.51 NTOSKRNL does not contains such functions. Please be aware while compiling drivers or native programs for NT 3.51 using Windows 2000 DDK and higher!


Windows NT 3.51 and OpenGL


First of all, there is software MESA OpenGL driver that is compatible with NT 3.51 and provides OpenGL 2.1 API (Mesa 6.5.3, 7.x and later), this driver is preferred over internal OpenGL support. You can compile it using MinGW.

It also has software OpenGL 1.0 support via internal opengl32.dll. But note that some APIs are missing and present only in Windows 98/NT4/2000/XP and later (mostly OpenGL texturing support is absent):

glAreTexturesResident
glArrayElement
glBindTexture
glColorPointer
glCopyTexImage1D
glCopyTexImage2D
glCopyTexSubImage1D
glCopyTexSubImage2D
glDebugEntry
glDeleteTextures
glDisableClientState
glDrawArrays
glDrawElements
glEdgeFlagPointer
glEnableClientState
glGenTextures
glGetPointerv
glIndexPointer
glIndexub
glIndexubv
glInterleavedArrays
glIsTexture
GlmfBeginGlsBlock
GlmfCloseMetaFile
GlmfEndGlsBlock
GlmfEndPlayback
GlmfInitPlayback
GlmfPlayGlsRecord
glNormalPointer
glPolygonOffset
glPopClientAttrib
glPrioritizeTextures
glPushClientAttrib
glTexCoordPointer
glTexSubImage1D
glTexSubImage2D
glVertexPointer
wglChoosePixelFormat
wglDescribePixelFormat
wglGetDefaultProcAddress
wglGetPixelFormat
wglSetPixelFormat
wglSwapBuffers

So, you MUST avoid using these APIs in your programs. This API function present only in Windows 2000 and later: wglSwapMultipleBuffers.


Windows NT 3.51 and Shell Technology Preview


In 1996 Microsoft release a special "update" for NT 3.51 - Shell Technology Preview and later - Shell Technology Preview Update the second beta release. It provides Windows 95/NT4.0 "look and feel" visual update for this OS. It is an unsupported and test-only release.

To install TechPreview unpack ZIP archive ( 05/26/95 or 08/09/95 release ) with it to somewhere and run:

shupdate.cmd
To uninstall, run:
shupdate.cmd /u

Special notes: I do not recommend this update to be installed. If you anyway wish to install it make sure that you install all hotfixes and updates BEFORE installing this TechPreview. Note that when this TechPreview is installed Windows NT 3.51 is now reported as Windows NT 4.0 (i.e. for example it reports itself as Windows NT 4.0 Service Pack 5 if before it was Windows NT 3.51 Service Pack 5). This is normal and made for compatibility reasons. Some programs which cannot run under NT 3.51 may run under this "updated" OS, some - may have different compatibility problems due to its beta status.


Windows NT and UDP Sockets Datagram Sizing


According to MSDN, The Windows Sockets WSAStartup function initiates use of sockets DLL (Ws2_32.dll/Wsock32.dll) by a process.


int WSAStartup(
  WORD wVersionRequested,
  LPWSADATA lpWSAData
);

WSAData.iMaxUdpDg contains an actual maximum UDP message size specific to a particular Windows Sockets 1.x service provider and socket type.

The Windows Sockets getsockopt function retrieves a Winsock 2.0 socket option.


int getsockopt(
  SOCKET s,         
  int level,        
  int optname,      
  char FAR *optval, 
  int FAR *optlen  
);

The getsockopt function retrieves the current value for a socket option associated with a socket of any type, in any state, and stores the result in optval. Options can exist at multiple protocol levels, but they are always present at the uppermost socket level. Options affect socket operations, such as the packet routing and OOB data transfer.

When optval is SO_MAX_MSG_SIZE it returns maximum size of a message for message-oriented socket types (for example, SOCK_DGRAM). Has no meaning for stream oriented sockets.

Windows version,        WSAData.iMaxUdpDg         getsockopt(SO_MAX_MSG_SIZE) 
Service Pack            Winsock 1.x (Wsock32.dll) Winsock 2.0 (Ws2_32.dll)    
----------------------- -------------------------- ---------------------------
NT3.51                                     65527,                       -n/a-
NT4(SP6a)/2000(pre-SP3)                    65467,                       65527
2000(SP3+)/XP/2003                         65467,                       65507
According to this MS Article MSKB: Getsockopt() Function Returns a Different Maximum UDP Message Size Than You Expect in Windows 2000 SP3 (Q822061) this is wrong. Don't be fooled that this article is covers Windows 2000, that problem also exists in previous Windows versions. But it fixed only in Windows 2000 SP3, thanks to Microsoft :).

The correct maximum UDP message size is 65507, as determined by the following formula: 0xffff - (sizeof(IP Header) + sizeof(UDP Header)) = 65535-(20+8) = 65507

If we try to send or receive message larger than 65507, we receive an error. So it is a good idea to check this value and make it <= 65507 bytes.


Failure to install printer in Windows NT 3.51


When you perform a clean install of NT 3.51 OS you may face a problem that you cannot install any local printer and/or select a port for it. You may also see such message as "Could not create printer: The printer name is invalid." and see no ports available for output. This is due to some missing registry entries:

; Default Print Processor

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Print Processors\winprint]
"Driver"="winprint.dll"

; Local Computer Printing

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Local Port]
"Driver"="localmon.dll"

; TCP-IP Printing, LPD

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\LPR Port]
"Driver"="lprmon.dll"

You may use regedt32.exe to make these changes. Before making them, make sure that these files are installed from NT 3.51 distribution media:

winprint.dll must be in %SystemRoot%\SYSTEM32\sPOOL\PRTPROCS\W32X86
localmon.dll must be in %SystemRoot%\SYSTEM32
lprmon.dll must be in %SystemRoot%\SYSTEM32

Microsoft confirmed some of these problems, see articles:


How to install any POSTSCRIPT- or HPGL2-based printer in Windows NT


Some theory: Most of POSTSCRIPT printer drivers in Windows NT is module-based, and consists of three parts:

  1. POSTSCRIPT "core" driver, which is the same for all models:
    PSCRIPT.DLL 
    PSCRPTUI.DLL 
    PSCRIPT.CNT
    PSCRIPT.HLP 
    PSCRIPT.SEP
    
  2. Installation script, i.e. printer.inf.
  3. PPD-file, which is unique for each model of printer. This component is NOT OS dependant!
In case of HPGL2, model is the same:
  1. HPGL2 "core" driver, which is the same for all models:
    PLOTTER.DLL
    PLOTUI.DLL
    PLOTUI.CNT
    PLOTUI.HLP
    
  2. Installation script, i.e. printer.inf.
  3. PCD-file, which is unique for each model of plotter. This component is NOT OS dependant!

Now we know it. But how to install a new printer or plotter (which of course, doesn't have a suitable driver, since mainstream NT 3.51 support for printers was already cancelled) ? I'll take for example HP Color LaserJet 3800N, which is officialy unsupported in Windows 3.51.

Here are the steps:

  1. Get printer.inf from any PS-compatible NT 3.51 printer driver.
  2. Get POSTSCRIPT "core" mentioned above from NT 3.51 distributive (SP5 is preferred) or from any PS-compatible NT 3.51 printer driver. In this case I use HP's PS-driver for HP LaserJet 4000 ( lj243en.exe ).
  3. Get PSD-file mentioned above from modern Windows 2000/XP/2K3 driver.
  4. Modify printer.inf
    [Identification]
        OptionType = PRINTER
    [Options]
    "HP Color LaserJet 3800 PS" = pscrptui, hpc3800s,  pscript
    [Identify]
    ...
    
    ...
    [Files-PrinterData]
    hpc3800s = 2,hpc3800s.ppd
    ...
    
    ...
    [OptionsTextENG]
    "HP Color LaserJet 3800 PS" = "HP Color LaserJet 3800 PS" 
    
    Note that name, which I use - "HP Color LaserJet 3800 PS", I reprint from header of hpc3800s.ppd. This is important!
So if our printer/Plotter is: - we had a good chance to successffully install it in Windows NT 3.51. We also can somewhat modify this method and use it with Windows NT 4.0, Windows 9x, OS/2 or even with Windows 3.x. They have a similar "separated" printer driver model.
Direct3D, DirectDraw, DirectShow, DirectX, Microsoft, MS-DOS, Visual C++, Win32, Win32s, Windows, Windows XP, Windows 2003 Server and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries/regions.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Home page

E-Mail: bearwindows_at_operamail_dot_com | Last update: November 16th 2008

1