BEARWINDOWS Microsoft Windows NT 3 51 [build 1057]

background image

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

December 2001)

Overview
PREFACE
General installation notes
Windows NT 3.51 SuperPack ver.7 (POST SP5)
Making Windows NT 3.51 up-to-date MINI FAQ

NT Service Pack Integration (Slipstreaming) Guide

1.

Recent drivers:

(E)IDE/(S)ATA storage controllers

2.

Recent drivers:

Video adapter cards

3.

Recent drivers:

NETWORK (W)LAN cards

4.

FAT32 filesystem support

5.

Autologon with BLANK password

6.

Windows NT: Проблемы и их решение / Troubleshooting
Software Compatibilty List
Setup & Updating Windows NT 3.51
Quick registry defragmentation and backup in Windows NT
Windows NT 3.51 and Debugging
Windows NT CreateDesktop() undocumented behaviour
64-bit integer arithmetic NTOSKRNL calls and Windows NT 3.51
Windows NT 3.51 and OpenGL
Windows NT 3.51 and Shell Technology Preview
Windows NT and UDP Sockets Datagram Sizing
Failure to install printer in Windows NT 3.51
How to install any POSTSCRIPT- or HPGL2-based printer in Windows NT

SCSIPORT.SYS PCI/PCIe Bus Enumeration Bug in Windows NT

Overview

According to

INFO: Windows NT 3.5x Setup Troubleshooting Guide

(KB139733)

, it requires:

80386 or 80486/25 x86 32-bit processor or better ( no FPU required )
12 MB of RAM ( 16 MB for NT Server ), 32+ is recommended, 4 GB
maximum
VGA level video support
Keyboard
(E)IDE, (S)ATA, SCSI, or ESDI hard disk
CD-(DVD-)ROM drive, 1.44 MB or 1.2 MB floppy disk drive, or active
network connection
90 MB of free space, 200-500 MB is recommended

Systems supported [x86] ( see

KB132512: Selecting a Computer Type Before

Windows NT Setup Begins

):

AST Manhattan SMP

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

1 of 27

2012-03-04 20:50

background image

Compaq SystemPro Multiprocessor or 100% Compatible
Corollary C-bus Architecture
IBM PS/2 or other Micro Channel-based PC
MPS Multiprocessor PC
MPS Uniprocessor PC
NCR System 3000 Model 3360/3450/3550
Olivetti LSX5030/40
Standard PC
Standard PC with C-Step i486
Wyse Series 7000i Model 740MP/760MP
Other

Systems supported [Alpha]:

Digital Alpha XL Family
Digital AlphaPC64
Digital AlphaServer 1000 Family Uniprocessor
Digital AlphaServer 2x00 4/xxx Family
Digital AlphaServer 2x00 5/xxx Family
Digital AlphaStation 200/400 Family
Digital AlphaStation 600 Family
Digital AXPpci 33
Digital DECpc AXP 150
Digital Multia MultiClient Desktop
***

COMPAQ: Windows NT for Alpha Systems Platform Support

***

Alpha XL 433
AlphaServer 400
AlphaServer 800
AlphaServer 8200/8400
AlphaStation 1200
AlphaStation 600A
Compaq Professional Workstation XP1000
Compaq AlphaPC
Compaq AlphaServer DS20
DEC PC PowerGrade
DECpc 2000-500
DIGITAL Personal Workstation
DIGITAL Server 3300/3305
DIGITAL Server 5300/5305
DIGITAL Server 7300/7305
DIGITAL Ultimate Workstation 533au2

Systems supported [MIPS]:

DeskStation Technology Evolution RISC PC
DeskStation Technology Tyne RISC PC
MIPS R4000/R4400-based
MIPS R4000/R4400-based (PICA Chipset)
MIPS R4400-based Multiprocessor
MIPS R4600-based
NEC MIPS R4400-based Multiprocessor
NEC R98 MIPS R4400-based Multiprocessor
NeTpower FASTseries (Multiprocessor)
NeTpower FASTseries (Uniprocessor)
Siemens Nixdorf RM200/RM400-MT/RM400-T
Siemens Nixdorf RM400-T Multiprocessor

Systems supported [PPC]:

FirePower - Powerized ES
FirePower - Powerized MX
FirePower - Powerized MX - MP

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

2 of 27

2012-03-04 20:50

background image

IBM Power Series 6015
IBM Power Series 6020
IBM Power Series 6030
IBM Power Series 6050 and 6070
MOTOROLA Big Bend
MOTOROLA PowerStack

SMP systems based on ACPI are NOT supported and will use standard HAL and
only ONE CPU.
In SMP systems - maximum 32 CPUs are supported in theory.
It supports a lot of SCSI controllers which are preferred instead of
(E)IDE/(S)ATA.
It supports a lot of PCMCIA/PCCARD devices and installs in notebooks, portable
computers.
It supports a software RAID, mirroring, stripping on NTFS volumes.
It can boot from FAT16/NTFS/HPFS partition (and from FAT32, using special
third-party driver).
It supports hardware accelerated 3D OpenGL (OpenGL ICD).

Screenshots

from toastytech.com/guis

Download

Windows NT 3.51 US Service Pack 5 (i386)

Download

Windows NT 3.51 US Service Pack 5 (Alpha)

Download

Windows NT 3.51 US Service Pack 5 (MIPS)

Download

Windows NT 3.51 US Service Pack 5 (PPC)

Miscelaneous fixes from

Microsoft FTP

Drivers updates from

Microsoft FTP

Windows NT 3.51 Patching Guide
NT 3.51 tips from www.nthelp.com by George Roettger
Geoff Chappell - Software Analyst

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:

From main distributive initial.inf and setup.inf; before:

[ProcessorVar]

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

3 of 27

2012-03-04 20:50

background image

STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor

after:

[ProcessorVar]
STF_PROCESSOR = $(ProcessorID_I586)

And from service pack update.inf; before:

[Shell Commands]
...
read-syms UiVars
detect UiVars
read-syms FreeSpace$(!STF_PLATFORM)
ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)

after:

[Shell Commands]
...
read-syms UiVars
detect UiVars
read-syms FreeSpace$(!STF_PLATFORM)
set !STF_PLATFORMDET = "I386"
ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)

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 Device

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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

4 of 27

2012-03-04 20:50

background image

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 (

[?]

,

[?]

,

[?]

)

Directories:

