TDI_SEND on LEVEL_DISPATCH

Hi,

I’am trying to redirect connections on TDI by filtering TDI_CONNECT event
and patching the connect parameters (ip address and port). Immediately after
the redirected connect I need to write an extra string to the connection.
(eg. CONNECT original_ip:original_port). I do it in the completion routine
of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
IoCallDriver(). It seems to work fine, even under Verifier - where the
completion routine runs on LEVEL_DISPATCH.

My question is: Should I be concerned about calling IoCallDriver in this
context on dispatch level? Is this a safe practice or should I consider
using work items (and thus calling the lower driver on passive level)?

Thanks a lot,
Lukas.

My DDK documentation says:
Callers of IoCallDriver must be running at IRQL=A0<=3D DISPATCH_LEVEL.

So you should be fine calling at DISPATCH level.


Mats

xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:

Hi,

I’am trying to redirect connections on TDI by filtering TDI_CONNECT e=
vent
and patching the connect parameters (ip address and port). Immediatel=
y
after
the redirected connect I need to write an extra string to the connect=
ion.
(eg. CONNECT original_ip:original_port). I do it in the completion
routine
of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
IoCallDriver(). It seems to work fine, even under Verifier - where th=
e
completion routine runs on LEVEL_DISPATCH.

My question is: Should I be concerned about calling IoCallDriver in t=
his
context on dispatch level? Is this a safe practice or should I consid=
er
using work items (and thus calling the lower driver on passive level)=
?

Thanks a lot,
Lukas.


Questions? First check the Kernel Driver FAQ at http://www.
osronline.com/article.cfm?id=3D256

You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com=

ForwardSourceID:NT00002C42=

Mats, thanks for your reply.

Yes, I know it is possible to call IoCallDriver() function on dispatch
level. So far so good, IO Manager itself would crash, but it will eventualy
jump to the driver dispatch routine of the \Device\Tcp or any other TDI
filter on the way down. Are there any quaranties that these routines are
able to run on dispatch level as well?

"Mats PETERSSON" wrote in message
news:xxxxx@ntdev...

My DDK documentation says:
Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.

So you should be fine calling at DISPATCH level.

--
Mats

xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:

> Hi,
>
> I'am trying to redirect connections on TDI by filtering TDI_CONNECT event
> and patching the connect parameters (ip address and port). Immediately
after
> the redirected connect I need to write an extra string to the connection.
> (eg. CONNECT original_ip:original_port). I do it in the completion
routine
> of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> IoCallDriver(). It seems to work fine, even under Verifier - where the
> completion routine runs on LEVEL_DISPATCH.
>
> My question is: Should I be concerned about calling IoCallDriver in this
> context on dispatch level? Is this a safe practice or should I consider
> using work items (and thus calling the lower driver on passive level)?
>
> Thanks a lot,
> Lukas.
>
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at http://www.
> osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

> ForwardSourceID:NT00002C42

Hi,

Its ok to call IoCallDriver at DISPATCH_LEVEL. And the dispatch routines of
lower driver are guaranteed to run at this level. Only thing is you wont be
able to wait for the completion of the your send IRP.

Rather than using a send IRP after TDI_CONNECT is successful, you can send
connection data (your connect string) with the connect IRP only. That is in
Irpsp->Parameters, formatted as TDI_REQUEST_KERNEL_CONNECT
(RequestConnectionInformation).

Regards
Vij


Hi,

I’am trying to redirect connections on TDI by filtering TDI_CONNECT event
and patching the connect parameters (ip address and port). Immediately after
the redirected connect I need to write an extra string to the connection.
(eg. CONNECT original_ip:original_port). I do it in the completion routine
of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
IoCallDriver(). It seems to work fine, even under Verifier - where the
completion routine runs on LEVEL_DISPATCH.

My question is: Should I be concerned about calling IoCallDriver in this
context on dispatch level? Is this a safe practice or should I consider
using work items (and thus calling the lower driver on passive level)?

Thanks a lot,
Lukas.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Windows System
Software Devs Interest List digest
Sent: Tuesday, September 07, 2004 10:30 AM
To: ntdev digest recipients
Subject: ntdev digest: September 06, 2004

NTDEV Digest for Monday, September 06, 2004.

  1. RE: SCSIPORT for AMD64 bug?
  2. Using Multiple Palettes on Multiple Desktops at the same time
  3. Re: PCMCIA NIC Related
  4. Re: How to kill a service process? Help!
  5. Re: Re:How to kill a service process? Help!
  6. TDI_SEND on LEVEL_DISPATCH
  7. Re: Re:Re:Re:Re:successive TDI send requests
  8. Re: TDI_SEND on LEVEL_DISPATCH
  9. Re: Traffic shaping
  10. Re: TDI_SEND on LEVEL_DISPATCH
  11. Is it possible to force a paging out ?
  12. Re: Re: PPP Session disconnect
  13. Re: DVD ROM Class Driver
  14. Re: Is it possible to force a paging out ?
  15. How to get vendor and product ID for an USB device during AddDevice?

Subject: RE: SCSIPORT for AMD64 bug?
From: “Anton A. Kolomyeytsev (CoolDev.Com)”
Date: Mon, 6 Sep 2004 11:41:39 +0300
X-Message-Number: 1

This is a multi-part message in MIME format.

------=_NextPart_000_0582_01C49406.8D3D0E80
Content-Type: text/plain;
charset=“us-ascii”
Content-Transfer-Encoding: 7bit

Gentlemen,

we’ve hit a situation when SCSIPORT for 64-bit Windows (AMD64) does not
work in the way it’s
expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o DIRECT,
this is
critical!) is sent and SenseInfoOffset is not zero (SCSI sense info is
expected to be
returned) and in the same time DataBufferOffset is set to zero (quite a
common combination
when SCSI command does not have data buffer associated with, f.e.
TEST_UNIT_READY SCSI opcode
of 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER.
But this MUST work.
And was working before. It seems the one who coded newer version of
SCSIPORT assumes
SenseInfoOffset should be less then DataBufferOffset. This is true for
sure but ONLY for SCSI
commands with data buffer. If there is no data buffer such a check does
not make sense. In the
same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong comparation
of SenseInfoOffset
and DataBufferOffset is done inside function called
PortPassThroughInitialize(…) inside SCSIPORT.

Can anybody from MS confirm this being a bug or this is just we doing
something fundamentally wrong?

Thank you!

Regards,
Anton A. Kolomyeytsev

RocketDivision.Com – Toolkits for Network and Storage Kernel Software
Developers

------=_NextPart_000_0582_01C49406.8D3D0E80
Content-Type: text/html;
charset=“us-ascii”
Content-Transfer-Encoding: quoted-printable



charset=3DUS-ASCII">
СообщениеITLE>








color=3D#0000ff=20
size=3D4>Gentlemen,

color=3D#0000ff=20
size=3D4>

color=3D#0000ff=20
size=3D4>we've hit a situation when SCSIPORT for 64-bit Windows=20
(AMD64) does not work in the way it's

color=3D#0000ff=20
size=3D4>expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o =
DIRECT,=20
this is

color=3D#0000ff=20
size=3D4>critical!) is sent and SenseInfoOffset is not zero (SCSI =
sense info is=20
expected to be

color=3D#0000ff=20
size=3D4>returned) and in the same time DataBufferOffset is set to =
zero (quite a=20
common combination

color=3D#0000ff=20
size=3D4>when SCSI command does not have data buffer associated with, =
f.e.=20
TEST_UNIT_READY SCSI opcode

color=3D#0000ff size=3D4>of=20
0x00) DeviceIoControl(...) function returns STATUS_INVALID_PARAMETER. =
But this=20
MUST work.

color=3D#0000ff size=3D4>And=20
was working before. It seems the one who coded newer version of =
SCSIPORT=20
assumes

color=3D#0000ff=20
size=3D4>SenseInfoOffset should be less then DataBufferOffset. This is =
true for=20
sure but ONLY for SCSI

color=3D#0000ff=20
size=3D4>commands with data buffer. If there is no data buffer such a =
check does=20
not make sense. In the

color=3D#0000ff=20
size=3D4>same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong =
comparation=20
of SenseInfoOffset

color=3D#0000ff size=3D4>and=20
DataBufferOffset is done inside function called =
PortPassThroughInitialize(...)=20
inside SCSIPORT.

color=3D#0000ff=20
size=3D4>

color=3D#0000ff size=3D4>Can=20
anybody from MS confirm this being a bug or this is =
just we=20
doing something fundamentally wrong?

color=3D#0000ff=20
size=3D4>

color=3D#0000ff=20
size=3D4>Thank you!


size=3D4>Regards,

Anton =
A.=20
Kolomyeytsev

size=3D4>

size=3D4>RocketDivision.Com --=20
Toolkits for Network and Storage Kernel Software =
Developers



------=_NextPart_000_0582_01C49406.8D3D0E80--

----------------------------------------------------------------------

Subject: Using Multiple Palettes on Multiple Desktops at the same time
From: "Asif"
Date: Mon, 6 Sep 2004 14:19:21 +0500
X-Message-Number: 2

I have two VGA adapters in my PC. The problem is when I set the color depth
of both devices\monitors to 8bits per pixel then GDI chooses the palette of
the primary device as the default palette and uses it to render both the
devices. Is it possible to force the GDI to render two devices with their
respective palettes.

Muhammad Asif Fayyaz
Design Engineer

----------------------------------------------------------------------

Subject: Re: PCMCIA NIC Related
From: Mats PETERSSON
Date: Mon, 6 Sep 2004 10:30:06 +0100
X-Message-Number: 3

xxxxx@lists.osr.com wrote on 09/06/2004 05:15:18 AM:

> Hi,
> is you guess i'm new in this driver development topic. As i see its (or
> looks like) a difficult job to make a running driver.
> Right know i'm on the way developing a nic driver running on the pcimcia
> bus. If not wrong doing this using NDIS will simplify (hope so) the job.
Any
> suggestions, warnings source etc. would be helpful.

Developing drivers is definitely one of the more difficult levels to
program at, for the simple reason that there are more levels of difficulty
than for a normal user-mode application. Amongst these are:
- Your code will run at driver level, which means that if your code
overwrites some data that it shouldn't be touching, it's not necessarily
your application that crashes.
- As if this isn't enough, windows offerst (for good reasons) less
protection between parts of the kernel, which makes detecting these bugs
harder.
- Debugging drivers is made harder by the fact that the whole system
usually fails to operate correctly after a driver crash, whilst an
application crash is normally not a big deal.
- The behaviour of your driver (even when it doesn't crash the system) will
have impacts on the whole system. A user application doesn't have that
"power".

There are some good tools that can be used to help prevent complete
disaster. Amongst those are:
- Driver verifier (DV for short). Do not do any driver development without
it. It's a tool that helps identify when/if something illegal is being
done, usually at the source of the illegal operation rather than later on
when it's no longer traceable to your driver. Typical example would be
writing outside of a buffer. When windows normally (no DV) allocates small
buffers (say 100 bytes), the OS will pick a small piece of memory from a
large chunk (say a 4 or 16KB chunk), and give a pointer to that address.
Immediately after this 100b area will be the next small memory block, most
likely to be given to some other process shortly. DV will modify this
behaviour by allocating a full 4KB block, surrounded by a 4KB guard page on
either side, and fill the remaining part of the 4KB with a pattern that can
be identified later if it's been overwritten. If you hit any other "either
side" 4KB blocks, it will signal an error, as well as when the block is
freed, the pattern is checked to see that it's "undisturbed".
Other things it detects is: Potential deadlock situations, double-free of
memory, immediate detection of pageable access at levels where the OS
requires non-pageable memory, etc, etc.
Start by dv by running "Verifier" (start->run "Verifier"), select
everything except the "Low resource simulation".
- WinDBG. A remote debugger that allows you set breakpoints (either in
code, or for instance when a address is being written to), single step the
code, view variables etc. It actually works for applications too, but it's
mostly used by the driver/kernel developers.

Regarding NDIS: Can't really comment on this one. I'm sure one of the
networking experts will chime in here (I've done Linux drivers for network
devices, but not Windows ones).
>
> My special question is, do my miniport driver needs a flow control
> mechanism? I mean, how do a say the nic I will transfer YYY (say 100)
bytes.
> The card i' m working on has I/O space with 16 bit Tx/Rx buffers. Does
this
> mean the 100 bytes should be sent in 16 bit fragments?
> If this is the case how does the card knows the whole data is 100 bytes
> long, since it should reassemble the 16 bit data to make a single 100
byte
> packet.

The PCMCIA interface is 16-bit wide, so in some form, all the data will be
transmitted as 16-bit units. This doesn't necessarily mean that your driver
has to go through and send 16 bits at a time from the packet. As to your
device knowing the length of the data, there's no generic answer to this.

Here's how it generally works, but it may be different:
1. Your driver (or some upper layer driver) puts the data to be transmitted
in a locked down buffer (i.e. a non-pageable buffer).
2. You put the address and size of the buffer to the network device.
There's three basic principles here:
a. (semi-)Circular buffers: A set of packet buffers are predefined.
The driver puts the relevant
information about the packet in the "next available space", and
sets a flag to indicate to the
network hardware that it's available to send.
If there's no available buffer, you'll have to wait for the device
to finish transmitting, usually
indicated by an interrupt, and then use the newly released buffer.
Some devices will automatically "poll" for the "new data to
transmit" and others require that the
information about "new data to transmit" be written to a register
(usually just one bit to be set
somewhere).

b. Single buffer: There's only one buffer, and your driver specifies
the packet information directly to a
set of registers in the chip. Once the buffer has been filled in,
you'll need to wait for the data to
be transmitted before the next packet can be readied.

c. No buffer: The device requires the hardware&softwate to supply the
data as it's being transmitted.
Basicly just a single register that is written, and a second
register that needs to be polled for
"status" to indicate that the next few bits of data can be put in
the transmit register.

Generally, modern network devices are "DMA" (direct memory access) devices,
so they use the (a) or (b) versions above. PIO (programmed I/O) is probably
extinct by now for network devices (at the very least for 100Mb/s devices).

Exactly how this works on your NIC is obviously something that you can find
in the software developers guide for that NIC. They are not all the same,
but most are pretty similar.

Hope this helps.

--
Mats

>
> I' m not sure about having the question stated correctly. My good i'm so
> confused. Thanks in advance.
>
> Best Regards
> Yagmur Konuslu
>
>
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at http://www.
> osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

> ForwardSourceID:NT00002BFA

----------------------------------------------------------------------

Subject: Re: How to kill a service process? Help!
From: "WalkerNet"
Date: Mon, 6 Sep 2004 17:57:38 +0800
X-Message-Number: 4

I ever meet a Trojan-Horse, it registered as a Service. Although it is
listed in the 'Service Manager', but it always cannot be stopped.
However the kill.exe can kill the process, and the speed of termination very
quick. So:

1) I don't know how the kill.exe to do this? It can kill the most processes
and very quick, this is just I want.
2) For example: If I want to kill the process of winlogon.exe in
Windows2000, how I should do that.

