RE: [ntdev] RE: [ntdev] Can WinXP's tcpip be loaded and initialized as a boot driver ?

I cannot answer your original question because I do not know why it does not work on WinXP. I am sorry that I did not make that clear and qualify my later comments as such. I also do not know why it appears to work on Win2K. My OP was simply to question why you thought it *should* work on Win2K or WinXP. The limits of my knowledge lead me to a healthy level of scepticism when I don’t know the answer and I should have been more careful to make it clear I was commenting from a postiion of ignorance and not knowledge.

I thank you for pointing out my missunderstanding of the PCI enumeration at boot time as it applies to the NIC card. Frankly, I had always read that behavior as having only to do with mass storage related components needed to boot the system but apparently you have discovered that NTLDR is ambivalent with respect to what sort of PCI device it will start. I read this group to learn too.

I can’t help but continue to be highly sceptical of the scheme in general as it relies on many more components than just the NIC driver to be loaded at boot time which were not designed to be loaded and started at that phase of system initialization.

And I continue to wish you…

Good Luck,
Dave Cattley
Consulting Engineer
System Sofware Development


From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of identifier scorpio
Sent: Thursday, September 29, 2005 9:26 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] 回复: RE: [ntdev] Can WinXP’s tcpip be loaded and initialized as a boot driver ?

thanks for your all kinds of doubts :slight_smile:

like what Calvin Guan said, i boot Win2K in 2 phases. i use PXE and hook int13h when system power on, and load Ntldr using int13h, and later, Ntldr will load all boot drivers (whose start type are 0) using int13h, of cause, my virtual network disk driver is among them. after kernel initialization, all disk access will be handled by my virtual network disk driver.

it works on Win2K, really, without any local hard disk.

about David R. Cattley’s doubt,

Just because you set RTL8139.SYS
to start at boot time does not mean that PnP is
going to enumerate and coordinate the starting of
the *devices* at boot time.Just be cause you
start it early does not mean PnP will ‘need it’ any
earlier.

DDK said as follows:

  1. On system boot, the operating system loader loads drivers of type SERVICE_BOOT_START before it transfers control to the kernel. These drivers are in memory when the kernel gets control.

  2. The PnP manager calls the DriverEntry routines of the SERVICE_BOOT_START drivers so the drivers can service the boot devices.

If a boot device (e.g., pci.sys) has child devices (e.g., rtl8139), those devices are enumerated. The child devices are configured and started if their drivers are also boot-start drivers. If a device’s drivers are not all boot-start drivers, the PnP manager creates a devnode for the device but does not start the device yet.

  1. After all the boot drivers have loaded and the boot devices are started, the PnP manager configures the rest of the PnP devices and loads their drivers.

detailed description can be found at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/create-inf_6c304af7-9e68-4e92-8f57-58e9d7cae628.xml.asp

so i can tell that my NIC driver rtl8139.sys will be enumerated and initialized at earlier stage.

but you haven’t answer my questions, why it can’t work on WinXP.

I think if i cann’t expain it or resolve it, i will have to write a protocol driver or send and recv by directly accessing NIC in my driver.


雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 http:
雅虎助手-搜索、杀毒、防骚扰 http: — Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256 You are currently subscribed to ntdev as: xxxxx@msn.com To unsubscribe send a blank email to xxxxx@lists.osr.com</http:></http:>