\BOOT - ntldr/ntdetect.com NT's boot files needed for large hdd support (from
Windows2000SP4) **.
\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 ***.
\DLL - comctl32.dll Common controls (from IE6 SP1 Eng), 1C Enterprise 7.x
needs it **.
\DLL - cfgmgr32.dll, setupapi.dll needed for NT device/program setup
management (see SDK/DDK).
\DLL - imm32.dll from NT4SP6a, needed by some of multimedia apps.
\SYS - atdisk.sys driver for ST506/ST512/ESDI/(P)ATA drives (from NT4SP6a)
- replaces original atdisk.sys, no ATAPI, LBA48/137Gb+ support.
\SYS\FAT32 - fastfat.sys driver with FAT32 support (replace original
fastfat.sys) only Fat32 & Fat32x partitions (no ExtendedX support).
\SYS\RENEW - recompiled atapi.sys, scsidisk.sys to support LBA large drives
(without LBA48/137Gb+ support yet).
\SYS\RENEW - recompiled serial.sys for more stable serial connections at high
speeds.
\SYS\UATA039.J1 - UniATA (E)IDE/(S)ATA disk driver, visit

Alter's site

for

latest version.
\SYS\VIAIDE - VIA (E)IDE/ATA driver from VIA Service Pack *.
\SYS\VBEMP.09 - Generic VESA BIOS extensions (VBE) driver, visit

this link

for

latest version.

*- 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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

5 of 27

2012-03-04 20:50

background image

Prerequisites:

NT3.51 Distributive
For Windows NT 3.51 Server/Workstation :

Service Pack 5 Distributive (from Microsoft's site)

1.

Any other post-SP5 updates you may have
SSKIT (Service Packs/Updates integration tool)

[?]

,

[?]

,

[?]

Alter's

UniATA (E)IDE/(S)ATA Driver

NT351 SuperPack :

loaders from Windows2000 (ntldr/ntdetect.com)

1.

ISO 9241 Part 3 Compliant 8x16 and 8x8 fonts for DOS fullscreen session
(optional)

Following codepages included:

437 — The original IBM PC code page
737 - Greek
850 - "Multilingual (Latin-1)" (Western European languages)
852 - "Slavic (Latin-2)" (Eastern European languages)
855 - Cyrillic
857 - Turkish
860 - Portuguese
861 - Icelandic
863 - French Canadian
865 - Nordic
866 - Cyrillic (Russian Default)
869 - Greek

2.

ATDISK NT4SP6a IDE Driver

3.

ATAPI NT4SP3 IDE Driver

4.

FAT32-enabled fastfat.sys Driver

5.

VIA IDE Driver (VIA chipsets)

6.

COMCTL32.DLL from Internet Explorer 6 SP1 - solves interface "look and
feel" problems.

7.

Markers

CDROM.W
DISK1.W
DISK2.W
DISK3.W
...
DISK50.W
DISK51.W

8.

Let's start:

Make directory C:\NT3INST. Extract there SSKIT.ZIP.

1.

Make directory C:\NT3INST\SP5. Extract there Service Pack 5:

SP5_351I.EXE -D C:\NT3INST\SP5

2.

Of course you can also copy there any newer files from other (newer) updates
overwriting older ones, like from IDE-FIXI.EXE package from

hotfixes-postSP5

mentioned below.

It is discovered that you MUST copy some files in

C:\NT3INST\SP5 directory before using SSKIT:

3.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

6 of 27

2012-03-04 20:50

background image

C:\NT3INST\SP5\WINNT\*.* to C:\NT3INST\SP5 ; updating NT351 Workstation.
C:\NT3INST\SP5\NTAS\*.* to C:\NT3INST\SP5 ; updating NT351 Server.

Copy comctl32.dll, ega.cpi files to C:\NT3INST\SP5 with replacing existing
files.

4.

Make directory C:\NT3INST\I386. Copy there \I386 directory content (with
sub-dirs) from NT351 Distributive.

5.

Make directory C:\NT3INST\OUT. It is a temporary directory for SSKIT.

6.

Make directory C:\NT3INST\SRC\I386. There will be placed final distributive.

7.

Go to C:\NT3INST directory. Start SSKIT from command line:

sskit.exe C:\NT3INST\SP5\ C:\NT3INST\I386\ C:\NT3INST\OUT\

8.

After SSKIT make its work:

Copy C:\NT3INST\I386 directory content to C:\NT3INST\SRC\I386.
Copy C:\NT3INST\OUT directory content to C:\NT3INST\SRC\I386 with
replacing existing files.

9.

Copy atapi.sys, atdisk.sys, ntldr, ntdetect.com files to C:\NT3INST
\SRC\I386 with replacing existing files. If you are using UniATA driver also
copy uniata.sys to C:\NT3INST\SRC\I386.

10.

If you want to integrate storage controller driver - make these changes in
C:\NT3INST\SRC\I386\txtsetup.sif (viadsk.sys, for example) :

[SCSI.Load]
viadsk = viadsk.sys,4 ; first line!!!
...

[SCSI]
...
viadsk = "VIA SATA/PATA Controller"
...

Make these changes in C:\NT3INST\SRC\I386\dosnet.inf

[Files]
...
d1,viadsk.sys
...

11.

Go to C:\NT3INST directory. Start CDIMAGE.EXE from command line:

CDIMAGE.EXE -e -h -lNT351SP5 -m -nt -o -pNT351SP5 -y5 -x C:\NT3INST\SRC nt351sp5.iso

cdimage (or oscdimg) taken from WindowsPE (
xpsp2_2180_usa_x86fre_opk.zip or ensp1opk.zip )

12.

Burn nt351sp5.iso onto CD/DVD media using your favorite burning program
and as a result we have an NT351 installation disk with
slipstreamed/integrated Service Pack. :)

13.

Don't forget that after NT351 installation process using this disk you MUST
apply SP5 from "native" distributive (to cover SP5 existence in registry):

14.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

7 of 27

2012-03-04 20:50

background image

update.exe

And then - reboot.
I dont recommend to install NT network support until you apply latest
SP. Later you may install Post-SP5 patches, hofixes and install IE5
16-bit, if needed.

15.

Problem 2: I need a driver for NEW (E)IDE/(S)ATA storage controller with
busmastering, LBA48 & UDMA support
Solution: Windows NT has two internal drivers for (E)IDE/(S)ATA devices -
atdisk.sys and atapi.sys. However it has some limitations: it cannot access drives
above 8 Gb, no DMA support. You can get updated version from separate package
'Q153296: Write Cache on IDE/ATAPI Disks Is Not Flushed on Shut Down',

IDE-FIXI.EXE

. However this update does not solve such problems. I provide patched

NT4 atapi.sys driver (and optional atdisk.sys from NT4SP6a). This updated atapi.sys
driver supports DMA and LBA24 (+Int13 Extentions), but does NOT support LBA48
(> 137 Gb) and UDMA (only PIO, SWDMA, MWDMA modes).
For some controllers, chipsets updated storage driver is available:

VIA Technologies -

Via Service Pack

.

For newer controllers visit

UniATA - Universal (E)IDE/(S)ATA driver for Windows

NT3/NT4/2000/XP/2003

. It supports a

wide range of SATA/PATA controllers

but

only

in compatibility mode when you set 'Native IDE' or 'Legacy' option in your
computer's BIOS. AHCI and RAID are unsupported.
There is a more recent version of Alter's UniATA, a troubleshooting version
for Intel's ICH8/ICH9 SATA controllers and for some CD drives.

UniATA driver 0.39j1 (made by Alter)

Release version:

[?]

,

[?]

,

[?]

Debug version:

[?]

,

[?]

,

[?]

And another version. In it - support for Intel ICH10/PCH +

RosTeam fixes

(SVN

Revision 43921).

UniATA driver 0.39j2 (made by me)

Release & Debug versions:

[?]

,

[?]

,

[?]

Note that regardless of storage driver Windows NT cannot install on a
partition larger then 4Gb due to installer limitation since it creates NTFS
partition from FAT16 one and FAT16 limit is 4Gb (with 64k clusters).
However if we copy installed OS image to a larger partition, NT system will
work fine from there.

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

VBEMP x86 Project

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

8 of 27

2012-03-04 20:50

background image

As for official mainstream support drivers, here is the shortlist:

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.

1.

Intel integrated graphics: all cards below/equal 810/815 chips i.e. all up to
740/810/815

2.