Thanks!

Walker.

"WalkerNet" wrote in message news:xxxxx@ntdev...
> I want to kill the service process using a script. I am looking for a
> solution other than using a 3rd party program (like taskkill.exe or
> kill.exe).
> How to do this?
>
> Thanks!
>
> Walker.
>
>
>
>
>

----------------------------------------------------------------------

Subject: Re: Re:How to kill a service process? Help!
From: "Christiaan Ghijselinck"
Date: Mon, 6 Sep 2004 12:50:43 +0200
X-Message-Number: 5

The SDK contains the "kill" sources as sample somewhere in
...\SdkTools\TList . That one can Kill winlogon.exe on W2k :-)

Christiaan

----- Original Message -----
From: "WalkerNet"
Newsgroups: ntdev
To: "Windows System Software Devs Interest List"
Sent: Monday, September 06, 2004 11:57 AM
Subject: Re:[ntdev] How to kill a service process? Help!

> I ever meet a Trojan-Horse, it registered as a Service. Although it is
> listed in the 'Service Manager', but it always cannot be stopped.
> However the kill.exe can kill the process, and the speed of termination
very
> quick. So:
>
> 1) I don't know how the kill.exe to do this? It can kill the most
processes
> and very quick, this is just I want.
> 2) For example: If I want to kill the process of winlogon.exe in
> Windows2000, how I should do that.
>
> Thanks!
>
> Walker.
>
>
> "WalkerNet" wrote in message news:xxxxx@ntdev...
> > I want to kill the service process using a script. I am looking for a
> > solution other than using a 3rd party program (like taskkill.exe or
> > kill.exe).
> > How to do this?
> >
> > Thanks!
> >
> > Walker.
> >
> >
> >
> >
> >
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
xxxxx@compaqnet.be
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

----------------------------------------------------------------------

Subject: TDI_SEND on LEVEL_DISPATCH
From: "Lukas Rypacek"
Date: Mon, 6 Sep 2004 13:22:09 +0200
X-Message-Number: 6

Hi,

I'am trying to redirect connections on TDI by filtering TDI_CONNECT event
and patching the connect parameters (ip address and port). Immediately after
the redirected connect I need to write an extra string to the connection.
(eg. CONNECT original_ip:original_port). I do it in the completion routine
of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
IoCallDriver(). It seems to work fine, even under Verifier - where the
completion routine runs on LEVEL_DISPATCH.

My question is: Should I be concerned about calling IoCallDriver in this
context on dispatch level? Is this a safe practice or should I consider
using work items (and thus calling the lower driver on passive level)?

Thanks a lot,
Lukas.

----------------------------------------------------------------------

Subject: Re: Re:Re:Re:Re:successive TDI send requests
From: "Maxim S. Shatskih"
Date: Mon, 6 Sep 2004 16:05:43 +0400
X-Message-Number: 7

I responded on this subject a bit ago.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: "Hakim"
Newsgroups: ntdev
To: "Windows System Software Devs Interest List"
Sent: Thursday, September 02, 2004 7:41 PM
Subject: Re:[ntdev] Re:Re:Re:successive TDI send requests

> You mean I can only set SO_SNDBUF for my client using
> IOCTL_TCP_SET_INFORMATION_EX?
> If so what would be the way to setup, any hints on ID.toi_id?
>
> Or, could you give me some knowledgebase reference for its implementation?
>
> Thanks,
> Hakim
>
> "Maxim S. Shatskih" wrote in message
> news:xxxxx@ntdev...
> > You cannot. SO_SNDBUF is not implemented in TCP.
> >
> > It must be impemented in all TDI clients. For instance, AFD
implements
> it.
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----
> > From: "Hakim"
> > Newsgroups: ntdev
> > To: "Windows System Software Devs Interest List"
> > Sent: Thursday, September 02, 2004 5:44 PM
> > Subject: Re:[ntdev] Re:Re:successive TDI send requests
> >
> >
> > > Thanks for the suggestion, I'll change the design accordingly. There
is
> a
> > > small challenge I'm facing is to get SO_SNDBUF by
> > > IOCTL_TCP_QUERY_INFORMATION_EX using TDI interface. I'm having touble
to
> get
> > > this value. Here is my struct value for
TCP_REQUEST_QUERY_INFORMATION_EX
> > >
> > > ID.toi_entity.tei_entity = CO_TL_ENTITY;
> > > ID.toi_entity.tei_instance = TL_INSTANCE;
> > > ID.toi_class = INFO_CLASS_PROTOCOL
> > > ID.toi_type = INFO_TYPE_CONNECTION
> > > ID.toi_id = SO_SNDBUF
> > >
> > > What will be the value for SO_SNDBUF? It seems to be 0x1001 from
looking
> at
> > > some header but the IOCTL fails meaning parameters in the
> > > TCP_REQUEST_QUERY_INFORMATION_EX are wrong or it may need digging
> through
> > > multiple structs as it is done to get IP address. Could you give me
some
> > > hints in this dark area?
> > >
> > > Hakim
> > >
> > > "Maxim S. Shatskih" wrote in message
> > > news:xxxxx@ntdev...
> > > > The goal is to send as much as possible using a single RTT, at
> least
> > > for a
> > > > bulk traffic (for transcation processing, 1 transaction per RTT is a
> > > > theoretical limit).
> > > >
> > > > To maintain this goal, you should feed the pipeline full enough
so
> > > that it
> > > > will not be drained at the moment of opening the sender window. Such
a
> > > drain
> > > > means idle time in the connection, the time when it was OK to send
> data,
> > > and
> > > > this was not done due to sender stupidity. This decreases the sender
> > > throughput
> > > > a lot.
> > > >
> > > > This is why we have SO_SNDBUF, which is around 64 or even 256KB.
> > > >
> > > > Maxim Shatskih, Windows DDK MVP
> > > > StorageCraft Corporation
> > > > xxxxx@storagecraft.com
> > > > http://www.storagecraft.com
> > > >
> > > > ----- Original Message -----
> > > > From: "Hakim"
> > > > Newsgroups: ntdev
> > > > To: "Windows System Software Devs Interest List"

> > > > Sent: Tuesday, August 31, 2004 9:43 PM
> > > > Subject: Re:[ntdev] Re:successive TDI send requests
> > > >
> > > >
> > > > > > Just do not send too many unACKed data to TCP.
> > > > >
> > > > > My intention is to send maximum three unACKed send or the size
limit
> is
> > > > > 3*1460 (a Send request of 1460*3 will produce three sends from TDI
> > > layer)
> > > > > whichever hits first. By going through RFC about delay ACK
algorithm
> it
> > > > > seems that if I make three send requests in a row then the first
> send
> > > will
> > > > > get ACK rightway after the third request received by the remote
end
> > > > > dismissing the delay ACK timer. Is this the right approach?
> > > > >
> > > > > Thanks,
> > > > > Hakim
> > > > >
> > > > > "Maxim S. Shatskih" wrote in message
> > > > > news:xxxxx@ntdev...
> > > > > > > So, I can assume that if TDI sends are timely ordered then
data
> will
> > > > > also go
> > > > > > > out in the same order, completion routine will not play any
role
> > > here.
> > > > > Am I
> > > > > > > correct?
> > > > > >
> > > > > > Correct. Just do not send too many unACKed data to TCP.
> > > > > >
> > > > > > Maintain the counter of "bytes inside pending TDI_SENDs", and,
if
> it
> > > hits
> > > > > some
> > > > > > limit, send directly without the additional buffer, and wait for
> > > TDI_SEND
> > > > > to
> > > > > > complete.
> > > > > >
> > > > > > This limit is your SO_SNDBUF.
> > > > > >
> > > > > > Maxim Shatskih, Windows DDK MVP
> > > > > > StorageCraft Corporation
> > > > > > xxxxx@storagecraft.com
> > > > > > http://www.storagecraft.com
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > ---
> > > > > Questions? First check the Kernel Driver FAQ at
> > > > http://www.osronline.com/article.cfm?id=256
> > > > >
> > > > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > > > To unsubscribe send a blank email to
> xxxxx@lists.osr.com
> > > >
> > > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

----------------------------------------------------------------------

Subject: Re: TDI_SEND on LEVEL_DISPATCH
From: Mats PETERSSON
Date: Mon, 6 Sep 2004 13:10:36 +0100
X-Message-Number: 8

My DDK documentation says:
Callers of IoCallDriver must be running at IRQL=A0<=3D DISPATCH_LEVEL.

So you should be fine calling at DISPATCH level.

--
Mats

xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:

> Hi,
>
> I'am trying to redirect connections on TDI by filtering TDI_CONNECT e=
vent
> and patching the connect parameters (ip address and port). Immediatel=
y
after
> the redirected connect I need to write an extra string to the connect=
ion.
> (eg. CONNECT original_ip:original_port). I do it in the completion
routine
> of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> IoCallDriver(). It seems to work fine, even under Verifier - where th=
e
> completion routine runs on LEVEL_DISPATCH.
>
> My question is: Should I be concerned about calling IoCallDriver in t=
his
> context on dispatch level? Is this a safe practice or should I consid=
er
> using work items (and thus calling the lower driver on passive level)=
?
>
> Thanks a lot,
> Lukas.
>
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at http://www.
> osronline.com/article.cfm?id=3D256
>
> You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com=

> ForwardSourceID:NT00002C42=

----------------------------------------------------------------------

Subject: Re: Traffic shaping
From: "Maxim S. Shatskih"
Date: Mon, 6 Sep 2004 16:58:30 +0400
X-Message-Number: 9

Delay at NDIS level. After all, TDI filters are not documented and thus
are
not a way to go (unless you want to have unsolvable interop issue with a
similar product).

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: "Yura"
To: "Windows System Software Devs Interest List"
Sent: Thursday, September 02, 2004 7:25 PM
Subject: [ntdev] Traffic shaping

> Hello ,Windows
>
> I need to make a driver to limit bandwidth to/from specific IP
> addresses. And I'm trying to choose between TDI and NDIS driver. I
> need only to shape TCP connections, but UDP would be good too.
> Meanwhile I need to pass PING packets at full speed.
>
> I think It's easy to do this in TDI layer for TDI_SEND, TDI_RECEIVE
> and ClientEventReceive, as there are associated IRPs and they can be
> divided into smaller ones and submitted with the delay. But I'm not
> sure about ClientEventChainedReceive, as delaying the buffer may
> cause performance drop, or timeout at the app side.
>
> At NDIS level I think it's possible to delay ACK packets, but this
> can cause packets retransmission and increased bandwidth usage
> (which is opposite to my task) and even connection loss.
>
> Can you guys suggest something? Maybe there are some example
> solutions for traffic shaping or documentation available?
>
> Thanks.
>
> --
> Best regards,
> Yura mailto:xxxxx@mail.zp.ua
>
>
> ---
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

----------------------------------------------------------------------

Subject: Re: TDI_SEND on LEVEL_DISPATCH
From: "Lukas Rypacek"
Date: Mon, 6 Sep 2004 15:00:30 +0200
X-Message-Number: 10

Mats, thanks for your reply.

Yes, I know it is possible to call IoCallDriver() function on dispatch
level. So far so good, IO Manager itself would crash, but it will eventualy
jump to the driver dispatch routine of the \Device\Tcp or any other TDI
filter on the way down. Are there any quaranties that these routines are
able to run on dispatch level as well?
-----

"Mats PETERSSON" wrote in message
news:xxxxx@ntdev...

My DDK documentation says:
Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.

So you should be fine calling at DISPATCH level.

--
Mats

xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:

> Hi,
>
> I'am trying to redirect connections on TDI by filtering TDI_CONNECT event
> and patching the connect parameters (ip address and port). Immediately
after
> the redirected connect I need to write an extra string to the connection.
> (eg. CONNECT original_ip:original_port). I do it in the completion
routine
> of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> IoCallDriver(). It seems to work fine, even under Verifier - where the
> completion routine runs on LEVEL_DISPATCH.
>
> My question is: Should I be concerned about calling IoCallDriver in this
> context on dispatch level? Is this a safe practice or should I consider
> using work items (and thus calling the lower driver on passive level)?
>
> Thanks a lot,
> Lukas.
>
>
>
>
> ---
> Questions? First check the Kernel Driver FAQ at http://www.
> osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

> ForwardSourceID:NT00002C42

----------------------------------------------------------------------

Subject: Is it possible to force a paging out ?
From: =?iso-8859-1?Q?I=F1aki_Castillo?=
Date: Mon, 6 Sep 2004 18:15:59 +0200
X-Message-Number: 11

