Diskless workstation hang up while system shutdown?

I’m recently working on a diskless PC project, which
aims at booting Windows 2K/XP from a network server.
The works are just writing a boottrap according PXE
standard, hooking INT 13H, building a SCSI miniport
driver lying on microsoft tcpip.sys, and so on.

Although the diskless workstation may boot successfully,
it will hang up while system shutdown. The reason is
that, a storage stack will get a shutdown notification,
AFTER almost everything else (including the network
stack). So as my virtual SCSI miniport needs to keep
functioning while the file system drivers flush buffers,
the network stack has been shutdown, so hang up occurs.

Someone suggests me that “the only viable strategy for a
diskless system would be write a SCSI miniport that had
its own INTERNAL protocol stack (i.e. TCP/IP) and knew
how to directly control a network card.”

I think the suggestion is reasonable, but how can i
directly send pkt to or receive pkt from a network card
in my SCSI miniport?

How can i ensure that the network card stop working
until my SCSI miniport has finished flushing data and
paging I/O?

And if i want to write a protocol stack OUTSIDE my SCSI
miniport (i.e., as an individual .sys), how can i ensure
the protocol stack and network card stop working until
my SCSI miniport has finished flushing data and paging
I/O?

I’m a newbie on NDIS and I hope I’m asking the right
question, thanks.

|+++++++++++ |
| SCSI Miniport |
|+++++++++++ |
------------------------------------------------TDI
|++++++++++ | |++++++++|
| My Protocol | | tcpip.sys |
|++++++++++| |++++++++ |
-----------------------------------------------NDIS wrapper
|+++++++++++|
| NIC Miniport |
|+++++++++++|
-----------------------------------------------NDIS wrapper
|----------|

NIC

WeiYu, Dong


ÑÅ»¢Ãâ·ÑGÓÊÏ䣭No.1µÄ·À¶¾·ÀÀ¬»ø³¬´óÓÊÏä
ÑÅ»¢ÖúÊÖ¡§DËÑË÷¡¢É±¶¾¡¢·ÀɧÈÅ