nVidia GeForce cards: all cards below/equal Riva128/TNT/TNT2 Series - unsure
:(

3.

Matrox chips: Millennium/Mystique/Productivia/G100/G200 cards and
below/equal.

4.

to be continued...

5.

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.

Intel Corp. -

http://www.intel.com/support/index.htm

*** 8086 Intel ****
8086:1029 82559 Ethernet Controller

8086:1229 82557/8/9/0/1 Ethernet Pro 100
0e11 3001 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3002 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3003 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3004 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3005 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3006 82559 Fast Ethernet LOM with Alert on LAN*
0e11 3007 82559 Fast Ethernet LOM with Alert on LAN*
0e11 b01e NC3120 Fast Ethernet NIC
0e11 b01f NC3122 Fast Ethernet NIC (dual port)
0e11 b02f NC1120 Ethernet NIC
0e11 b04a Netelligent 10/100TX NIC with Wake on LAN
0e11 b0c6 NC3161 Fast Ethernet NIC (embedded, WOL)
0e11 b0c7 NC3160 Fast Ethernet NIC (embedded)
0e11 b0d7 NC3121 Fast Ethernet NIC (WOL)
0e11 b0dd NC3131 Fast Ethernet NIC (dual port)
0e11 b0de NC3132 Fast Ethernet Module (dual port)
0e11 b0e1 NC3133 Fast Ethernet Module (100-FX)
0e11 b134 NC3163 Fast Ethernet NIC (embedded, WOL)
0e11 b13c NC3162 Fast Ethernet NIC (embedded)
0e11 b144 NC3123 Fast Ethernet NIC (WOL)
0e11 b163 NC3134 Fast Ethernet NIC (dual port)
0e11 b164 NC3135 Fast Ethernet Upgrade Module (dual port)
0e11 b1a4 NC7131 Gigabit Server Adapter
1014 005c 82558B Ethernet Pro 10/100
1014 01bc 82559 Fast Ethernet LAN On Motherboard
1014 01f1 10/100 Ethernet Server Adapter
1014 01f2 10/100 Ethernet Server Adapter
1014 0207 Ethernet Pro/100 S
1014 0232 10/100 Dual Port Server Adapter
1014 023a ThinkPad R30
1014 105c Netfinity 10/100
1014 2205 ThinkPad A22p
1014 305c 10/100 EtherJet Management Adapter
1014 405c 10/100 EtherJet Adapter with Alert on LAN
1014 505c 10/100 EtherJet Secure Management Adapter

1.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

9 of 27

2012-03-04 20:50

background image

1014 605c 10/100 EtherJet Secure Management Adapter
1014 705c 10/100 Netfinity 10/100 Ethernet Security Adapter
1014 805c 10/100 Netfinity 10/100 Ethernet Security Adapter
1028 009b 10/100 Ethernet Server Adapter
1028 00ce 10/100 Ethernet Server Adapter
1033 8000 PC-9821X-B06
1033 8016 PK-UG-X006
1033 801f PK-UG-X006
1033 8026 PK-UG-X006
1033 8063 82559-based Fast Ethernet Adapter
1033 8064 82559-based Fast Ethernet Adapter
103c 10c0 NetServer 10/100TX
103c 10c3 NetServer 10/100TX
103c 10ca NetServer 10/100TX
103c 10cb NetServer 10/100TX
103c 10e3 NetServer 10/100TX
103c 10e4 NetServer 10/100TX
103c 1200 NetServer 10/100TX
108e 10cf EtherExpress PRO/100(B)
10c3 1100 SmartEther100 SC1100
10cf 1115 8255x-based Ethernet Adapter (10/100)
10cf 1143 8255x-based Ethernet Adapter (10/100)
110a 008b 82551QM Fast Ethernet Multifuction PCI/CardBus Controller
114a 0582 PC8 onboard ethernet ETH2
1179 0001 8255x-based Ethernet Adapter (10/100)
1179 0002 PCI FastEther LAN on Docker
1179 0003 8255x-based Fast Ethernet
1259 2560 AT-2560 100
1259 2561 AT-2560 100 FX Ethernet Adapter
1266 0001 NE10/100 Adapter
13e9 1000 6221L-4U
144d 2501 SEM-2000 MiniPCI LAN Adapter
144d 2502 SEM-2100IL MiniPCI LAN Adapter
1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
1775 1100 CR11/VR11 Single Board Computer
1775 ce90 CE9
4c53 1080 CT8 mainboard
4c53 10e0 PSL09 PrPMC
8086 0001 EtherExpress PRO/100B (TX)
8086 0002 EtherExpress PRO/100B (T4)
8086 0003 EtherExpress PRO/10+
8086 0004 EtherExpress PRO/100 WfM
8086 0005 82557 10/100
8086 0006 82557 10/100 with Wake on LAN
8086 0007 82558 10/100 Adapter
8086 0008 82558 10/100 with Wake on LAN
8086 0009 82558B PRO/100+ PCI (TP)
8086 000a EtherExpress PRO/100+ Management Adapter
8086 000b EtherExpress PRO/100+
8086 000c EtherExpress PRO/100+ Management Adapter
8086 000d EtherExpress PRO/100+ Alert On LAN II* Adapter
8086 000e EtherExpress PRO/100+ Management Adapter with Alert On LAN*
8086 000f EtherExpress PRO/100 Desktop Adapter
8086 0010 EtherExpress PRO/100 S Management Adapter
8086 0011 EtherExpress PRO/100 S Management Adapter
8086 0012 EtherExpress PRO/100 S Advanced Management Adapter (D)
8086 0013 EtherExpress PRO/100 S Advanced Management Adapter (E)
8086 0030 EtherExpress PRO/100 Management Adapter with Alert On LAN* GC
8086 0031 EtherExpress PRO/100 Desktop Adapter
8086 0040 EtherExpress PRO/100 S Desktop Adapter
8086 0041 EtherExpress PRO/100 S Desktop Adapter
8086 0042 EtherExpress PRO/100 Desktop Adapter
8086 0050 EtherExpress PRO/100 S Desktop Adapter
8086 1009 EtherExpress PRO/100+ Server Adapter
8086 100c EtherExpress PRO/100+ Server Adapter (PILA8470B)
8086 1012 EtherExpress PRO/100 S Server Adapter (D)

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

10 of 27

2012-03-04 20:50

background image

8086 1013 EtherExpress PRO/100 S Server Adapter (E)
8086 1015 EtherExpress PRO/100 S Dual Port Server Adapter
8086 1017 EtherExpress PRO/100+ Dual Port Server Adapter
8086 1030 EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server
8086 1040 EtherExpress PRO/100 S Server Adapter
8086 1041 EtherExpress PRO/100 S Server Adapter
8086 1042 EtherExpress PRO/100 Server Adapter
8086 1050 EtherExpress PRO/100 S Server Adapter
8086 1051 EtherExpress PRO/100 Server Adapter
8086 1052 EtherExpress PRO/100 Server Adapter
8086 10f0 EtherExpress PRO/100+ Dual Port Adapter
8086 1229 82557/8/9 [Ethernet Pro 100]
8086 2009 EtherExpress PRO/100 S Mobile Adapter
8086 200d EtherExpress PRO/100 Cardbus
8086 200e EtherExpress PRO/100 LAN+V90 Cardbus Modem
8086 200f EtherExpress PRO/100 SR Mobile Adapter
8086 2010 EtherExpress PRO/100 S Mobile Combo Adapter
8086 2013 EtherExpress PRO/100 SR Mobile Combo Adapter
8086 2016 EtherExpress PRO/100 S Mobile Adapter
8086 2017 EtherExpress PRO/100 S Combo Mobile Adapter
8086 2018 EtherExpress PRO/100 SR Mobile Adapter
8086 2019 EtherExpress PRO/100 SR Combo Mobile Adapter
8086 2101 EtherExpress PRO/100 P Mobile Adapter
8086 2102 EtherExpress PRO/100 SP Mobile Adapter
8086 2103 EtherExpress PRO/100 SP Mobile Adapter
8086 2104 EtherExpress PRO/100 SP Mobile Adapter
8086 2105 EtherExpress PRO/100 SP Mobile Adapter
8086 2106 EtherExpress PRO/100 P Mobile Adapter
8086 2107 EtherExpress PRO/100 Network Connection
8086 2108 EtherExpress PRO/100 Network Connection
8086 2200 EtherExpress PRO/100 P Mobile Combo Adapter
8086 2201 EtherExpress PRO/100 P Mobile Combo Adapter
8086 2202 EtherExpress PRO/100 SP Mobile Combo Adapter
8086 2203 EtherExpress PRO/100+ MiniPCI
8086 2204 EtherExpress PRO/100+ MiniPCI
8086 2205 EtherExpress PRO/100 SP Mobile Combo Adapter
8086 2206 EtherExpress PRO/100 SP Mobile Combo Adapter
8086 2207 EtherExpress PRO/100 SP Mobile Combo Adapter
8086 2208 EtherExpress PRO/100 P Mobile Combo Adapter
8086 2402 EtherExpress PRO/100+ MiniPCI
8086 2407 EtherExpress PRO/100+ MiniPCI
8086 2408 EtherExpress PRO/100+ MiniPCI
8086 2409 EtherExpress PRO/100+ MiniPCI
8086 240f EtherExpress PRO/100+ MiniPCI
8086 2410 EtherExpress PRO/100+ MiniPCI
8086 2411 EtherExpress PRO/100+ MiniPCI
8086 2412 EtherExpress PRO/100+ MiniPCI
8086 2413 EtherExpress PRO/100+ MiniPCI
8086 3000 82559 Fast Ethernet LAN on Motherboard
8086 3001 82559 Fast Ethernet LOM with Basic Alert on LAN*
8086 3002 82559 Fast Ethernet LOM with Alert on LAN II*
8086 3006 EtherExpress PRO/100 S Network Connection
8086 3007 EtherExpress PRO/100 S Network Connection
8086 3008 EtherExpress PRO/100 Network Connection
8086 3010 EtherExpress PRO/100 S Network Connection
8086 3011 EtherExpress PRO/100 S Network Connection
8086 3012 EtherExpress PRO/100 Network Connection

8086:2449 82801BA/BAM/CA/CAM Ethernet Controller
0e11 0012 EtherExpress PRO/100 VM
0e11 0091 EtherExpress PRO/100 VE
1014 01ce EtherExpress PRO/100 VE
1014 01dc EtherExpress PRO/100 VE
1014 01eb EtherExpress PRO/100 VE
1014 01ec EtherExpress PRO/100 VE
1014 0202 EtherExpress PRO/100 VE

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

11 of 27

2012-03-04 20:50

background image

1014 0205 EtherExpress PRO/100 VE
1014 0217 EtherExpress PRO/100 VE
1014 0234 EtherExpress PRO/100 VE
1014 023d EtherExpress PRO/100 VE
1014 0244 EtherExpress PRO/100 VE
1014 0245 EtherExpress PRO/100 VE
1014 0265 PRO/100 VE Desktop Connection
1014 0267 PRO/100 VE Desktop Connection
1014 026a PRO/100 VE Desktop Connection
109f 315d EtherExpress PRO/100 VE
109f 3181 EtherExpress PRO/100 VE
1179 ff01 PRO/100 VE Network Connection
1186 7801 EtherExpress PRO/100 VE
144d 2602 HomePNA 1M CNR
8086 3010 EtherExpress PRO/100 VE
8086 3011 EtherExpress PRO/100 VM
8086 3012 82562EH based Phoneline
8086 3013 EtherExpress PRO/100 VE
8086 3014 EtherExpress PRO/100 VM
8086 3015 82562EH based Phoneline
8086 3016 EtherExpress PRO/100 P Mobile Combo
8086 3017 EtherExpress PRO/100 P Mobile
8086 3018 EtherExpress PRO/100

Driver warrenton382.exe, 16351744 bytes, released in June 2000.

3Com Corp. -

http://www.3com.com/products/en_US/downloadsindex.jsp

2.

Marvell Semiconductor, Inc. -

http://www.marvell.com/drivers

3.

Broadcom Corp. -

http://www.broadcom.com/support/

4.

Realtek Semiconductor Corp. -

http://www.realtek.com.tw/downloads/

*** 10ec Realtek ****
10ec:8139 RTL-8139/8139C/8139C+
0357 000a TTP-Monitoring Card V2.0
1025 005a TravelMate 290
1025 8920 ALN-325
1025 8921 ALN-325
103c 006a NX9500
103c 30d9 Presario C700
1043 1045 L8400B or L3C/S notebook
1043 8109 P5P800-MX Mainboard
1071 8160 MIM2000
10bd 0320 EP-320X-R
10f7 8338 Panasonic CF-Y5 laptop
1113 ec01 FNC-0107TX
1186 1300 DFE-538TX
1186 1320 SN5200
1186 8139 DRN-32TX
11f6 8139 FN22-3(A) LinxPRO Ethernet Adapter
1259 2500 AT-2500TX
1259 2503 AT-2500TX/ACPI
1385 f31d FA311 v2
1395 2100 AMB2100
1429 d010 ND010/ND012
1432 9130 EN-9130TX
1436 8139 RT8139
144d c00c P30/P35 notebook
1458 e000 GA-7VM400M/7VT600 Motherboard
1462 0131 MS-1013 Notebook
1462 217c Aspire L250
1462 788c 865PE Neo2-V Mainboard
146c 1439 FE-1439TX
1489 6001 GF100TXRII
1489 6002 GF100TXRA

5.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

12 of 27

2012-03-04 20:50

background image

149c 139a LFE-8139ATX
149c 8139 LFE-8139TX
14cb 0200 LNR-100 Family 10/100 Base-TX Ethernet
1565 2300 P4TSV Onboard LAN (RTL8100B)
1631 7003 Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard
1695 9001 Onboard RTL8101L 10/100 MBit
16ec 00ff USR997900A
1799 5000 F5D5000 PCI Card/Desktop Network PCI Card
1799 5010 F5D5010 CardBus Notebook Network Card
187e 3303 FN312
1904 8139 RTL8139D Fast Ethernet Adapter
2646 0001 KNE120TX
8e2e 7000 KF-230TX
8e2e 7100 KF-230TX/2
a0a0 0007 ALN-325C

Driver nt351.zip, 24277 bytes, released in September 1998.

Note that even when your Network adapter doesn't have suitable driver for Windows
NT 3.51 you can connect computers using null-modem serial cable over serial
RS-232 port. In some cases it is better than nothing.

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

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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

13 of 27

2012-03-04 20:50

background image

.76E321DF: 68D490E376 push 076E390D4 ;'DefaultDomainName'
.76E321E4: 68C090E376 push 076E390C0 ;'Winlogon'
.76E321E9: E840FAFFFF call .076E31C2E -- C

Don't forget to recalculate checksum of MSGINA.DLL. You can use editbin tool from
Microsoft's Visual Studio or Platform SDK:

editbin /RELEASE MSGINA.DLL

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

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

В BIOS-е определить диск в ЛЮБОЙ геометрии, в.т.ч AUTO - Обязательно!

1.

Отформатировать дискету A: (можно использовать "быстрый" формат)

2.

Переписать на нее ntldr / ntdetect.com (лучше from W2K/XP/2003)

3.

Кинуть на нее ataboot.sys, он есть в дистрибутиве W2K/XP/2003 (или любой
другой LEGACY [т.е. не-PNP] драйвер совместимый с NT4); переименовать
его в ntbootdd.sys

4.

Составить примерно такой 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).