This is a multi-part message in MIME format.

------_=_NextPart_001_01C4942C.CBC18EA8
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

For test purposes I would need to force some specific memory pages out =
to disk.
Is there any way to do so ?
=20
Thanks.
=20
=20

------_=_NextPart_001_01C4942C.CBC18EA8
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable



charset=3Diso-8859-1">



For =
test purposes I=20
would need to force some specific memory pages out to=20
disk.

Is =
there any way to=20
do so ?

size=3D2>

size=3D2>Thanks.

size=3D2>

size=3D2>


------_=_NextPart_001_01C4942C.CBC18EA8--

----------------------------------------------------------------------

Subject: Re: Re: PPP Session disconnect
From: "Maxim S. Shatskih"
Date: Tue, 7 Sep 2004 00:05:58 +0400
X-Message-Number: 12

The power chip on the mobo usually has some "WAKE on" gates.
They are, in turn, attached to some "wake" wires on the peripherals like
the PCI PME.

If you want the sleeping machine to be woken from Ethernet, then you
need
a) the Ethernet card to generate PME and b) the power chip to wake the
machine
from PME.

To switch both states on, there must be a wait-wake handler for the
Ethernet, and also the wait-wake handler in the ACPI.SYS which controls the
mobo. This is all the mechanics.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----------------------------------------------------------------------

Subject: Re: DVD ROM Class Driver
From: "Maxim S. Shatskih"
Date: Tue, 7 Sep 2004 00:16:24 +0400
X-Message-Number: 13

The source is in the DDK.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: "Atul"
To: "Windows System Software Devs Interest List"
Sent: Sunday, September 05, 2004 2:18 PM
Subject: [ntdev] DVD ROM Class Driver

> Hi,
>
> I am looking for resources to understand the DVD ROM Class Driver
> implementation. I am sure there are lot of differences between CD ROM
Class
> driver and DVD ROM class driver. Are there any links, Microsoft resources
> which can be of use here?
>
> Regards,
> atul
>
>
> ---
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

----------------------------------------------------------------------

Subject: Re: Is it possible to force a paging out ?
From: "Maxim S. Shatskih"
Date: Tue, 7 Sep 2004 00:21:36 +0400
X-Message-Number: 14

This is a multi-part message in MIME format.

------=_NextPart_000_010F_01C49470.A2EE9810
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Verifier in some modes forces all pageable memory to disk on each =
spinlock acquizition.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----=20
From: I=F1aki Castillo=20
To: Windows System Software Devs Interest List=20
Sent: Monday, September 06, 2004 8:15 PM
Subject: [ntdev] Is it possible to force a paging out ?

For test purposes I would need to force some specific memory pages out =
to disk.
Is there any way to do so ?

Thanks.

---=20
Questions? First check the Kernel Driver FAQ at =
http://www.osronline.com/article.cfm?id=3D256=20

You are currently subscribed to ntdev as: unknown lmsubst tag =
argument: ''=20
To unsubscribe send a blank email to xxxxx@lists.osr.com
------=_NextPart_000_010F_01C49470.A2EE9810
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable



charset=3Diso-8859-1">




Verifier in some modes forces all =
pageable=20
memory to disk on each spinlock acquizition.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
href=3D"mailto:xxxxx@storagecraft.com">xxxxx@storagecraft.com
href=3D"http://www.storagecraft.com">http://www.storagecraft.com
<=
/DIV>
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
----- Original Message -----

style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black">From:=20
href=3D"mailto:xxxxx@pandasoftware.es">I=F1aki Castillo


Sent: Monday, September 06, =
2004 8:15=20
PM

Subject: [ntdev] Is it possible =
to force=20
a paging out ?



For =
test purposes=20
I would need to force some specific memory pages out to=20
disk.

Is =
there any way=20
to do so ?

size=3D2>

size=3D2>Thanks.

size=3D2>

size=3D2>
---
Questions? First check the =
Kernel=20
Driver FAQ at =
href=3D"http://www.osronline.com/article.cfm?id=3D256">http://www.osronli=
ne.com/article.cfm?id=3D256
=20


You are currently subscribed to ntdev as: unknown lmsubst tag=20
argument: ''
To unsubscribe send a blank email to =
href=3D"mailto:xxxxx@lists.osr.com">xxxxx@lists=
.osr.com
=20


------=_NextPart_000_010F_01C49470.A2EE9810--

----------------------------------------------------------------------

Subject: How to get vendor and product ID for an USB device during
AddDevice?
From: "Michal Vodicka"
Date: Tue, 7 Sep 2004 06:05:09 +0200
X-Message-Number: 15

For some legacy reason I'd need to get USB product and vendor IDs before =
FDO creation in AddDevice entry point. So I send =
_URB_CONTROL_DESCRIPTOR_REQUEST to PDO to get USB_DEVICE_DESCRIPTOR. All =
works well when device is just plugged in. However, when I disable and =
enable device, I get STATUS_DEVICE_NOT_CONNECTED in XP SP0 and =
STATUS_DEVICE_BUSY in XP SP2. It works when IRP_MN_START_DEVICE is sent =
but it is too late for my purpose. Is there any reason why it doesn't =
work? And is there another way how to get these IDs? Parsing HardwareID =
from registry doesn't seem as a good idea for me.

Best regards,

Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]

---

END OF DIGEST

---
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@nodeinfotech.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Thank you for your suggestion. So I tried to post my buffer in
TDI_CONNECTION_INFORMATION (RequestConnectionInformation->UserData,
RequestConnectionInformation->UserDataLength) in TDI_CONNECT Irp, but that
doesn’t seem to work. I allocate the buffer from NonPagedPool and free it in
completion routine of TDI_CONNECT. Connection is redirected successfully but
no ‘connect string’ is send.

Any ideas?
Thanks, Lukas.

