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