5.

Теперь при вставленной дискете NT будет грузиться нормально!

6.

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/NT4.0. So any program successfully running
under Windows 95/NT4.0 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:

1C Enterprise 6.0, 7.0, 7.5, 7.7 (32bit version) - accounting software, requires
latest MDAC
32-bit console archives: CabArc, MsCab, Rar, Arj32.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

14 of 27

2012-03-04 20:50

background image

MDAC for NT 3.51 (

[?]

,

[?]

,

[?]

): Data access components including ODBC32,

OLE32, MSJET DLLs and drivers
FAR Manager 1.65-1.7x
Internet Explorer 5.0 16bit
Opera 5.12 32bit
Mozilla Firefox 1.5 (up to 1.5.0.12, ZIP package only)
Mozilla Firefox 2.0 (up to 2.0.0.20, ZIP package only). To make it work - delete
"nsSafebrowsingApplication.js" and "nsSearchService.js" files from Firefox
installation directory.
Mozilla SeaMonkey 1.1.x (up to 1.1.19, ZIP package only)
Microsoft Office 95, 97 (up to SR2)
Microsoft Visual FoxPro 3.0 (this product also *natively* works under Windows
3.1x + Win32s)
id Software Quake (WinQuake & glQuake) - patch sys_win.c or sv_sys_win.c

Before:

if ((vinfo.dwMajorVersion < 4) ||
(vinfo.dwPlatformId == VER_PLATFORM_WIN32s))

After:

if (vinfo.dwPlatformId == VER_PLATFORM_WIN32s)

Note that glQuake REQUIRES MESA opengl32.dll or other third-party dll that
supports OpenGL extensions version 1.1 and later.
Unreal, Unreal Tournament
Simple OpenGL programs may work
Winamp 5.13 (and older, classics skins only)
NT4 Remark: Beginning with Winamp 5.2 and later is uses MS Internet
Explorer's shared library shlwapi.dll, so 5.2 version and above is incompatible
with NT 3.51. As for NT 4.0 - you MUST install Internet Explorer to make this
program work.
Lavalys Everest (all versions before 3.xx)
TightVNC 1.3.x (up to 1.3.10 and below).
Microsoft Windows 2000 Terminal Services Client (any SP)
Microsoft Windows XP Remote Desktop Connection (only XP Gold & SP1
versions)
NT4/Win2000/XP/2003 DDK/WinDbg/ResKit and related tools (depends, cdb,
i386kd, dumpbin, rebase, etc.)
Utilities from sysinternals.com (winobj, loadord, pstools etc.)
Performance tests (Drive! for NT, HDTach, NETIO, DrTCP)
ERUNT and NTREGOPT tools

Setup & Updating Windows NT 3.51

NB! Updates Checklist:

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

15 of 27

2012-03-04 20:50

background image

Service Pack 5 (en_US) -

SP5

and all

Post Service Pack 5 updates

, see below:

MSKB: Windows NT Hangs on Shutdown with Certain PCMCIA
Devices (Q108261)

, PCM351_I.EXE

MSKB: Internet Server Unavailable Because of Malicious SYN
Attacks (Q142641)

, SYN351I.EXE

MSKB: Restricting Information Available to Anonymous Logon
Users (Q143474)

, SEC351I.EXE

MSKB: Stop 0A in TCPIP.SYS When Receiving Out Of Band (OOB)
Data (Q143478)

, TCP351I.EXE

MSKB: Windows NT may fail to boot on Toshiba laptops
(Q150815)

, NTFS351I.EXE

MSKB: Write Cache on IDE/ATAPI Disks Is Not Flushed on Shut
Down (Q153296)

, IDE_FIXI.EXE

MSKB: Invalid ICMP Datagram Fragments Hang Windows NT,
Windows 95 (Q154174)

, ICMP351I.EXE

MSKB: Complex Filled Shapes Near Bottom of Page Print
Incorrectly (Q157171)

, PS7_351I.EXE

MSKB: XADM: Store Stops Responding with High CPU Usage
(Q159176)

, RPC351I.EXE

MSKB: STOP 0x0000000A Sfmsrv.sys When Copying File to Mac
Volume (Q161644)

, SFMSRVI.EXE

MSKB: Telnet to Port 135 Causes 100 Percent CPU Usage
(Q162567)

, RPC351I.EXE

MSKB: Invalid Operand with Locked CMPXCHG8B Instruction
(Q163852)

, PENTFIX.EXE

MSKB: AGP Video Support for Windows NT 3.51 and 4.0
(Q174567)

, Q174567.EXE

MSKB: User Manager Does Not Recognize February 2000 As a Leap
Year (Q175093)

, Y2K351_I.EXE

MSKB: STOP 0x0000000A or 0x00000019 Due to Modified
Teardrop Attack (Q179129)

, SYN351I.EXE

MSKB: WinNT 3.51 FTP Service Displays Incorrect Date for Year
2000 (Q182597)

, Y2K351_I.EXE

MSKB: FPNW Logout.exe Incorrectly Reports Year After Jan. 1,
2000 (Q186669)

, Y2K351_I.EXE

MSKB: SecHole Lets Non-administrative Users Gain Debug Level
Access (Q190288)

, PRIVFIXI.EXE

MSKB: Date of Print Job May Be Displayed Incorrectly in Print
Queue (Q191768)

, Y2K351_I.EXE

MSKB: WINS/DHCP Admin Show Expiration Dates 2000 - 2009
with One Digit (Q193371)

, Y2K351_I.EXE

MSKB: Simulated RTC Presents the Century Byte with 19 Instead
of 20 (Q193376)

, Y2K351_I.EXE

MSKB: Last Day of the Month Reverts Back to First Day of Same
Month (Q193422)

, Y2K351_I.EXE

MSKB: Migration Changes NetWare Accounts Expiration Date
(Q193434)

, Y2K351_I.EXE

MSKB: 3.51: Problems in Date/Time after Choosing Feb 29 in Leap
Year (Q193461)

, Y2K351_I.EXE

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

16 of 27

2012-03-04 20:50

background image

MSKB: Euro updates for Windows NT 3.51 (Q197290)

,

EURO351I.EXE

MSKB: "NET USER /TIMES" Command Does Not Work in Year 2000
(Q240195)

, NETFIXI.EXE

OLE32 (Object Linking and Embedding) controls -

[?]

,

[?]

,

[?]

(extract it to

SYSTEM32 dir),
change NT loaders (ntldr & ntdetect.com) from Windows 2000 SP4 (or NT4
SP6a), Do not try to use Windows XP/2003 loaders - they are not compatible
with NT 3.51 ! (according to Microsoft).
replace comctl32.dll with newer one (from NT4 or IE6SP1 for NT4),
Visual C++ 6.0 run-time components or Microsoft Libraries Update 2.0
(msvcrtxxx.dll, mspdbxxx.dll, mfcxxx.dll, etc) - search Microsoft.com for it,
replace fastfat.sys (for FAT32 support - it works, but w/o support for 'X'
partitions - FAT32X, ExtendedX).
Also note that Windows NT 3.51 does NOT support NTFS5 (Windows 2000)
partitions and higher.
Recent drivers:

Video adapter - for most of all VESA-compatible cards - vbemp.sys is
working solution.

1.

HDDs & CDROMs - forget about "native" atapi.sys/atdisk.sys !
a) atapi.sys - supports only ATAPI CDROMs - NOT ATA HDDs,
b) atdisk.sys cannot work in fast DMA/UDMA mode and cannot "see" data
abover 8Gb line. But it can deal not only with ATA disks but also with
really old ST-506(-512)/ESDI drives.
Solutions:

UniATA ATA-driver will work better on any PC - 80386 and above
(

Link

).

NT4 ATA-driver atapi.sys pathed by me for LBA & DMA support.
ATDISK.SYS ATA-driver from NT4SP6a, will work in LBA-mode. It
also supports old ST-506(-512)/ESDI drives.

2.

Quick 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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

17 of 27

2012-03-04 20:50

background image

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:

Read these articles - http://support.microsoft.com/kb/216356 and
http://support.microsoft.com/kb/121366

1.

Change link/compile options:

In link.exe linker command line parameters remove /incremental:yes

1.

In cl.exe compiler command line parameters remove /Gm

2.

In link.exe linker command line parameters add /DEBUG
/DEBUGTYPE:COFF

3.

2.

Compile & make your program - it generates somefile.exe for example.

3.

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!

4.

Run from command line:

rebase -b 0x400000 -x . somefile.exe

5.

Now you can see somefile.dbg in current directory.

6.

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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

18 of 27

2012-03-04 20:50

background image

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

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

19 of 27

2012-03-04 20:50

background image

higher!

Windows NT 3.51 and OpenGL

It has official 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
(opengl32.dll with OpenGL 1.1 support):

glBindTexture, glGenTextures, glDeleteTextures

1.

glColorPointer, glIndexPointer, glNormalPointer, glTexCoordPointer,
glVertexPointer

2.

glDrawArrays, glDrawElements, glInterleavedArrays

3.

Full list:

glAreTexturesResident
glArrayElement
glBindTexture
glColorPointer
glCopyTexImage1D
glCopyTexImage2D
glCopyTexSubImage1D
glCopyTexSubImage2D
glDebugEntry
glDeleteTextures
glDisableClientState
glDrawArrays
glDrawElements
glEdgeFlagPointer
glEnableClientState
glGenTextures
glGetPointerv
glIndexPointer
glIndexub
glIndexubv
glInterleavedArrays
glIsTexture
glNormalPointer
glPolygonOffset
glPopClientAttrib
glPrioritizeTextures
glPushClientAttrib
glTexCoordPointer
glTexSubImage1D
glTexSubImage2D
glVertexPointer