“Vijender Yadav” wrote in message
news:xxxxx@ntdev…
> Hi,
>
> Its ok to call IoCallDriver at DISPATCH_LEVEL. And the dispatch routines
of
> lower driver are guaranteed to run at this level. Only thing is you wont
be
> able to wait for the completion of the your send IRP.
>
> Rather than using a send IRP after TDI_CONNECT is successful, you can send
> connection data (your connect string) with the connect IRP only. That is
in
> Irpsp->Parameters, formatted as TDI_REQUEST_KERNEL_CONNECT
> (RequestConnectionInformation).
>
> Regards
> Vij
>
> ------------------------------------------------------------------
>
> Hi,
>
> I’am trying to redirect connections on TDI by filtering TDI_CONNECT event
> and patching the connect parameters (ip address and port). Immediately
after
> the redirected connect I need to write an extra string to the connection.
> (eg. CONNECT original_ip:original_port). I do it in the completion routine
> of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> IoCallDriver(). It seems to work fine, even under Verifier - where the
> completion routine runs on LEVEL_DISPATCH.
>
> My question is: Should I be concerned about calling IoCallDriver in this
> context on dispatch level? Is this a safe practice or should I consider
> using work items (and thus calling the lower driver on passive level)?
>
> Thanks a lot,
> Lukas.
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com]On Behalf Of Windows System
> Software Devs Interest List digest
> Sent: Tuesday, September 07, 2004 10:30 AM
> To: ntdev digest recipients
> Subject: ntdev digest: September 06, 2004
>
>
> NTDEV Digest for Monday, September 06, 2004.
>
> 1. RE: SCSIPORT for AMD64 bug?
> 2. Using Multiple Palettes on Multiple Desktops at the same time
> 3. Re: PCMCIA NIC Related
> 4. Re: How to kill a service process? Help!
> 5. Re: Re:How to kill a service process? Help!
> 6. TDI_SEND on LEVEL_DISPATCH
> 7. Re: Re:Re:Re:Re:successive TDI send requests
> 8. Re: TDI_SEND on LEVEL_DISPATCH
> 9. Re: Traffic shaping
> 10. Re: TDI_SEND on LEVEL_DISPATCH
> 11. Is it possible to force a paging out ?
> 12. Re: Re: PPP Session disconnect
> 13. Re: DVD ROM Class Driver
> 14. Re: Is it possible to force a paging out ?
> 15. How to get vendor and product ID for an USB device during AddDevice?
>
> ----------------------------------------------------------------------
>
> Subject: RE: SCSIPORT for AMD64 bug?
> From: “Anton A. Kolomyeytsev (CoolDev.Com)”
> Date: Mon, 6 Sep 2004 11:41:39 +0300
> X-Message-Number: 1
>
> This is a multi-part message in MIME format.
>
> ------=_NextPart_000_0582_01C49406.8D3D0E80
> Content-Type: text/plain;
> charset=“us-ascii”
> Content-Transfer-Encoding: 7bit
>
>
>
>
>
> Gentlemen,
>
> we’ve hit a situation when SCSIPORT for 64-bit Windows (AMD64) does not
> work in the way it’s
> expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o DIRECT,
> this is
> critical!) is sent and SenseInfoOffset is not zero (SCSI sense info is
> expected to be
> returned) and in the same time DataBufferOffset is set to zero (quite a
> common combination
> when SCSI command does not have data buffer associated with, f.e.
> TEST_UNIT_READY SCSI opcode
> of 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER.
> But this MUST work.
> And was working before. It seems the one who coded newer version of
> SCSIPORT assumes
> SenseInfoOffset should be less then DataBufferOffset. This is true for
> sure but ONLY for SCSI
> commands with data buffer. If there is no data buffer such a check does
> not make sense. In the
> same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong comparation
> of SenseInfoOffset
> and DataBufferOffset is done inside function called
> PortPassThroughInitialize(…) inside SCSIPORT.
>
> Can anybody from MS confirm this being a bug or this is just we doing
> something fundamentally wrong?
>
> Thank you!
>
> Regards,
> Anton A. Kolomyeytsev
>
> RocketDivision.Com – Toolkits for Network and Storage Kernel Software
> Developers
>
>
>
> ------=_NextPart_000_0582_01C49406.8D3D0E80
> Content-Type: text/html;
> charset=“us-ascii”
> Content-Transfer-Encoding: quoted-printable
>
>
>
> > charset=3DUS-ASCII">
> Сообщение> ITLE>
>
>

>

>






>


>
> color=3D#0000ff=20
> size=3D4>Gentlemen,


>

> color=3D#0000ff=20
> size=3D4>


>
> color=3D#0000ff=20
> size=3D4>we’ve hit a situation when SCSIPORT for 64-bit Windows=20
> (AMD64) does not work in the way it’s


>
> color=3D#0000ff=20
> size=3D4>expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o =
> DIRECT,=20
> this is


>
> color=3D#0000ff=20
> size=3D4>critical!) is sent and SenseInfoOffset is not zero (SCSI =
> sense info is=20
> expected to be


>
> color=3D#0000ff=20
> size=3D4>returned) and in the same time DataBufferOffset is set to =
> zero (quite a=20
> common combination


>
> color=3D#0000ff=20
> size=3D4>when SCSI command does not have data buffer associated with, =
> f.e.=20
> TEST_UNIT_READY SCSI opcode


>
> color=3D#0000ff size=3D4>of=20
> 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER. =
> But this=20
> MUST work.


>
> color=3D#0000ff size=3D4>And=20
> was working before. It seems the one who coded newer version of =
> SCSIPORT=20
> assumes


>
> color=3D#0000ff=20
> size=3D4>SenseInfoOffset should be less then DataBufferOffset. This is =
> true for=20
> sure but ONLY for SCSI


>
> color=3D#0000ff=20
> size=3D4>commands with data buffer. If there is no data buffer such a =
> check does=20
> not make sense. In the


>
> color=3D#0000ff=20
> size=3D4>same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong =
> comparation=20
> of SenseInfoOffset


>
> color=3D#0000ff size=3D4>and=20
> DataBufferOffset is done inside function called =
> PortPassThroughInitialize(…)=20
> inside SCSIPORT.


>

> color=3D#0000ff=20
> size=3D4>


>
> color=3D#0000ff size=3D4>Can=20
> anybody from MS confirm this being a bug or this is =
> just we=20
> doing something fundamentally wrong?


>

> color=3D#0000ff=20
> size=3D4>


>
> color=3D#0000ff=20
> size=3D4>Thank you!


>


>
> size=3D4>Regards,


>
Anton =
> A.=20
> Kolomyeytsev


>

> size=3D4>


>
> size=3D4>RocketDivision.Com --=20
> Toolkits for Network and Storage Kernel Software =
> Developers


>


>
> ------=_NextPart_000_0582_01C49406.8D3D0E80--
>
>
> ----------------------------------------------------------------------
>
> Subject: Using Multiple Palettes on Multiple Desktops at the same time
> From: "Asif"
> Date: Mon, 6 Sep 2004 14:19:21 +0500
> X-Message-Number: 2
>
>
> I have two VGA adapters in my PC. The problem is when I set the color
depth
> of both devices\monitors to 8bits per pixel then GDI chooses the palette
of
> the primary device as the default palette and uses it to render both the
> devices. Is it possible to force the GDI to render two devices with their
> respective palettes.
>
> Muhammad Asif Fayyaz
> Design Engineer
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: PCMCIA NIC Related
> From: Mats PETERSSON
> Date: Mon, 6 Sep 2004 10:30:06 +0100
> X-Message-Number: 3
>
>
>
>
>
>
>
>
> xxxxx@lists.osr.com wrote on 09/06/2004 05:15:18 AM:
>
> > Hi,
> > is you guess i'm new in this driver development topic. As i see its (or
> > looks like) a difficult job to make a running driver.
> > Right know i'm on the way developing a nic driver running on the pcimcia
> > bus. If not wrong doing this using NDIS will simplify (hope so) the job.
> Any
> > suggestions, warnings source etc. would be helpful.
>
> Developing drivers is definitely one of the more difficult levels to
> program at, for the simple reason that there are more levels of difficulty
> than for a normal user-mode application. Amongst these are:
> - Your code will run at driver level, which means that if your code
> overwrites some data that it shouldn't be touching, it's not necessarily
> your application that crashes.
> - As if this isn't enough, windows offerst (for good reasons) less
> protection between parts of the kernel, which makes detecting these bugs
> harder.
> - Debugging drivers is made harder by the fact that the whole system
> usually fails to operate correctly after a driver crash, whilst an
> application crash is normally not a big deal.
> - The behaviour of your driver (even when it doesn't crash the system)
will
> have impacts on the whole system. A user application doesn't have that
> "power".
>
> There are some good tools that can be used to help prevent complete
> disaster. Amongst those are:
> - Driver verifier (DV for short). Do not do any driver development without
> it. It's a tool that helps identify when/if something illegal is being
> done, usually at the source of the illegal operation rather than later on
> when it's no longer traceable to your driver. Typical example would be
> writing outside of a buffer. When windows normally (no DV) allocates small
> buffers (say 100 bytes), the OS will pick a small piece of memory from a
> large chunk (say a 4 or 16KB chunk), and give a pointer to that address.
> Immediately after this 100b area will be the next small memory block, most
> likely to be given to some other process shortly. DV will modify this
> behaviour by allocating a full 4KB block, surrounded by a 4KB guard page
on
> either side, and fill the remaining part of the 4KB with a pattern that
can
> be identified later if it's been overwritten. If you hit any other "either
> side" 4KB blocks, it will signal an error, as well as when the block is
> freed, the pattern is checked to see that it's "undisturbed".
> Other things it detects is: Potential deadlock situations, double-free of
> memory, immediate detection of pageable access at levels where the OS
> requires non-pageable memory, etc, etc.
> Start by dv by running "Verifier" (start->run "Verifier"), select
> everything except the "Low resource simulation".
> - WinDBG. A remote debugger that allows you set breakpoints (either in
> code, or for instance when a address is being written to), single step the
> code, view variables etc. It actually works for applications too, but it's
> mostly used by the driver/kernel developers.
>
> Regarding NDIS: Can't really comment on this one. I'm sure one of the
> networking experts will chime in here (I've done Linux drivers for network
> devices, but not Windows ones).
> >
> > My special question is, do my miniport driver needs a flow control
> > mechanism? I mean, how do a say the nic I will transfer YYY (say 100)
> bytes.
> > The card i' m working on has I/O space with 16 bit Tx/Rx buffers. Does
> this
> > mean the 100 bytes should be sent in 16 bit fragments?
> > If this is the case how does the card knows the whole data is 100 bytes
> > long, since it should reassemble the 16 bit data to make a single 100
> byte
> > packet.
>
> The PCMCIA interface is 16-bit wide, so in some form, all the data will be
> transmitted as 16-bit units. This doesn't necessarily mean that your
driver
> has to go through and send 16 bits at a time from the packet. As to your
> device knowing the length of the data, there's no generic answer to this.
>
> Here's how it generally works, but it may be different:
> 1. Your driver (or some upper layer driver) puts the data to be
transmitted
> in a locked down buffer (i.e. a non-pageable buffer).
> 2. You put the address and size of the buffer to the network device.
> There's three basic principles here:
> a. (semi-)Circular buffers: A set of packet buffers are predefined.
> The driver puts the relevant
> information about the packet in the "next available space", and
> sets a flag to indicate to the
> network hardware that it's available to send.
> If there's no available buffer, you'll have to wait for the
device
> to finish transmitting, usually
> indicated by an interrupt, and then use the newly released
buffer.
> Some devices will automatically "poll" for the "new data to
> transmit" and others require that the
> information about "new data to transmit" be written to a register
> (usually just one bit to be set
> somewhere).
>
> b. Single buffer: There's only one buffer, and your driver specifies
> the packet information directly to a
> set of registers in the chip. Once the buffer has been filled in,
> you'll need to wait for the data to
> be transmitted before the next packet can be readied.
>
> c. No buffer: The device requires the hardware&softwate to supply
the
> data as it's being transmitted.
> Basicly just a single register that is written, and a second
> register that needs to be polled for
> "status" to indicate that the next few bits of data can be put in
> the transmit register.
>
> Generally, modern network devices are "DMA" (direct memory access)
devices,
> so they use the (a) or (b) versions above. PIO (programmed I/O) is
probably
> extinct by now for network devices (at the very least for 100Mb/s
devices).
>
> Exactly how this works on your NIC is obviously something that you can
find
> in the software developers guide for that NIC. They are not all the same,
> but most are pretty similar.
>
> Hope this helps.
>
> --
> Mats
>
> >
> > I' m not sure about having the question stated correctly. My good i'm so
> > confused. Thanks in advance.
> >
> > Best Regards
> > Yagmur Konuslu
> >
> >
> >
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at http://www.
> > osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> > ForwardSourceID:NT00002BFA
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: How to kill a service process? Help!
> From: "WalkerNet"
> Date: Mon, 6 Sep 2004 17:57:38 +0800
> X-Message-Number: 4
>
> I ever meet a Trojan-Horse, it registered as a Service. Although it is
> listed in the 'Service Manager', but it always cannot be stopped.
> However the kill.exe can kill the process, and the speed of termination
very
> quick. So:
>
> 1) I don't know how the kill.exe to do this? It can kill the most
processes
> and very quick, this is just I want.
> 2) For example: If I want to kill the process of winlogon.exe in
> Windows2000, how I should do that.
>
> Thanks!
>
> Walker.
>
>
> "WalkerNet" wrote in message news:xxxxx@ntdev...
> > I want to kill the service process using a script. I am looking for a
> > solution other than using a 3rd party program (like taskkill.exe or
> > kill.exe).
> > How to do this?
> >
> > Thanks!
> >
> > Walker.
> >
> >
> >
> >
> >
>
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: Re:How to kill a service process? Help!
> From: "Christiaan Ghijselinck"
> Date: Mon, 6 Sep 2004 12:50:43 +0200
> X-Message-Number: 5
>
>
> The SDK contains the "kill" sources as sample somewhere in
> ...\SdkTools\TList . That one can Kill winlogon.exe on W2k :-)
>
>
> Christiaan
>
>
> ----- Original Message -----
> From: "WalkerNet"
> Newsgroups: ntdev
> To: "Windows System Software Devs Interest List"
> Sent: Monday, September 06, 2004 11:57 AM
> Subject: Re:[ntdev] How to kill a service process? Help!
>
>
> > I ever meet a Trojan-Horse, it registered as a Service. Although it is
> > listed in the 'Service Manager', but it always cannot be stopped.
> > However the kill.exe can kill the process, and the speed of termination
> very
> > quick. So:
> >
> > 1) I don't know how the kill.exe to do this? It can kill the most
> processes
> > and very quick, this is just I want.
> > 2) For example: If I want to kill the process of winlogon.exe in
> > Windows2000, how I should do that.
> >
> > Thanks!
> >
> > Walker.
> >
> >
> > "WalkerNet" wrote in message news:xxxxx@ntdev...
> > > I want to kill the service process using a script. I am looking for a
> > > solution other than using a 3rd party program (like taskkill.exe or
> > > kill.exe).
> > > How to do this?
> > >
> > > Thanks!
> > >
> > > Walker.
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as:
> xxxxx@compaqnet.be
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
>
> ----------------------------------------------------------------------
>
> Subject: TDI_SEND on LEVEL_DISPATCH
> From: "Lukas Rypacek"
> Date: Mon, 6 Sep 2004 13:22:09 +0200
> X-Message-Number: 6
>
> Hi,
>
> I'am trying to redirect connections on TDI by filtering TDI_CONNECT event
> and patching the connect parameters (ip address and port). Immediately
after
> the redirected connect I need to write an extra string to the connection.
> (eg. CONNECT original_ip:original_port). I do it in the completion routine
> of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> IoCallDriver(). It seems to work fine, even under Verifier - where the
> completion routine runs on LEVEL_DISPATCH.
>
> My question is: Should I be concerned about calling IoCallDriver in this
> context on dispatch level? Is this a safe practice or should I consider
> using work items (and thus calling the lower driver on passive level)?
>
> Thanks a lot,
> Lukas.
>
>
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: Re:Re:Re:Re:successive TDI send requests
> From: "Maxim S. Shatskih"
> Date: Mon, 6 Sep 2004 16:05:43 +0400
> X-Message-Number: 7
>
> I responded on this subject a bit ago.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
> ----- Original Message -----
> From: "Hakim"
> Newsgroups: ntdev
> To: "Windows System Software Devs Interest List"
> Sent: Thursday, September 02, 2004 7:41 PM
> Subject: Re:[ntdev] Re:Re:Re:successive TDI send requests
>
>
> > You mean I can only set SO_SNDBUF for my client using
> > IOCTL_TCP_SET_INFORMATION_EX?
> > If so what would be the way to setup, any hints on ID.toi_id?
> >
> > Or, could you give me some knowledgebase reference for its
implementation?
> >
> > Thanks,
> > Hakim
> >
> > "Maxim S. Shatskih" wrote in message
> > news:xxxxx@ntdev...
> > > You cannot. SO_SNDBUF is not implemented in TCP.
> > >
> > > It must be impemented in all TDI clients. For instance, AFD
> implements
> > it.
> > >
> > > Maxim Shatskih, Windows DDK MVP
> > > StorageCraft Corporation
> > > xxxxx@storagecraft.com
> > > http://www.storagecraft.com
> > >
> > > ----- Original Message -----
> > > From: "Hakim"
> > > Newsgroups: ntdev
> > > To: "Windows System Software Devs Interest List"
> > > Sent: Thursday, September 02, 2004 5:44 PM
> > > Subject: Re:[ntdev] Re:Re:successive TDI send requests
> > >
> > >
> > > > Thanks for the suggestion, I'll change the design accordingly. There
> is
> > a
> > > > small challenge I'm facing is to get SO_SNDBUF by
> > > > IOCTL_TCP_QUERY_INFORMATION_EX using TDI interface. I'm having
touble
> to
> > get
> > > > this value. Here is my struct value for
> TCP_REQUEST_QUERY_INFORMATION_EX
> > > >
> > > > ID.toi_entity.tei_entity = CO_TL_ENTITY;
> > > > ID.toi_entity.tei_instance = TL_INSTANCE;
> > > > ID.toi_class = INFO_CLASS_PROTOCOL
> > > > ID.toi_type = INFO_TYPE_CONNECTION
> > > > ID.toi_id = SO_SNDBUF
> > > >
> > > > What will be the value for SO_SNDBUF? It seems to be 0x1001 from
> looking
> > at
> > > > some header but the IOCTL fails meaning parameters in the
> > > > TCP_REQUEST_QUERY_INFORMATION_EX are wrong or it may need digging
> > through
> > > > multiple structs as it is done to get IP address. Could you give me
> some
> > > > hints in this dark area?
> > > >
> > > > Hakim
> > > >
> > > > "Maxim S. Shatskih" wrote in message
> > > > news:xxxxx@ntdev...
> > > > > The goal is to send as much as possible using a single RTT, at
> > least
> > > > for a
> > > > > bulk traffic (for transcation processing, 1 transaction per RTT is
a
> > > > > theoretical limit).
> > > > >
> > > > > To maintain this goal, you should feed the pipeline full
enough
> so
> > > > that it
> > > > > will not be drained at the moment of opening the sender window.
Such
> a
> > > > drain
> > > > > means idle time in the connection, the time when it was OK to send
> > data,
> > > > and
> > > > > this was not done due to sender stupidity. This decreases the
sender
> > > > throughput
> > > > > a lot.
> > > > >
> > > > > This is why we have SO_SNDBUF, which is around 64 or even
256KB.
> > > > >
> > > > > Maxim Shatskih, Windows DDK MVP
> > > > > StorageCraft Corporation
> > > > > xxxxx@storagecraft.com
> > > > > http://www.storagecraft.com
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Hakim"
> > > > > Newsgroups: ntdev
> > > > > To: "Windows System Software Devs Interest List"
>
> > > > > Sent: Tuesday, August 31, 2004 9:43 PM
> > > > > Subject: Re:[ntdev] Re:successive TDI send requests
> > > > >
> > > > >
> > > > > > > Just do not send too many unACKed data to TCP.
> > > > > >
> > > > > > My intention is to send maximum three unACKed send or the size
> limit
> > is
> > > > > > 3*1460 (a Send request of 1460*3 will produce three sends from
TDI
> > > > layer)
> > > > > > whichever hits first. By going through RFC about delay ACK
> algorithm
> > it
> > > > > > seems that if I make three send requests in a row then the first
> > send
> > > > will
> > > > > > get ACK rightway after the third request received by the remote
> end
> > > > > > dismissing the delay ACK timer. Is this the right approach?
> > > > > >
> > > > > > Thanks,
> > > > > > Hakim
> > > > > >
> > > > > > "Maxim S. Shatskih" wrote in message
> > > > > > news:xxxxx@ntdev...
> > > > > > > > So, I can assume that if TDI sends are timely ordered then
> data
> > will
> > > > > > also go
> > > > > > > > out in the same order, completion routine will not play any
> role
> > > > here.
> > > > > > Am I
> > > > > > > > correct?
> > > > > > >
> > > > > > > Correct. Just do not send too many unACKed data to TCP.
> > > > > > >
> > > > > > > Maintain the counter of "bytes inside pending TDI_SENDs", and,
> if
> > it
> > > > hits
> > > > > > some
> > > > > > > limit, send directly without the additional buffer, and wait
for
> > > > TDI_SEND
> > > > > > to
> > > > > > > complete.
> > > > > > >
> > > > > > > This limit is your SO_SNDBUF.
> > > > > > >
> > > > > > > Maxim Shatskih, Windows DDK MVP
> > > > > > > StorageCraft Corporation
> > > > > > > xxxxx@storagecraft.com
> > > > > > > http://www.storagecraft.com
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > ---
> > > > > > Questions? First check the Kernel Driver FAQ at
> > > > > http://www.osronline.com/article.cfm?id=256
> > > > > >
> > > > > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > > > > To unsubscribe send a blank email to
> > xxxxx@lists.osr.com
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > ---
> > > > Questions? First check the Kernel Driver FAQ at
> > > http://www.osronline.com/article.cfm?id=256
> > > >
> > > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > > To unsubscribe send a blank email to
xxxxx@lists.osr.com
> > >
> > >
> >
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: TDI_SEND on LEVEL_DISPATCH
> From: Mats PETERSSON
> Date: Mon, 6 Sep 2004 13:10:36 +0100
> X-Message-Number: 8
>
>
>
>
>
>
> My DDK documentation says:
> Callers of IoCallDriver must be running at IRQL=A0<=3D DISPATCH_LEVEL.
>
> So you should be fine calling at DISPATCH level.
>
> --
> Mats
>
> xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:
>
> > Hi,
> >
> > I'am trying to redirect connections on TDI by filtering TDI_CONNECT e=
> vent
> > and patching the connect parameters (ip address and port). Immediatel=
> y
> after
> > the redirected connect I need to write an extra string to the connect=
> ion.
> > (eg. CONNECT original_ip:original_port). I do it in the completion
> routine
> > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > IoCallDriver(). It seems to work fine, even under Verifier - where th=
> e
> > completion routine runs on LEVEL_DISPATCH.
> >
> > My question is: Should I be concerned about calling IoCallDriver in t=
> his
> > context on dispatch level? Is this a safe practice or should I consid=
> er
> > using work items (and thus calling the lower driver on passive level)=
> ?
> >
> > Thanks a lot,
> > Lukas.
> >
> >
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at http://www.
> > osronline.com/article.cfm?id=3D256
> >
> > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com=
>
>
> > ForwardSourceID:NT00002C42=
>
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: Traffic shaping
> From: "Maxim S. Shatskih"
> Date: Mon, 6 Sep 2004 16:58:30 +0400
> X-Message-Number: 9
>
> Delay at NDIS level. After all, TDI filters are not documented and
thus
> are
> not a way to go (unless you want to have unsolvable interop issue with a
> similar product).
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
> ----- Original Message -----
> From: "Yura"
> To: "Windows System Software Devs Interest List"
> Sent: Thursday, September 02, 2004 7:25 PM
> Subject: [ntdev] Traffic shaping
>
>
> > Hello ,Windows
> >
> > I need to make a driver to limit bandwidth to/from specific IP
> > addresses. And I'm trying to choose between TDI and NDIS driver. I
> > need only to shape TCP connections, but UDP would be good too.
> > Meanwhile I need to pass PING packets at full speed.
> >
> > I think It's easy to do this in TDI layer for TDI_SEND, TDI_RECEIVE
> > and ClientEventReceive, as there are associated IRPs and they can be
> > divided into smaller ones and submitted with the delay. But I'm not
> > sure about ClientEventChainedReceive, as delaying the buffer may
> > cause performance drop, or timeout at the app side.
> >
> > At NDIS level I think it's possible to delay ACK packets, but this
> > can cause packets retransmission and increased bandwidth usage
> > (which is opposite to my task) and even connection loss.
> >
> > Can you guys suggest something? Maybe there are some example
> > solutions for traffic shaping or documentation available?
> >
> > Thanks.
> >
> > --
> > Best regards,
> > Yura mailto:xxxxx@mail.zp.ua
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: TDI_SEND on LEVEL_DISPATCH
> From: "Lukas Rypacek"
> Date: Mon, 6 Sep 2004 15:00:30 +0200
> X-Message-Number: 10
>
> Mats, thanks for your reply.
>
> Yes, I know it is possible to call IoCallDriver() function on dispatch
> level. So far so good, IO Manager itself would crash, but it will
eventualy
> jump to the driver dispatch routine of the \Device\Tcp or any other TDI
> filter on the way down. Are there any quaranties that these routines are
> able to run on dispatch level as well?
> -----
>
> "Mats PETERSSON" wrote in message
> news:xxxxx@ntdev...
>
>
> My DDK documentation says:
> Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.
>
> So you should be fine calling at DISPATCH level.
>
> --
> Mats
>
> xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:
>
> > Hi,
> >
> > I'am trying to redirect connections on TDI by filtering TDI_CONNECT
event
> > and patching the connect parameters (ip address and port). Immediately
> after
> > the redirected connect I need to write an extra string to the
connection.
> > (eg. CONNECT original_ip:original_port). I do it in the completion
> routine
> > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > IoCallDriver(). It seems to work fine, even under Verifier - where the
> > completion routine runs on LEVEL_DISPATCH.
> >
> > My question is: Should I be concerned about calling IoCallDriver in this
> > context on dispatch level? Is this a safe practice or should I consider
> > using work items (and thus calling the lower driver on passive level)?
> >
> > Thanks a lot,
> > Lukas.
> >
> >
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at http://www.
> > osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> > ForwardSourceID:NT00002C42
>
>
>
>
> ----------------------------------------------------------------------
>
> Subject: Is it possible to force a paging out ?
> From: =?iso-8859-1?Q?I=F1aki_Castillo?=
> Date: Mon, 6 Sep 2004 18:15:59 +0200
> X-Message-Number: 11
>
> This is a multi-part message in MIME format.
>
> ------_=_NextPart_001_01C4942C.CBC18EA8
> Content-Type: text/plain;
> charset="iso-8859-1"
> Content-Transfer-Encoding: quoted-printable
>
> For test purposes I would need to force some specific memory pages out =
> to disk.
> Is there any way to do so ?
> =20
> Thanks.
> =20
> =20
>
> ------_=_NextPart_001_01C4942C.CBC18EA8
> Content-Type: text/html;
> charset="iso-8859-1"
> Content-Transfer-Encoding: quoted-printable
>
>
>
> > charset=3Diso-8859-1">
>
>
>
>
>
For =
> test purposes I=20
> would need to force some specific memory pages out to=20
> disk.

