|
From: krish on 12 May 2008 15:59 In the function DiskPerfDeviceControl (), for the control codes that diskperf does not process it does the following: ... else { // // Set current stack back one. // Irp->CurrentLocation++, Irp->Tail.Overlay.CurrentStackLocation++; } I do not what understand what this code is doing? I believe the intent here is to just pass on the control codes to the next driver. So shouldn't it be doing IoCopyCurrentIrpStackLocationToNext (), so that next lower driver gets the same information as diskperf. Also WDK says that undocumented members of _IRP are for IO manager only, then why they are being used here. Please help. Thanks.
From: Maxim S. Shatskih on 12 May 2008 19:39 > Irp->CurrentLocation++, > Irp->Tail.Overlay.CurrentStackLocation++; Consider this to be IoSetPreviousIrpStackLocation -- Maxim Shatskih, Windows DDK MVP StorageCraft Corporation maxim(a)storagecraft.com http://www.storagecraft.com
From: krish on 12 May 2008 22:30 On May 12, 4:39 pm, "Maxim S. Shatskih" <ma...(a)storagecraft.com> wrote: > > Irp->CurrentLocation++, > > Irp->Tail.Overlay.CurrentStackLocation++; > > Consider this to be IoSetPreviousIrpStackLocation > > -- > Maxim Shatskih, Windows DDK MVP > StorageCraft Corporation > ma...(a)storagecraft.comhttp://www.storagecraft.com Hi Maxim, Thanks for the reply. What I'm doing in my diskperf is that I'm trying to modify the contents of the Irp->AssociatedIrp.SystemBuffer after the IoCallDriver () from the lower driver (that is disk.sys, I believe). so it's like: if (IoControlCode == IOCTL_DISK_PERFORMANCE) { // current code } else { Irp->CurrentLocation++, Irp->Tail.Overlay.CurrentStackLocation++; status = IoCallDriver (); // my code to modify Irp->AssociatedIrp.SystemBuffer contents goes here... return (status); } But unfortunately I'm not seeing the behavior I should see. It looks like the SystemBuffer does not gets changed and the upper driver sees the same contents as sent by the lower driver. Any clue what may be going wrong. Thanks.
From: Doron Holan [MSFT] on 13 May 2008 00:09 well, then shouldn't it be IoSkipCurrentIrpStackLocation? d -- Please do not send e-mail directly to this alias. this alias is for newsgroup purposes only. This posting is provided "AS IS" with no warranties, and confers no rights. "Maxim S. Shatskih" <maxim(a)storagecraft.com> wrote in message news:O2R1rlItIHA.4952(a)TK2MSFTNGP05.phx.gbl... >> Irp->CurrentLocation++, >> Irp->Tail.Overlay.CurrentStackLocation++; > > Consider this to be IoSetPreviousIrpStackLocation > > -- > Maxim Shatskih, Windows DDK MVP > StorageCraft Corporation > maxim(a)storagecraft.com > http://www.storagecraft.com >
From: David Craig on 13 May 2008 00:49 It is your's, Microsoft's, code. In diskperf.c at line 1432 of WinDDK 6001.18000. "Doron Holan [MSFT]" <doronh(a)online.microsoft.com> wrote in message news:%232yFj8KtIHA.5472(a)TK2MSFTNGP06.phx.gbl... > well, then shouldn't it be IoSkipCurrentIrpStackLocation? > > d > > -- > Please do not send e-mail directly to this alias. this alias is for > newsgroup purposes only. > This posting is provided "AS IS" with no warranties, and confers no > rights. > > > "Maxim S. Shatskih" <maxim(a)storagecraft.com> wrote in message > news:O2R1rlItIHA.4952(a)TK2MSFTNGP05.phx.gbl... >>> Irp->CurrentLocation++, >>> Irp->Tail.Overlay.CurrentStackLocation++; >> >> Consider this to be IoSetPreviousIrpStackLocation >> >> -- >> Maxim Shatskih, Windows DDK MVP >> StorageCraft Corporation >> maxim(a)storagecraft.com >> http://www.storagecraft.com >> >
|
Next
|
Last
Pages: 1 2 Prev: What are the driver signing options in Vista 32bit Next: Scatter/gather DMA to a kernel buffer |