So, you MUST avoid using these APIs in your programs. However, some of them are
available in Windows NT 3.5x in GL_EXT_vertex_array extension using
wglGetProcAddress() API:

glArrayElementEXT
glColorPointerEXT
glDrawArraysEXT
glEdgeFlagPointerEXT
glGetPointervEXT
glIndexPointerEXT

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

20 of 27

2012-03-04 20:50

background image

glNormalPointerEXT
glTexCoordPointerEXT
glVertexPointerEXT

There is a hardware OpenGL support via third-party installable client driver (OpenGL
ICD) for some cards:

OPGL351.EXE 714,6 kB 28.8.1998 Display Driver with OpenGL support for ATI 3D RAGE

To overcome these limits you can use 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. However it is slower. You can
compile it using MinGW or Microsoft C/C++.

MSKB: OpenGL Interface in Windows NT 3.5 (Q124034)
MSKB: PRB: Most Common Cause of SetPixelFormat() Failure
(Q126019)
MSKB: MFCOGL a Generic MFC OpenGL Code Sample (Q127071)
MSKB: Implementing Multiple Threads in an OpenGL Application
(Q128122)
MSKB: DOCERR: Printing an OpenGL Image (Q132866)
MSKB: INFO: When to Select and Realize OpenGL Palettes (Q151489)
MSKB: OpenGL 1.1 Release Notes & Components (Q154877)
MSKB: OpenGL Access Violation with Invalid OpenGL Context
(Qx159129)
MSKB: OpenGL May Cause an Exception 0xc0000090 (Q160651)
MSKB: BUG: OpenGL Color Problems Using Service Pack 2 for Win NT
4.0 (Q163677)
MSKB: OpenGL Diffuse Settings Revert to Default (Q164158)
MSKB: INFO: Layer Planes in OpenGL (Q169954)
MSKB: Glen.exe Shows How to Enumerate Pixel Formats in OpenGL
(Q176752)
MSKB: OpenGL Program May Cause an Invalid Page Fault Error
Message if the Window Is Moved or Resized (Q240896)
MSKB: OpenGL Support Not Available on nVidia TNT2 Card in Microsoft
Windows 2000 (Q247430)
MSKB: Pointer May Not Be Visible if an OpenGL Program Has Data in
the Overlay Planes (Q265253)
MSKB: BUG: Clipping problems with generic implementation of OpenGL
for Windows 2000 or Windows XP (Q272222)
MSKB: OpenGL Does Not Redraw a Window Correctly (Q278695)
MSKB: Programs that Require OpenGL Support May Not Run in
Windows XP (Q285912)
MSKB: Problems When You Resize an OpenGL-Based Program on a
Computer That Has Multiple Monitors (Q302319)
MSKB: OpenGL-Based Program Causes Access Violation in Windows XP
(Q312505)
MSKB: OpenGL-Based Program Causes Access Violation in Windows NT
(Q313364)
MSKB: Problems When You Use OpenGL-Emulation Mode with Windows

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

21 of 27

2012-03-04 20:50

background image

XP (Q316474)
MSKB: Cannot Switch from LCD Screen to External Monitor While You
Run OpenGL-Based Game in Windows XP (Q323679)
MSKB: OpenGL hardware acceleration is unavailable for Windows on
Windows 64 in the 64-bit editions of Windows Server 2003 (Q835563)
MSKB: Overview of the compatibility considerations for 32-bit
programs on 64-bit versions of Windows Server 2003 and Windows XP
(Q896456)

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.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

22 of 27

2012-03-04 20:50

background image

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 x8
"Driver"="winprint.dll"

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

23 of 27

2012-03-04 20:50

background image

; 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:

MSKB: Registry entries for printing (Q102966)
MSKB: Err Msg: There are no Print Processors... Creating a Printer
(Q105247)
MSKB: Event ID 19 Appears in Event Log When You Create a Printer
(Q133386)
MSKB: Error Message: "Print Processor Is Unknown" (Q153355)

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:

POSTSCRIPT "core" driver, which is the same for all models:

PSCRIPT.DLL
PSCRPTUI.DLL
PSCRIPT.CNT
PSCRIPT.HLP
PSCRIPT.SEP

1.

Installation script, i.e. printer.inf.

2.

PPD-file, which is unique for each model of printer. This component is NOT OS
dependant!

3.

In case of HPGL2, model is the same:

HPGL2 "core" driver, which is the same for all models:

PLOTTER.DLL
PLOTUI.DLL
PLOTUI.CNT
PLOTUI.HLP

1.

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

24 of 27

2012-03-04 20:50

background image

Installation script, i.e. printer.inf.

2.

PCD-file, which is unique for each model of plotter. This component is NOT OS
dependant!

3.

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:

Get printer.inf from any PS-compatible NT 3.51 printer driver.

1.

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 ).

2.

Get PSD-file mentioned above from modern Windows 2000/XP/2K3 driver.

3.

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!

4.

So if our printer/Plotter is:

Connected via LPT, COM or TCP-IP Printing (i.e LPD) interface.
PS- or HPGL2-compatible.

- we had a good chance to successfully 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.

SCSIPORT.SYS PCI/PCIe Bus Enumeration Bug in

Windows NT

In Windows NT SCSIPORT.SYS driver, which performes most operations between
storage driver (atapi.sys, intelata.sys, uniata.sys, viaide.sys, atdisk.sys or any
other) and NT's kernel, there is a serious bug which prevents detection of storage
controllers in some chipsets. Now problem confirmed with some of Intel ICH8, ICH9,

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

25 of 27

2012-03-04 20:50

background image

ICH10 chipsets in any working mode (RAID, AHCI, Native IDE and Legacy).

When storage driver tries to setup and initialize controller resources on a PCI/PCIe
bus it calls SCSIPORT.ScsiPortInitialize() from its DriverEntry() for each
detected controller. This function scans all buses and tries to find and initialize
controller with given device/vendor id. It scans sequental first for buses, second for
devices (from 0 to 31), third for functions (from 0 to 7). When it sees that there is
no given function, it breaks loop and scans for next device/bus.

PCI Busses, Devices and Device Functions Tree