>
Is =
> there any way to=20
> do so ?

>
> size=3D2>

>
> size=3D2>Thanks.

>
> size=3D2>

>
> size=3D2>

>
> ------_=_NextPart_001_01C4942C.CBC18EA8--
>
> ----------------------------------------------------------------------
>
> Subject: Re: Re: PPP Session disconnect
> From: "Maxim S. Shatskih"
> Date: Tue, 7 Sep 2004 00:05:58 +0400
> X-Message-Number: 12
>
> The power chip on the mobo usually has some "WAKE on" gates.
> They are, in turn, attached to some "wake" wires on the peripherals
like
> the PCI PME.
>
> If you want the sleeping machine to be woken from Ethernet, then you
> need
> a) the Ethernet card to generate PME and b) the power chip to wake the
> machine
> from PME.
>
> To switch both states on, there must be a wait-wake handler for the
> Ethernet, and also the wait-wake handler in the ACPI.SYS which controls
the
> mobo. This is all the mechanics.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: DVD ROM Class Driver
> From: "Maxim S. Shatskih"
> Date: Tue, 7 Sep 2004 00:16:24 +0400
> X-Message-Number: 13
>
> The source is in the DDK.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
> ----- Original Message -----
> From: "Atul"
> To: "Windows System Software Devs Interest List"
> Sent: Sunday, September 05, 2004 2:18 PM
> Subject: [ntdev] DVD ROM Class Driver
>
>
> > Hi,
> >
> > I am looking for resources to understand the DVD ROM Class Driver
> > implementation. I am sure there are lot of differences between CD ROM
> Class
> > driver and DVD ROM class driver. Are there any links, Microsoft
resources
> > which can be of use here?
> >
> > Regards,
> > atul
> >
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
> ----------------------------------------------------------------------
>
> Subject: Re: Is it possible to force a paging out ?
> From: "Maxim S. Shatskih"
> Date: Tue, 7 Sep 2004 00:21:36 +0400
> X-Message-Number: 14
>
> This is a multi-part message in MIME format.
>
> ------=_NextPart_000_010F_01C49470.A2EE9810
> Content-Type: text/plain;
> charset="iso-8859-1"
> Content-Transfer-Encoding: quoted-printable
>
> Verifier in some modes forces all pageable memory to disk on each =
> spinlock acquizition.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
> ----- Original Message -----=20
> From: I=F1aki Castillo=20
> To: Windows System Software Devs Interest List=20
> Sent: Monday, September 06, 2004 8:15 PM
> Subject: [ntdev] Is it possible to force a paging out ?
>
>
> For test purposes I would need to force some specific memory pages out =
> to disk.
> Is there any way to do so ?
>
> Thanks.
>
>
> ---=20
> Questions? First check the Kernel Driver FAQ at =
> http://www.osronline.com/article.cfm?id=3D256=20
>
> You are currently subscribed to ntdev as: unknown lmsubst tag =
> argument: ''=20
> To unsubscribe send a blank email to xxxxx@lists.osr.com
> ------=_NextPart_000_010F_01C49470.A2EE9810
> Content-Type: text/html;
> charset="iso-8859-1"
> Content-Transfer-Encoding: quoted-printable
>
>
>
> > charset=3Diso-8859-1">
>
>
>
>
>
Verifier in some modes forces all =
> pageable=20
> memory to disk on each spinlock acquizition.

>

>
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
> href=3D"mailto:xxxxx@storagecraft.com">xxxxx@storagecraft.com
> href=3D"http://www.storagecraft.com">http://www.storagecraft.com
<=
> /DIV>
>
> style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
> BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
>
----- Original Message -----

>
> style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
> black">From:=20
> > href=3D"mailto:xxxxx@pandasoftware.es">I=F1aki Castillo

>
>
Sent: Monday, September 06, =
> 2004 8:15=20
> PM

>
Subject: [ntdev] Is it possible =
> to force=20
> a paging out ?

>


>
For =
> test purposes=20
> I would need to force some specific memory pages out to=20
> disk.

>
Is =
> there any way=20
> to do so ?

>
> size=3D2>

>
> size=3D2>Thanks.

>
> size=3D2>

>
> size=3D2>
---
Questions? First check the =
> Kernel=20
> Driver FAQ at > =
> href=3D"http://www.osronline.com/article.cfm?id=3D256">http://www.osronli=
> ne.com/article.cfm?id=3D256
=20
>

You are currently subscribed to ntdev as: unknown lmsubst tag=20
> argument: ''
To unsubscribe send a blank email to > =
> href=3D"mailto:xxxxx@lists.osr.com">xxxxx@lists=
> .osr.com
=20
>

>
> ------=_NextPart_000_010F_01C49470.A2EE9810--
>
>
> ----------------------------------------------------------------------
>
> Subject: How to get vendor and product ID for an USB device during
> AddDevice?
> From: "Michal Vodicka"
> Date: Tue, 7 Sep 2004 06:05:09 +0200
> X-Message-Number: 15
>
> For some legacy reason I'd need to get USB product and vendor IDs before =
> FDO creation in AddDevice entry point. So I send =
> _URB_CONTROL_DESCRIPTOR_REQUEST to PDO to get USB_DEVICE_DESCRIPTOR. All =
> works well when device is just plugged in. However, when I disable and =
> enable device, I get STATUS_DEVICE_NOT_CONNECTED in XP SP0 and =
> STATUS_DEVICE_BUSY in XP SP2. It works when IRP_MN_START_DEVICE is sent =
> but it is too late for my purpose. Is there any reason why it doesn't =
> work? And is there another way how to get these IDs? Parsing HardwareID =
> from registry doesn't seem as a good idea for me.
>
> Best regards,
>
> Michal Vodicka
> UPEK, Inc.
> [xxxxx@upek.com, http://www.upek.com]
>
>
>
>
> ---
>
> END OF DIGEST
>
> ---
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@nodeinfotech.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>

Lukas Rypacek wrote:

Thank you for your suggestion. So I tried to post my buffer in
TDI_CONNECTION_INFORMATION (RequestConnectionInformation->UserData,
RequestConnectionInformation->UserDataLength) in TDI_CONNECT Irp, but that
doesn’t seem to work. I allocate the buffer from NonPagedPool and free it in
completion routine of TDI_CONNECT. Connection is redirected successfully but
no ‘connect string’ is send.

Any ideas?
Thanks, Lukas.

“Connect data” is not “data sent through the normal stream after the
connection is established”. It is, instead, additional user-defined data
exchanged during connection establishment. Most protocols (including
TCP) do not support this concept.

Your original design (issue a SEND in the CONNECT completion handler) is
the proper way to do this for TCP.

KM

I don’t think TCP supports the notion of the “connection data”.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: “Lukas Rypacek”
Newsgroups: ntdev
To: “Windows System Software Devs Interest List”
Sent: Tuesday, September 07, 2004 7:16 PM
Subject: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH

> Thank you for your suggestion. So I tried to post my buffer in
> TDI_CONNECTION_INFORMATION (RequestConnectionInformation->UserData,
> RequestConnectionInformation->UserDataLength) in TDI_CONNECT Irp, but that
> doesn’t seem to work. I allocate the buffer from NonPagedPool and free it in
> completion routine of TDI_CONNECT. Connection is redirected successfully but
> no ‘connect string’ is send.
>
> Any ideas?
> Thanks, Lukas.
>
>
>
> “Vijender Yadav” wrote in message
> news:xxxxx@ntdev…
> > Hi,
> >
> > Its ok to call IoCallDriver at DISPATCH_LEVEL. And the dispatch routines
> of
> > lower driver are guaranteed to run at this level. Only thing is you wont
> be
> > able to wait for the completion of the your send IRP.
> >
> > Rather than using a send IRP after TDI_CONNECT is successful, you can send
> > connection data (your connect string) with the connect IRP only. That is
> in
> > Irpsp->Parameters, formatted as TDI_REQUEST_KERNEL_CONNECT
> > (RequestConnectionInformation).
> >
> > Regards
> > Vij
> >
> > ------------------------------------------------------------------
> >
> > Hi,
> >
> > I’am trying to redirect connections on TDI by filtering TDI_CONNECT event
> > and patching the connect parameters (ip address and port). Immediately
> after
> > the redirected connect I need to write an extra string to the connection.
> > (eg. CONNECT original_ip:original_port). I do it in the completion routine
> > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > IoCallDriver(). It seems to work fine, even under Verifier - where the
> > completion routine runs on LEVEL_DISPATCH.
> >
> > My question is: Should I be concerned about calling IoCallDriver in this
> > context on dispatch level? Is this a safe practice or should I consider
> > using work items (and thus calling the lower driver on passive level)?
> >
> > Thanks a lot,
> > Lukas.
> >
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com]On Behalf Of Windows System
> > Software Devs Interest List digest
> > Sent: Tuesday, September 07, 2004 10:30 AM
> > To: ntdev digest recipients
> > Subject: ntdev digest: September 06, 2004
> >
> >
> > NTDEV Digest for Monday, September 06, 2004.
> >
> > 1. RE: SCSIPORT for AMD64 bug?
> > 2. Using Multiple Palettes on Multiple Desktops at the same time
> > 3. Re: PCMCIA NIC Related
> > 4. Re: How to kill a service process? Help!
> > 5. Re: Re:How to kill a service process? Help!
> > 6. TDI_SEND on LEVEL_DISPATCH
> > 7. Re: Re:Re:Re:Re:successive TDI send requests
> > 8. Re: TDI_SEND on LEVEL_DISPATCH
> > 9. Re: Traffic shaping
> > 10. Re: TDI_SEND on LEVEL_DISPATCH
> > 11. Is it possible to force a paging out ?
> > 12. Re: Re: PPP Session disconnect
> > 13. Re: DVD ROM Class Driver
> > 14. Re: Is it possible to force a paging out ?
> > 15. How to get vendor and product ID for an USB device during AddDevice?
> >
> > ----------------------------------------------------------------------
> >
> > Subject: RE: SCSIPORT for AMD64 bug?
> > From: “Anton A. Kolomyeytsev (CoolDev.Com)”
> > Date: Mon, 6 Sep 2004 11:41:39 +0300
> > X-Message-Number: 1
> >
> > This is a multi-part message in MIME format.
> >
> > ------=_NextPart_000_0582_01C49406.8D3D0E80
> > Content-Type: text/plain;
> > charset=“us-ascii”
> > Content-Transfer-Encoding: 7bit
> >
> >
> >
> >
> >
> > Gentlemen,
> >
> > we’ve hit a situation when SCSIPORT for 64-bit Windows (AMD64) does not
> > work in the way it’s
> > expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o DIRECT,
> > this is
> > critical!) is sent and SenseInfoOffset is not zero (SCSI sense info is
> > expected to be
> > returned) and in the same time DataBufferOffset is set to zero (quite a
> > common combination
> > when SCSI command does not have data buffer associated with, f.e.
> > TEST_UNIT_READY SCSI opcode
> > of 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER.
> > But this MUST work.
> > And was working before. It seems the one who coded newer version of
> > SCSIPORT assumes
> > SenseInfoOffset should be less then DataBufferOffset. This is true for
> > sure but ONLY for SCSI
> > commands with data buffer. If there is no data buffer such a check does
> > not make sense. In the
> > same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong comparation
> > of SenseInfoOffset
> > and DataBufferOffset is done inside function called
> > PortPassThroughInitialize(…) inside SCSIPORT.
> >
> > Can anybody from MS confirm this being a bug or this is just we doing
> > something fundamentally wrong?
> >
> > Thank you!
> >
> > Regards,
> > Anton A. Kolomyeytsev
> >
> > RocketDivision.Com – Toolkits for Network and Storage Kernel Software
> > Developers
> >
> >
> >
> > ------=_NextPart_000_0582_01C49406.8D3D0E80
> > Content-Type: text/html;
> > charset=“us-ascii”
> > Content-Transfer-Encoding: quoted-printable
> >
> >
> >
> > > > charset=3DUS-ASCII">
> > Сообщение> > ITLE>
> >
> >

> >

> >






> >


> >
> > color=3D#0000ff=20
> > size=3D4>Gentlemen,


> >

> > color=3D#0000ff=20
> > size=3D4>


> >
> > color=3D#0000ff=20
> > size=3D4>we’ve hit a situation when SCSIPORT for 64-bit Windows=20
> > (AMD64) does not work in the way it’s


> >
> > color=3D#0000ff=20
> > size=3D4>expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o =
> > DIRECT,=20
> > this is


> >
> > color=3D#0000ff=20
> > size=3D4>critical!) is sent and SenseInfoOffset is not zero (SCSI =
> > sense info is=20
> > expected to be


> >
> > color=3D#0000ff=20
> > size=3D4>returned) and in the same time DataBufferOffset is set to =
> > zero (quite a=20
> > common combination


> >
> > color=3D#0000ff=20
> > size=3D4>when SCSI command does not have data buffer associated with, =
> > f.e.=20
> > TEST_UNIT_READY SCSI opcode


> >
> > color=3D#0000ff size=3D4>of=20
> > 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER. =
> > But this=20
> > MUST work.


> >
> > color=3D#0000ff size=3D4>And=20
> > was working before. It seems the one who coded newer version of =
> > SCSIPORT=20
> > assumes


> >
> > color=3D#0000ff=20
> > size=3D4>SenseInfoOffset should be less then DataBufferOffset. This is =
> > true for=20
> > sure but ONLY for SCSI


> >
> > color=3D#0000ff=20
> > size=3D4>commands with data buffer. If there is no data buffer such a =
> > check does=20
> > not make sense. In the


> >
> > color=3D#0000ff=20
> > size=3D4>same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong =
> > comparation=20
> > of SenseInfoOffset


> >
> > color=3D#0000ff size=3D4>and=20
> > DataBufferOffset is done inside function called =
> > PortPassThroughInitialize(…)=20
> > inside SCSIPORT.


> >

> > color=3D#0000ff=20
> > size=3D4>


> >
> > color=3D#0000ff size=3D4>Can=20
> > anybody from MS confirm this being a bug or this is =
> > just we=20
> > doing something fundamentally wrong?


> >

> > color=3D#0000ff=20
> > size=3D4>


> >
> > color=3D#0000ff=20
> > size=3D4>Thank you!


> >


> >
> > size=3D4>Regards,


> >
Anton =
> > A.=20
> > Kolomyeytsev


> >

> > size=3D4>


> >
> > size=3D4>RocketDivision.Com --=20
> > Toolkits for Network and Storage Kernel Software =
> > Developers


> >


> ---
>

> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>

>
>

> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
>

> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> >
> > ------=_NextPart_000_0582_01C49406.8D3D0E80--
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Using Multiple Palettes on Multiple Desktops at the same time
> > From: "Asif"
> > Date: Mon, 6 Sep 2004 14:19:21 +0500
> > X-Message-Number: 2
> >
> >
> > I have two VGA adapters in my PC. The problem is when I set the color
> depth
> > of both devices\monitors to 8bits per pixel then GDI chooses the palette
> of
> > the primary device as the default palette and uses it to render both the
> > devices. Is it possible to force the GDI to render two devices with their
> > respective palettes.
> >
> > Muhammad Asif Fayyaz
> > Design Engineer
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: PCMCIA NIC Related
> > From: Mats PETERSSON
> > Date: Mon, 6 Sep 2004 10:30:06 +0100
> > X-Message-Number: 3
> >
> >
> >
> >
> >
> >
> >
> >
> > xxxxx@lists.osr.com wrote on 09/06/2004 05:15:18 AM:
> >
> > > Hi,
> > > is you guess i'm new in this driver development topic. As i see its (or
> > > looks like) a difficult job to make a running driver.
> > > Right know i'm on the way developing a nic driver running on the pcimcia
> > > bus. If not wrong doing this using NDIS will simplify (hope so) the job.
> > Any
> > > suggestions, warnings source etc. would be helpful.
> >
> > Developing drivers is definitely one of the more difficult levels to
> > program at, for the simple reason that there are more levels of difficulty
> > than for a normal user-mode application. Amongst these are:
> > - Your code will run at driver level, which means that if your code
> > overwrites some data that it shouldn't be touching, it's not necessarily
> > your application that crashes.
> > - As if this isn't enough, windows offerst (for good reasons) less
> > protection between parts of the kernel, which makes detecting these bugs
> > harder.
> > - Debugging drivers is made harder by the fact that the whole system
> > usually fails to operate correctly after a driver crash, whilst an
> > application crash is normally not a big deal.
> > - The behaviour of your driver (even when it doesn't crash the system)
> will
> > have impacts on the whole system. A user application doesn't have that
> > "power".
> >
> > There are some good tools that can be used to help prevent complete
> > disaster. Amongst those are:
> > - Driver verifier (DV for short). Do not do any driver development without
> > it. It's a tool that helps identify when/if something illegal is being
> > done, usually at the source of the illegal operation rather than later on
> > when it's no longer traceable to your driver. Typical example would be
> > writing outside of a buffer. When windows normally (no DV) allocates small
> > buffers (say 100 bytes), the OS will pick a small piece of memory from a
> > large chunk (say a 4 or 16KB chunk), and give a pointer to that address.
> > Immediately after this 100b area will be the next small memory block, most
> > likely to be given to some other process shortly. DV will modify this
> > behaviour by allocating a full 4KB block, surrounded by a 4KB guard page
> on
> > either side, and fill the remaining part of the 4KB with a pattern that
> can
> > be identified later if it's been overwritten. If you hit any other "either
> > side" 4KB blocks, it will signal an error, as well as when the block is
> > freed, the pattern is checked to see that it's "undisturbed".
> > Other things it detects is: Potential deadlock situations, double-free of
> > memory, immediate detection of pageable access at levels where the OS
> > requires non-pageable memory, etc, etc.
> > Start by dv by running "Verifier" (start->run "Verifier"), select
> > everything except the "Low resource simulation".
> > - WinDBG. A remote debugger that allows you set breakpoints (either in
> > code, or for instance when a address is being written to), single step the
> > code, view variables etc. It actually works for applications too, but it's
> > mostly used by the driver/kernel developers.
> >
> > Regarding NDIS: Can't really comment on this one. I'm sure one of the
> > networking experts will chime in here (I've done Linux drivers for network
> > devices, but not Windows ones).
> > >
> > > My special question is, do my miniport driver needs a flow control
> > > mechanism? I mean, how do a say the nic I will transfer YYY (say 100)
> > bytes.
> > > The card i' m working on has I/O space with 16 bit Tx/Rx buffers. Does
> > this
> > > mean the 100 bytes should be sent in 16 bit fragments?
> > > If this is the case how does the card knows the whole data is 100 bytes
> > > long, since it should reassemble the 16 bit data to make a single 100
> > byte
> > > packet.
> >
> > The PCMCIA interface is 16-bit wide, so in some form, all the data will be
> > transmitted as 16-bit units. This doesn't necessarily mean that your
> driver
> > has to go through and send 16 bits at a time from the packet. As to your
> > device knowing the length of the data, there's no generic answer to this.
> >
> > Here's how it generally works, but it may be different:
> > 1. Your driver (or some upper layer driver) puts the data to be
> transmitted
> > in a locked down buffer (i.e. a non-pageable buffer).
> > 2. You put the address and size of the buffer to the network device.
> > There's three basic principles here:
> > a. (semi-)Circular buffers: A set of packet buffers are predefined.
> > The driver puts the relevant
> > information about the packet in the "next available space", and
> > sets a flag to indicate to the
> > network hardware that it's available to send.
> > If there's no available buffer, you'll have to wait for the
> device
> > to finish transmitting, usually
> > indicated by an interrupt, and then use the newly released
> buffer.
> > Some devices will automatically "poll" for the "new data to
> > transmit" and others require that the
> > information about "new data to transmit" be written to a register
> > (usually just one bit to be set
> > somewhere).
> >
> > b. Single buffer: There's only one buffer, and your driver specifies
> > the packet information directly to a
> > set of registers in the chip. Once the buffer has been filled in,
> > you'll need to wait for the data to
> > be transmitted before the next packet can be readied.
> >
> > c. No buffer: The device requires the hardware&softwate to supply
> the
> > data as it's being transmitted.
> > Basicly just a single register that is written, and a second
> > register that needs to be polled for
> > "status" to indicate that the next few bits of data can be put in
> > the transmit register.
> >
> > Generally, modern network devices are "DMA" (direct memory access)
> devices,
> > so they use the (a) or (b) versions above. PIO (programmed I/O) is
> probably
> > extinct by now for network devices (at the very least for 100Mb/s
> devices).
> >
> > Exactly how this works on your NIC is obviously something that you can
> find
> > in the software developers guide for that NIC. They are not all the same,
> > but most are pretty similar.
> >
> > Hope this helps.
> >
> > --
> > Mats
> >
> > >
> > > I' m not sure about having the question stated correctly. My good i'm so
> > > confused. Thanks in advance.
> > >
> > > Best Regards
> > > Yagmur Konuslu
> > >
> > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at http://www.
> > > osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> > > ForwardSourceID:NT00002BFA
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: How to kill a service process? Help!
> > From: "WalkerNet"
> > Date: Mon, 6 Sep 2004 17:57:38 +0800
> > X-Message-Number: 4
> >
> > I ever meet a Trojan-Horse, it registered as a Service. Although it is
> > listed in the 'Service Manager', but it always cannot be stopped.
> > However the kill.exe can kill the process, and the speed of termination
> very
> > quick. So:
> >
> > 1) I don't know how the kill.exe to do this? It can kill the most
> processes
> > and very quick, this is just I want.
> > 2) For example: If I want to kill the process of winlogon.exe in
> > Windows2000, how I should do that.
> >
> > Thanks!
> >
> > Walker.
> >
> >
> > "WalkerNet" wrote in message news:xxxxx@ntdev...
> > > I want to kill the service process using a script. I am looking for a
> > > solution other than using a 3rd party program (like taskkill.exe or
> > > kill.exe).
> > > How to do this?
> > >
> > > Thanks!
> > >
> > > Walker.
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: Re:How to kill a service process? Help!
> > From: "Christiaan Ghijselinck"
> > Date: Mon, 6 Sep 2004 12:50:43 +0200
> > X-Message-Number: 5
> >
> >
> > The SDK contains the "kill" sources as sample somewhere in
> > ...\SdkTools\TList . That one can Kill winlogon.exe on W2k :-)
> >
> >
> > Christiaan
> >
> >
> > ----- Original Message -----
> > From: "WalkerNet"
> > Newsgroups: ntdev
> > To: "Windows System Software Devs Interest List"
> > Sent: Monday, September 06, 2004 11:57 AM
> > Subject: Re:[ntdev] How to kill a service process? Help!
> >
> >
> > > I ever meet a Trojan-Horse, it registered as a Service. Although it is
> > > listed in the 'Service Manager', but it always cannot be stopped.
> > > However the kill.exe can kill the process, and the speed of termination
> > very
> > > quick. So:
> > >
> > > 1) I don't know how the kill.exe to do this? It can kill the most
> > processes
> > > and very quick, this is just I want.
> > > 2) For example: If I want to kill the process of winlogon.exe in
> > > Windows2000, how I should do that.
> > >
> > > Thanks!
> > >
> > > Walker.
> > >
> > >
> > > "WalkerNet" wrote in message news:xxxxx@ntdev...
> > > > I want to kill the service process using a script. I am looking for a
> > > > solution other than using a 3rd party program (like taskkill.exe or
> > > > kill.exe).
> > > > How to do this?
> > > >
> > > > Thanks!
> > > >
> > > > Walker.
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as:
> > xxxxx@compaqnet.be
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> > >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: TDI_SEND on LEVEL_DISPATCH
> > From: "Lukas Rypacek"
> > Date: Mon, 6 Sep 2004 13:22:09 +0200
> > X-Message-Number: 6
> >
> > Hi,
> >
> > I'am trying to redirect connections on TDI by filtering TDI_CONNECT event
> > and patching the connect parameters (ip address and port). Immediately
> after
> > the redirected connect I need to write an extra string to the connection.
> > (eg. CONNECT original_ip:original_port). I do it in the completion routine
> > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > IoCallDriver(). It seems to work fine, even under Verifier - where the
> > completion routine runs on LEVEL_DISPATCH.
> >
> > My question is: Should I be concerned about calling IoCallDriver in this
> > context on dispatch level? Is this a safe practice or should I consider
> > using work items (and thus calling the lower driver on passive level)?
> >
> > Thanks a lot,
> > Lukas.
> >
> >
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: Re:Re:Re:Re:successive TDI send requests
> > From: "Maxim S. Shatskih"
> > Date: Mon, 6 Sep 2004 16:05:43 +0400
> > X-Message-Number: 7
> >
> > I responded on this subject a bit ago.
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----
> > From: "Hakim"
> > Newsgroups: ntdev
> > To: "Windows System Software Devs Interest List"
> > Sent: Thursday, September 02, 2004 7:41 PM
> > Subject: Re:[ntdev] Re:Re:Re:successive TDI send requests
> >
> >
> > > You mean I can only set SO_SNDBUF for my client using
> > > IOCTL_TCP_SET_INFORMATION_EX?
> > > If so what would be the way to setup, any hints on ID.toi_id?
> > >
> > > Or, could you give me some knowledgebase reference for its
> implementation?
> > >
> > > Thanks,
> > > Hakim
> > >
> > > "Maxim S. Shatskih" wrote in message
> > > news:xxxxx@ntdev...
> > > > You cannot. SO_SNDBUF is not implemented in TCP.
> > > >
> > > > It must be impemented in all TDI clients. For instance, AFD
> > implements
> > > it.
> > > >
> > > > Maxim Shatskih, Windows DDK MVP
> > > > StorageCraft Corporation
> > > > xxxxx@storagecraft.com
> > > > http://www.storagecraft.com
> > > >
> > > > ----- Original Message -----
> > > > From: "Hakim"
> > > > Newsgroups: ntdev
> > > > To: "Windows System Software Devs Interest List"
> > > > Sent: Thursday, September 02, 2004 5:44 PM
> > > > Subject: Re:[ntdev] Re:Re:successive TDI send requests
> > > >
> > > >
> > > > > Thanks for the suggestion, I'll change the design accordingly. There
> > is
> > > a
> > > > > small challenge I'm facing is to get SO_SNDBUF by
> > > > > IOCTL_TCP_QUERY_INFORMATION_EX using TDI interface. I'm having
> touble
> > to
> > > get
> > > > > this value. Here is my struct value for
> > TCP_REQUEST_QUERY_INFORMATION_EX
> > > > >
> > > > > ID.toi_entity.tei_entity = CO_TL_ENTITY;
> > > > > ID.toi_entity.tei_instance = TL_INSTANCE;
> > > > > ID.toi_class = INFO_CLASS_PROTOCOL
> > > > > ID.toi_type = INFO_TYPE_CONNECTION
> > > > > ID.toi_id = SO_SNDBUF
> > > > >
> > > > > What will be the value for SO_SNDBUF? It seems to be 0x1001 from
> > looking
> > > at
> > > > > some header but the IOCTL fails meaning parameters in the
> > > > > TCP_REQUEST_QUERY_INFORMATION_EX are wrong or it may need digging
> > > through
> > > > > multiple structs as it is done to get IP address. Could you give me
> > some
> > > > > hints in this dark area?
> > > > >
> > > > > Hakim
> > > > >
> > > > > "Maxim S. Shatskih" wrote in message
> > > > > news:xxxxx@ntdev...
> > > > > > The goal is to send as much as possible using a single RTT, at
> > > least
> > > > > for a
> > > > > > bulk traffic (for transcation processing, 1 transaction per RTT is
> a
> > > > > > theoretical limit).
> > > > > >
> > > > > > To maintain this goal, you should feed the pipeline full
> enough
> > so
> > > > > that it
> > > > > > will not be drained at the moment of opening the sender window.
> Such
> > a
> > > > > drain
> > > > > > means idle time in the connection, the time when it was OK to send
> > > data,
> > > > > and
> > > > > > this was not done due to sender stupidity. This decreases the
> sender
> > > > > throughput
> > > > > > a lot.
> > > > > >
> > > > > > This is why we have SO_SNDBUF, which is around 64 or even
> 256KB.
> > > > > >
> > > > > > Maxim Shatskih, Windows DDK MVP
> > > > > > StorageCraft Corporation
> > > > > > xxxxx@storagecraft.com
> > > > > > http://www.storagecraft.com
> > > > > >
> > > > > > ----- Original Message -----
> > > > > > From: "Hakim"
> > > > > > Newsgroups: ntdev
> > > > > > To: "Windows System Software Devs Interest List"
> >
> > > > > > Sent: Tuesday, August 31, 2004 9:43 PM
> > > > > > Subject: Re:[ntdev] Re:successive TDI send requests
> > > > > >
> > > > > >
> > > > > > > > Just do not send too many unACKed data to TCP.
> > > > > > >
> > > > > > > My intention is to send maximum three unACKed send or the size
> > limit
> > > is
> > > > > > > 3*1460 (a Send request of 1460*3 will produce three sends from
> TDI
> > > > > layer)
> > > > > > > whichever hits first. By going through RFC about delay ACK
> > algorithm
> > > it
> > > > > > > seems that if I make three send requests in a row then the first
> > > send
> > > > > will
> > > > > > > get ACK rightway after the third request received by the remote
> > end
> > > > > > > dismissing the delay ACK timer. Is this the right approach?
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Hakim
> > > > > > >
> > > > > > > "Maxim S. Shatskih" wrote in message
> > > > > > > news:xxxxx@ntdev...
> > > > > > > > > So, I can assume that if TDI sends are timely ordered then
> > data
> > > will
> > > > > > > also go
> > > > > > > > > out in the same order, completion routine will not play any
> > role
> > > > > here.
> > > > > > > Am I
> > > > > > > > > correct?
> > > > > > > >
> > > > > > > > Correct. Just do not send too many unACKed data to TCP.
> > > > > > > >
> > > > > > > > Maintain the counter of "bytes inside pending TDI_SENDs", and,
> > if
> > > it
> > > > > hits
> > > > > > > some
> > > > > > > > limit, send directly without the additional buffer, and wait
> for
> > > > > TDI_SEND
> > > > > > > to
> > > > > > > > complete.
> > > > > > > >
> > > > > > > > This limit is your SO_SNDBUF.
> > > > > > > >
> > > > > > > > Maxim Shatskih, Windows DDK MVP
> > > > > > > > StorageCraft Corporation
> > > > > > > > xxxxx@storagecraft.com
> > > > > > > > http://www.storagecraft.com
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > ---
> > > > > > > Questions? First check the Kernel Driver FAQ at
> > > > > > http://www.osronline.com/article.cfm?id=256
> > > > > > >
> > > > > > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > > > > > To unsubscribe send a blank email to
> > > xxxxx@lists.osr.com
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > ---
> > > > > Questions? First check the Kernel Driver FAQ at
> > > > http://www.osronline.com/article.cfm?id=256
> > > > >
> > > > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > > > To unsubscribe send a blank email to
> xxxxx@lists.osr.com
> > > >
> > > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: TDI_SEND on LEVEL_DISPATCH
> > From: Mats PETERSSON
> > Date: Mon, 6 Sep 2004 13:10:36 +0100
> > X-Message-Number: 8
> >
> >
> >
> >
> >
> >
> > My DDK documentation says:
> > Callers of IoCallDriver must be running at IRQL=A0<=3D DISPATCH_LEVEL.
> >
> > So you should be fine calling at DISPATCH level.
> >
> > --
> > Mats
> >
> > xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:
> >
> > > Hi,
> > >
> > > I'am trying to redirect connections on TDI by filtering TDI_CONNECT e=
> > vent
> > > and patching the connect parameters (ip address and port). Immediatel=
> > y
> > after
> > > the redirected connect I need to write an extra string to the connect=
> > ion.
> > > (eg. CONNECT original_ip:original_port). I do it in the completion
> > routine
> > > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > > IoCallDriver(). It seems to work fine, even under Verifier - where th=
> > e
> > > completion routine runs on LEVEL_DISPATCH.
> > >
> > > My question is: Should I be concerned about calling IoCallDriver in t=
> > his
> > > context on dispatch level? Is this a safe practice or should I consid=
> > er
> > > using work items (and thus calling the lower driver on passive level)=
> > ?
> > >
> > > Thanks a lot,
> > > Lukas.
> > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at http://www.
> > > osronline.com/article.cfm?id=3D256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com=
> >
> >
> > > ForwardSourceID:NT00002C42=
> >
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: Traffic shaping
> > From: "Maxim S. Shatskih"
> > Date: Mon, 6 Sep 2004 16:58:30 +0400
> > X-Message-Number: 9
> >
> > Delay at NDIS level. After all, TDI filters are not documented and
> thus
> > are
> > not a way to go (unless you want to have unsolvable interop issue with a
> > similar product).
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----
> > From: "Yura"
> > To: "Windows System Software Devs Interest List"
> > Sent: Thursday, September 02, 2004 7:25 PM
> > Subject: [ntdev] Traffic shaping
> >
> >
> > > Hello ,Windows
> > >
> > > I need to make a driver to limit bandwidth to/from specific IP
> > > addresses. And I'm trying to choose between TDI and NDIS driver. I
> > > need only to shape TCP connections, but UDP would be good too.
> > > Meanwhile I need to pass PING packets at full speed.
> > >
> > > I think It's easy to do this in TDI layer for TDI_SEND, TDI_RECEIVE
> > > and ClientEventReceive, as there are associated IRPs and they can be
> > > divided into smaller ones and submitted with the delay. But I'm not
> > > sure about ClientEventChainedReceive, as delaying the buffer may
> > > cause performance drop, or timeout at the app side.
> > >
> > > At NDIS level I think it's possible to delay ACK packets, but this
> > > can cause packets retransmission and increased bandwidth usage
> > > (which is opposite to my task) and even connection loss.
> > >
> > > Can you guys suggest something? Maybe there are some example
> > > solutions for traffic shaping or documentation available?
> > >
> > > Thanks.
> > >
> > > --
> > > Best regards,
> > > Yura mailto:xxxxx@mail.zp.ua
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: TDI_SEND on LEVEL_DISPATCH
> > From: "Lukas Rypacek"
> > Date: Mon, 6 Sep 2004 15:00:30 +0200
> > X-Message-Number: 10
> >
> > Mats, thanks for your reply.
> >
> > Yes, I know it is possible to call IoCallDriver() function on dispatch
> > level. So far so good, IO Manager itself would crash, but it will
> eventualy
> > jump to the driver dispatch routine of the \Device\Tcp or any other TDI
> > filter on the way down. Are there any quaranties that these routines are
> > able to run on dispatch level as well?
> > -----
> >
> > "Mats PETERSSON" wrote in message
> > news:xxxxx@ntdev...
> >
> >
> > My DDK documentation says:
> > Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.
> >
> > So you should be fine calling at DISPATCH level.
> >
> > --
> > Mats
> >
> > xxxxx@lists.osr.com wrote on 09/06/2004 12:22:09 PM:
> >
> > > Hi,
> > >
> > > I'am trying to redirect connections on TDI by filtering TDI_CONNECT
> event
> > > and patching the connect parameters (ip address and port). Immediately
> > after
> > > the redirected connect I need to write an extra string to the
> connection.
> > > (eg. CONNECT original_ip:original_port). I do it in the completion
> > routine
> > > of TDI_CONNECT by building my own Irp (TdiBuildSend) and calling
> > > IoCallDriver(). It seems to work fine, even under Verifier - where the
> > > completion routine runs on LEVEL_DISPATCH.
> > >
> > > My question is: Should I be concerned about calling IoCallDriver in this
> > > context on dispatch level? Is this a safe practice or should I consider
> > > using work items (and thus calling the lower driver on passive level)?
> > >
> > > Thanks a lot,
> > > Lukas.
> > >
> > >
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at http://www.
> > > osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@3dlabs.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> > > ForwardSourceID:NT00002C42
> >
> >
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Is it possible to force a paging out ?
> > From: =?iso-8859-1?Q?I=F1aki_Castillo?=
> > Date: Mon, 6 Sep 2004 18:15:59 +0200
> > X-Message-Number: 11
> >
> > This is a multi-part message in MIME format.
> >
> > ------_=_NextPart_001_01C4942C.CBC18EA8
> > Content-Type: text/plain;
> > charset="iso-8859-1"
> > Content-Transfer-Encoding: quoted-printable
> >
> > For test purposes I would need to force some specific memory pages out =
> > to disk.
> > Is there any way to do so ?
> > =20
> > Thanks.
> > =20
> > =20
> >
> > ------_=_NextPart_001_01C4942C.CBC18EA8
> > Content-Type: text/html;
> > charset="iso-8859-1"
> > Content-Transfer-Encoding: quoted-printable
> >
> >
> >
> > > > charset=3Diso-8859-1">
> >
> >
> >
> >
> >
For =
> > test purposes I=20
> > would need to force some specific memory pages out to=20
> > disk.