--Bus 0 (PCI Express)
+-- Device 0 - 8086h:2990h Q963/Q965 Memory Controller Hub
+-- Device 2 - 8086h:2992h Q963/Q965 Integrated Graphics Controller
+-- Device 3 - 8086h:2994h Q963/Q965 HECI Controller
+-- Device 25 - 8086h:104Bh 82566DC Gigabit Network Connection
+-- Device 26
¦ +-- Function 0 - 8086h:2834h 82801H (ICH8 Family) USB UHCI #4
¦ +-- Function 1 - 8086h:2835h 82801H (ICH8 Family) USB UHCI #5
¦ L-- Function 7 - 8086h:283Ah 82801H (ICH8 Family) USB2 EHCI #2
+-- Device 28
¦ +-- Function 0 - 8086h:283Fh 82801H (ICH8 Family) PCIe Port 1
¦ ¦ L--> Bus 1
¦ +-- Function 1 - 8086h:2841h 82801H (ICH8 Family) PCIe Port 2
¦ ¦ L--> Bus 2
¦ +-- Function 2 - 8086h:2843h 82801H (ICH8 Family) PCIe Port 3
¦ ¦ L--> Bus 3
¦ +-- Function 3 - 8086h:2845h 82801H (ICH8 Family) PCIe Port 4
¦ ¦ L--> Bus 4
¦ L-- Function 4 - 8086h:2847h 82801H (ICH8 Family) PCIe Port 5
¦ L--> Bus 5
+-- Device 29
¦ +-- Function 0 - 8086h:2830h 82801H (ICH8 Family) USB UHCI #1
¦ +-- Function 1 - 8086h:2831h 82801H (ICH8 Family) USB UHCI #2
¦ +-- Function 2 - 8086h:2832h 82801H (ICH8 Family) USB UHCI #3
¦ L-- Function 7 - 8086h:2836h 82801H (ICH8 Family) USB2 EHCI #1
+-- Device 30 - 8086h:244Eh 82801HB Hub Interface to PCI Bridge (ICH8 B0 step)
¦ L--> Bus 6
L-- Device 31
+-- Function 0 - 8086h:2810h 82801HB/HR (ICH8/R) LPC Interface Controller
+-- Function 2 - 8086h:2824h 82801HR/HO/HH (ICH8R/DO/DH) SATA AHCI Controll
L-- Function 3 - 8086h:283Eh 82801H (ICH8 Family) SMBus Controller

--Bus 1 (PCI)
L-- No Devices Currently Present

--Bus 2 (PCI Express)
L-- Device 0 - 11ABh:6101h 6101 SATA2 Controller

--Bus 3 (PCI)
L-- No Devices Currently Present

--Bus 4 (PCI)
L-- No Devices Currently Present

--Bus 5 (PCI)
L-- No Devices Currently Present

--Bus 6 (PCI)
L-- Device 2 - 8086h:1026h 82545GM Gigabit Ethernet Controller

A total of 22 Items Found

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

26 of 27

2012-03-04 20:50

background image

It is a PCI dump from ICH8 AHCI system. Look above at Device 29, Device 31. In
Device 29 there is NO Function 3, in Device 31 there is NO Function 1. So all
function below this absent one will be skipped due to bug in SCSIPORT.SYS.
Skipped Device 31 Function 2 is a SATA Controller! Not good!

However there are systems that free of such bug:

PCI Busses, Devices and Device Functions Tree

--Bus 0 (PCI Express)
+-- Device 0 - 8086h:29C0h P35/G33 (Bearlake) Processor to I/O Controller
+-- Device 1 - 8086h:29C1h P35/G33 (Bearlake) PCIe Root Port
¦ L--> Bus 1
+-- Device 2 - 8086h:29C2h P35/G33 (Bearlake) Integrated Graphics Controller
+-- Device 27 - 8086h:27D8h 82801G (ICH7 Family) High Definition Audio
+-- Device 29
¦ +-- Function 0 - 8086h:27C8h 82801G (ICH7 Family) USB Universal Host Contro
¦ +-- Function 1 - 8086h:27C9h 82801G (ICH7 Family) USB Universal Host Contro
¦ +-- Function 2 - 8086h:27CAh 82801G (ICH7 Family) USB Universal Host Contro
¦ +-- Function 3 - 8086h:27CBh 82801G (ICH7 Family) USB Universal Host Contro
¦ L-- Function 7 - 8086h:27CCh 82801G (ICH7 Family) USB 2.0 Enhanced Host Con
+-- Device 30 - 8086h:244Eh 82801GB Hub Interface to PCI Bridge (ICH7 A1 step)
¦ L--> Bus 2
L-- Device 31
+-- Function 0 - 8086h:27B8h 82801GB/GR (ICH7 Family) LPC Interface Control
+-- Function 1 - 8086h:27DFh 82801G (ICH7 Family) Ultra ATA Storage Control
+-- Function 2 - 8086h:27C0h 82801GB/GR/GH (ICH7 Family) Serial ATA Storage
L-- Function 3 - 8086h:27DAh 82801G (ICH7 Family) SMBus Controller

--Bus 1 (PCI)
L-- No Devices Currently Present

--Bus 2 (PCI)
L-- Device 8 - 8086h:1094h PRO/100 VE Network Connection

A total of 15 Items Found

There is NO Device 29, Function 4, but our bug is storage controller related. Device
31 is OK, so we don't care this Device 29. We also can consider that this bug is also
can be BIOS-related, and can be solved by bugfix BIOS update from motherboard
manufacturer.

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: December 1st 2009

BEARWINDOWS - Microsoft Windows NT 3.51 [build 1057]

http://bearwindows.zcm.com.au/winnt351.htm#18

27 of 27

2012-03-04 20:50


Wyszukiwarka

Podobne podstrony:
Architektura Windows NT 2 bitowy model pamięci
Bezpieczenstwo w Windows NT 2000 Ćwiczenia praktyczne
Kasowanie hasła administratora z systemów Windows NT 2k XP Vista(1)
Windows NT Polityka Systemu WinNT
Skrot kursu Wstep do?ministrowania systemem Windows NT
Systemy operacyjne Windows NT 2000, systemy
Windows? i Windows NT zdalny dostęp
windows NT server, Pomoce naukowe, studia, informatyka
Charakterystyczne?chy, wady i zalety oraz?chy wspólne i różnice pomiędzy Windows NT, UNIX, Li
Bezpieczenstwo w Windows NT 2000 cwiczenia praktyczne cwbent
Bezpieczenstwo w Windows NT 200 Nieznany
windows nt server enterprise Y6XG24QAUMPTO6L5XKOYSYMHX3H3S5NYUZ2CBEQ
Bezpieczenstwo w Windows NT 2000 cwiczenia praktyczne cwbent
Software Power Off on Windows NT 4 0
Windows NT 2000 Native API Leksykon
The impact of Microsoft Windows infection vectors on IP network traffic patterns
Microsoft Windows XP Professional SP3 OEM 12in1 For Laptop

więcej podobnych podstron