> >
Is =
> > there any way to=20
> > do so ?

> >
> > size=3D2>

> >
> > size=3D2>Thanks.

> >
> > size=3D2>

> >
> > size=3D2>

> ---
>

> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>

>
>

> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
>

> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> >
> > ------_=_NextPart_001_01C4942C.CBC18EA8--
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: Re: PPP Session disconnect
> > From: "Maxim S. Shatskih"
> > Date: Tue, 7 Sep 2004 00:05:58 +0400
> > X-Message-Number: 12
> >
> > The power chip on the mobo usually has some "WAKE on" gates.
> > They are, in turn, attached to some "wake" wires on the peripherals
> like
> > the PCI PME.
> >
> > If you want the sleeping machine to be woken from Ethernet, then you
> > need
> > a) the Ethernet card to generate PME and b) the power chip to wake the
> > machine
> > from PME.
> >
> > To switch both states on, there must be a wait-wake handler for the
> > Ethernet, and also the wait-wake handler in the ACPI.SYS which controls
> the
> > mobo. This is all the mechanics.
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: DVD ROM Class Driver
> > From: "Maxim S. Shatskih"
> > Date: Tue, 7 Sep 2004 00:16:24 +0400
> > X-Message-Number: 13
> >
> > The source is in the DDK.
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----
> > From: "Atul"
> > To: "Windows System Software Devs Interest List"
> > Sent: Sunday, September 05, 2004 2:18 PM
> > Subject: [ntdev] DVD ROM Class Driver
> >
> >
> > > Hi,
> > >
> > > I am looking for resources to understand the DVD ROM Class Driver
> > > implementation. I am sure there are lot of differences between CD ROM
> > Class
> > > driver and DVD ROM class driver. Are there any links, Microsoft
> resources
> > > which can be of use here?
> > >
> > > Regards,
> > > atul
> > >
> > >
> > > ---
> > > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> > >
> > > You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> > > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: Re: Is it possible to force a paging out ?
> > From: "Maxim S. Shatskih"
> > Date: Tue, 7 Sep 2004 00:21:36 +0400
> > X-Message-Number: 14
> >
> > This is a multi-part message in MIME format.
> >
> > ------=_NextPart_000_010F_01C49470.A2EE9810
> > Content-Type: text/plain;
> > charset="iso-8859-1"
> > Content-Transfer-Encoding: quoted-printable
> >
> > Verifier in some modes forces all pageable memory to disk on each =
> > spinlock acquizition.
> >
> > Maxim Shatskih, Windows DDK MVP
> > StorageCraft Corporation
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> > ----- Original Message -----=20
> > From: I=F1aki Castillo=20
> > To: Windows System Software Devs Interest List=20
> > Sent: Monday, September 06, 2004 8:15 PM
> > Subject: [ntdev] Is it possible to force a paging out ?
> >
> >
> > For test purposes I would need to force some specific memory pages out =
> > to disk.
> > Is there any way to do so ?
> >
> > Thanks.
> >
> >
> > ---=20
> > Questions? First check the Kernel Driver FAQ at =
> > http://www.osronline.com/article.cfm?id=3D256=20
> >
> > You are currently subscribed to ntdev as: unknown lmsubst tag =
> > argument: ''=20
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
> > ------=_NextPart_000_010F_01C49470.A2EE9810
> > Content-Type: text/html;
> > charset="iso-8859-1"
> > Content-Transfer-Encoding: quoted-printable
> >
> >
> >
> > > > charset=3Diso-8859-1">
> >
> >
> >
> >
> >
Verifier in some modes forces all =
> > pageable=20
> > memory to disk on each spinlock acquizition.

> >

> >
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
> > href=3D"mailto:xxxxx@storagecraft.com">xxxxx@storagecraft.com
> > href=3D"http://www.storagecraft.com">http://www.storagecraft.com
<=
> > /DIV>
> >
> > style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
> > BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
> >
----- Original Message -----

> >
> > style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
> > black">From:=20
> > > > href=3D"mailto:xxxxx@pandasoftware.es">I=F1aki Castillo

> >
> >
Sent: Monday, September 06, =
> > 2004 8:15=20
> > PM

> >
Subject: [ntdev] Is it possible =
> > to force=20
> > a paging out ?

> >


> >
For =
> > test purposes=20
> > I would need to force some specific memory pages out to=20
> > disk.

> >
Is =
> > there any way=20
> > to do so ?

> >
> > size=3D2>

> >
> > size=3D2>Thanks.

> >
> > size=3D2>

> >
> > size=3D2>
---
Questions? First check the =
> > Kernel=20
> > Driver FAQ at > > =
> > href=3D"http://www.osronline.com/article.cfm?id=3D256">http://www.osronli=
> > ne.com/article.cfm?id=3D256
=20
> >

You are currently subscribed to ntdev as: unknown lmsubst tag=20
> > argument: ''
To unsubscribe send a blank email to > > =
> > href=3D"mailto:xxxxx@lists.osr.com">xxxxx@lists=
> > .osr.com
=20
> >

> ---
>

> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>

>
>

> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
>

> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> >
> > ------=_NextPart_000_010F_01C49470.A2EE9810--
> >
> >
> > ----------------------------------------------------------------------
> >
> > Subject: How to get vendor and product ID for an USB device during
> > AddDevice?
> > From: "Michal Vodicka"
> > Date: Tue, 7 Sep 2004 06:05:09 +0200
> > X-Message-Number: 15
> >
> > For some legacy reason I'd need to get USB product and vendor IDs before =
> > FDO creation in AddDevice entry point. So I send =
> > _URB_CONTROL_DESCRIPTOR_REQUEST to PDO to get USB_DEVICE_DESCRIPTOR. All =
> > works well when device is just plugged in. However, when I disable and =
> > enable device, I get STATUS_DEVICE_NOT_CONNECTED in XP SP0 and =
> > STATUS_DEVICE_BUSY in XP SP2. It works when IRP_MN_START_DEVICE is sent =
> > but it is too late for my purpose. Is there any reason why it doesn't =
> > work? And is there another way how to get these IDs? Parsing HardwareID =
> > from registry doesn't seem as a good idea for me.
> >
> > Best regards,
> >
> > Michal Vodicka
> > UPEK, Inc.
> > [xxxxx@upek.com, http://www.upek.com]
> >
> >
> >
> >
> > ---
> >
> > END OF DIGEST
> >
> > ---
> > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@nodeinfotech.com
> > To unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
>
>
>

Keith, Maxim, thanks.
I was confused by similar feature existing in Winsock (WSAConnect()). Now
it’s clear why I didn’t succeed.

Anyway, calling SEND in completion routine means that my dispatch routines
might also be called at dispatch level - that may complicate a few things in
the code. I looked up the chapter in Windows NT Device Driver Development
book (thanks Peter, Tony) but on the same page there is “Driver writer new
to Windows NT often think that Dispatch entry points are called at IRQL
DISPATCH_LEVEL. Not so!” and a few lines later "Windows NT does allow
higher-layer drivers to call the Dispatch routines of lower-layer drivers
(using IoCallDriver()) at IRQL DISPATCH_LEVEL).

It seems to me, that I must be prepared at all times that my dispatch
routines are called at DISPATCH_LEVEL :frowning:

Thanks for help,
Lukas.

“Keith Moore” wrote in message news:xxxxx@ntdev…
>
> “Connect data” is not “data sent through the normal stream after the
> connection is established”. It is, instead, additional user-defined data
> exchanged during connection establishment. Most protocols (including
> TCP) do not support this concept.
>
> Your original design (issue a SEND in the CONNECT completion handler) is
> the proper way to do this for TCP.
>
>
> KM
>

On Tue, 2004-09-07 at 01:27, Vijender Yadav wrote:

Hi,

Its ok to call IoCallDriver at DISPATCH_LEVEL. And the dispatch routines of
lower driver are guaranteed to run at this level.

This is not true - dispatch routines of lower drivers are not always
called at DISPATCH_LEVEL.

-sd


Steve Dispensa
MVP - Windows DDK
www.kernelmustard.com

> It seems to me, that I must be prepared at all times that my dispatch

routines are called at DISPATCH_LEVEL :frowning:

A good assumption anyway.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

It is strong assumption :-). If one has to support this, that means any
memory from heap has to be from non-paged pool, and any such dispatch
routine has to be ( as by default ) non-pageable. For large drivers, this is
not good, a src of starvation for others :- ).

-pro

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Maxim S. Shatskih
Sent: Wednesday, September 08, 2004 1:44 PM
To: Windows System Software Devs Interest List
Subject: Re: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH

It seems to me, that I must be prepared at all times that my dispatch
routines are called at DISPATCH_LEVEL :frowning:

A good assumption anyway.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@garlic.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

It’s much better than IRQL_NOT_LESS_OR_EQUAL though-:wink:

Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

-----Original Message-----
From: Prokash Sinha [mailto:xxxxx@garlic.com]
Sent: Wednesday, September 08, 2004 10:27 PM
To: Windows System Software Devs Interest List
Subject: RE: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH

It is strong assumption :-). If one has to support this, that
means any
memory from heap has to be from non-paged pool, and any such dispatch
routine has to be ( as by default ) non-pageable. For large
drivers, this is
not good, a src of starvation for others :- ).

-pro

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Maxim
S. Shatskih
Sent: Wednesday, September 08, 2004 1:44 PM
To: Windows System Software Devs Interest List
Subject: Re: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH

> It seems to me, that I must be prepared at all times that
my dispatch
> routines are called at DISPATCH_LEVEL :frowning:

A good assumption anyway.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@garlic.com
To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

RE: Re:[ntdev] TDI_SEND on LEVEL_DISPATCHActually the idea could not be
thrown-away that easily :-). I first try to get this recommended simpleway
to cruft the dispatches, then under DBG conditions I try to
bracket them using IRQL level, and let the dispatches fly fast/lean under
any irql ( not isr or completion related stuff ). But my suggestion is one
should strive for it, just like when and where what type to synch primitive
to be used ( as another thread is currently spelling out the detail about
coarse-grain, fine grain ).

But yes, the first approach is what you all are suggesting :-). Finally, if
we dont tackle IRQL_NOT_* then who will !. that’s driver writers side dishes
I think :-).

-pro
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Calvin Guan
Sent: Thursday, September 09, 2004 7:52 AM
To: Windows System Software Devs Interest List
Subject: RE: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH

It’s much better than IRQL_NOT_LESS_OR_EQUAL though-:wink:

Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

-----Original Message-----
> From: Prokash Sinha [mailto:xxxxx@garlic.com]
> Sent: Wednesday, September 08, 2004 10:27 PM
> To: Windows System Software Devs Interest List
> Subject: RE: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH
>
>
> It is strong assumption :-). If one has to support this, that
> means any
> memory from heap has to be from non-paged pool, and any such dispatch
> routine has to be ( as by default ) non-pageable. For large
> drivers, this is
> not good, a src of starvation for others :- ).
>
> -pro
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com]On Behalf Of Maxim
> S. Shatskih
> Sent: Wednesday, September 08, 2004 1:44 PM
> To: Windows System Software Devs Interest List
> Subject: Re: Re:[ntdev] TDI_SEND on LEVEL_DISPATCH
>
>
> > It seems to me, that I must be prepared at all times that
> my dispatch
> > routines are called at DISPATCH_LEVEL :frowning:
>
> A good assumption anyway.
>
> Maxim Shatskih, Windows DDK MVP
> StorageCraft Corporation
> xxxxx@storagecraft.com
> http://www.storagecraft.com
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@garlic.com
> To unsubscribe send a blank email to %%email.unsub%%
>
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to %%email.unsub%%


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com